[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16239] branches/apricot: svn merge -r 16227:HEAD https://svn.blender.org/svnroot/bf-blender/trunk/ blender
Campbell Barton
ideasman42 at gmail.com
Sun Aug 24 04:46:55 CEST 2008
Revision: 16239
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16239
Author: campbellbarton
Date: 2008-08-24 04:46:03 +0200 (Sun, 24 Aug 2008)
Log Message:
-----------
svn merge -r 16227:HEAD https://svn.blender.org/svnroot/bf-blender/trunk/blender
Thanks for bens state level commit will be able to clean up duplicate sensors a bit :)
http://members.optusnet.com.au/cjbarton/frank_logic.png
Modified Paths:
--------------
branches/apricot/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj
branches/apricot/release/text/copyright.txt
branches/apricot/source/blender/blenkernel/BKE_deform.h
branches/apricot/source/blender/blenkernel/intern/shrinkwrap.c
branches/apricot/source/blender/blenlib/BLI_winstuff.h
branches/apricot/source/blender/blenlib/intern/BLI_kdopbvh.c
branches/apricot/source/blender/python/api2_2x/Particle.c
branches/apricot/source/gameengine/GameLogic/SCA_IController.cpp
branches/apricot/source/gameengine/GameLogic/SCA_ISensor.cpp
branches/apricot/source/gameengine/GameLogic/SCA_ISensor.h
branches/apricot/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
branches/apricot/source/gameengine/GameLogic/SCA_LogicManager.cpp
branches/apricot/source/gameengine/GameLogic/SCA_LogicManager.h
branches/apricot/source/gameengine/GameLogic/SCA_PythonController.cpp
branches/apricot/source/gameengine/GameLogic/SCA_PythonController.h
branches/apricot/source/gameengine/Ketsji/KX_PythonInit.cpp
branches/apricot/source/gameengine/PyDoc/SCA_ISensor.py
branches/apricot/source/nan_definitions.mk
Modified: branches/apricot/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj
===================================================================
--- branches/apricot/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj 2008-08-24 02:46:03 UTC (rev 16239)
@@ -495,6 +495,9 @@
RelativePath="..\..\..\source\blender\blenkernel\intern\script.c">
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\intern\shrinkwrap.c">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\intern\softbody.c">
</File>
<File
@@ -709,6 +712,9 @@
RelativePath="..\..\..\source\blender\blenkernel\BKE_script.h">
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\BKE_shrinkwrap.h">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\BKE_softbody.h">
</File>
<File
Modified: branches/apricot/release/text/copyright.txt
===================================================================
--- branches/apricot/release/text/copyright.txt 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/release/text/copyright.txt 2008-08-24 02:46:03 UTC (rev 16239)
@@ -56,7 +56,7 @@
information, claims of third parties, damages as a result of injury to
any person, or any other loss) arising out of or in connection with the
license granted under this License Agreement or the use of or inability
- to use the Software, even if VF has been advised of the possibility of
+ to use the Software, even if BF has been advised of the possibility of
such damages.
5. User warning and indemnification
Modified: branches/apricot/source/blender/blenkernel/BKE_deform.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_deform.h 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/blender/blenkernel/BKE_deform.h 2008-08-24 02:46:03 UTC (rev 16239)
@@ -38,6 +38,7 @@
struct Object;
struct ListBase;
struct bDeformGroup;
+struct MDeformVert;
void copy_defgroups (struct ListBase *lb1, struct ListBase *lb2);
struct bDeformGroup *copy_defgroup (struct bDeformGroup *ingroup);
Modified: branches/apricot/source/blender/blenkernel/intern/shrinkwrap.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/shrinkwrap.c 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/blender/blenkernel/intern/shrinkwrap.c 2008-08-24 02:46:03 UTC (rev 16239)
@@ -113,23 +113,23 @@
void space_transform_apply(const SpaceTransform *data, float *co)
{
- VecMat4MulVecfl(co, data->local2target, co);
+ VecMat4MulVecfl(co, ((SpaceTransform*)data)->local2target, co);
}
void space_transform_invert(const SpaceTransform *data, float *co)
{
- VecMat4MulVecfl(co, data->target2local, co);
+ VecMat4MulVecfl(co, ((SpaceTransform*)data)->target2local, co);
}
void space_transform_apply_normal(const SpaceTransform *data, float *no)
{
- Mat4Mul3Vecfl(data->local2target, no);
+ Mat4Mul3Vecfl( ((SpaceTransform*)data)->local2target, no);
Normalize(no); // TODO: could we just determine de scale value from the matrix?
}
void space_transform_invert_normal(const SpaceTransform *data, float *no)
{
- Mat4Mul3Vecfl(data->target2local, no);
+ Mat4Mul3Vecfl(((SpaceTransform*)data)->target2local, no);
Normalize(no); // TODO: could we just determine de scale value from the matrix?
}
@@ -291,7 +291,7 @@
space_transform_apply_normal( transf, tmp_no );
no = tmp_no;
- hit_tmp.dist *= Mat4ToScalef( transf->local2target );
+ hit_tmp.dist *= Mat4ToScalef( ((SpaceTransform*)transf)->local2target );
}
else
{
@@ -318,7 +318,7 @@
space_transform_invert( transf, hit_tmp.co );
space_transform_invert_normal( transf, hit_tmp.no );
- hit_tmp.dist = VecLenf( vert, hit_tmp.co );
+ hit_tmp.dist = VecLenf( (float*)vert, hit_tmp.co );
}
memcpy(hit, &hit_tmp, sizeof(hit_tmp) );
Modified: branches/apricot/source/blender/blenlib/BLI_winstuff.h
===================================================================
--- branches/apricot/source/blender/blenlib/BLI_winstuff.h 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/blender/blenlib/BLI_winstuff.h 2008-08-24 02:46:03 UTC (rev 16239)
@@ -61,6 +61,10 @@
// These definitions are also in arithb for simplicity
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
@@ -116,5 +120,9 @@
void get_default_root(char *root);
int check_file_chars(char *filename);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* __WINSTUFF_H__ */
Modified: branches/apricot/source/blender/blenlib/intern/BLI_kdopbvh.c
===================================================================
--- branches/apricot/source/blender/blenlib/intern/BLI_kdopbvh.c 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/blender/blenlib/intern/BLI_kdopbvh.c 2008-08-24 02:46:03 UTC (rev 16239)
@@ -82,7 +82,7 @@
typedef struct BVHNearestData
{
BVHTree *tree;
- float *co;
+ const float *co;
BVHTree_NearestPointCallback callback;
void *userdata;
float proj[13]; //coordinates projection over axis
@@ -1248,7 +1248,6 @@
static void dfs_find_nearest_begin(BVHNearestData *data, BVHNode *node)
{
- int i;
float nearest[3], sdist;
sdist = calc_nearest_point(data, node, nearest);
if(sdist >= data->nearest.dist) return;
Modified: branches/apricot/source/blender/python/api2_2x/Particle.c
===================================================================
--- branches/apricot/source/blender/python/api2_2x/Particle.c 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/blender/python/api2_2x/Particle.c 2008-08-24 02:46:03 UTC (rev 16239)
@@ -804,7 +804,7 @@
{
ParticleSystem *psys = 0L;
Object *ob = 0L;
- PyObject *partlist,*seglist;
+ PyObject *partlist,*seglist=0L;
ParticleCacheKey **cache,*path;
PyObject* loc = 0L;
ParticleKey state;
@@ -1107,7 +1107,7 @@
ParticleSystem *psys = 0L;
ParticleData *data;
Object *ob = 0L;
- PyObject *partlist,*tuple;
+ PyObject *partlist,*tuple=0L;
DerivedMesh* dm;
float vm[4][4],wm[4][4];
float size;
@@ -1217,7 +1217,7 @@
ParticleSystem *psys = 0L;
ParticleData *data;
Object *ob = 0L;
- PyObject *partlist,*tuple;
+ PyObject *partlist,*tuple=0L;
DerivedMesh* dm;
float vm[4][4],wm[4][4];
float life;
Modified: branches/apricot/source/gameengine/GameLogic/SCA_IController.cpp
===================================================================
--- branches/apricot/source/gameengine/GameLogic/SCA_IController.cpp 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/gameengine/GameLogic/SCA_IController.cpp 2008-08-24 02:46:03 UTC (rev 16239)
@@ -188,6 +188,8 @@
for (sensit = m_linkedsensors.begin();!(sensit==m_linkedsensors.end());++sensit)
{
(*sensit)->IncLink();
+ // remember that this controller just activated that sensor
+ (*sensit)->AddNewController(this);
}
SetActive(true);
}
Modified: branches/apricot/source/gameengine/GameLogic/SCA_ISensor.cpp
===================================================================
--- branches/apricot/source/gameengine/GameLogic/SCA_ISensor.cpp 2008-08-23 18:08:04 UTC (rev 16238)
+++ branches/apricot/source/gameengine/GameLogic/SCA_ISensor.cpp 2008-08-24 02:46:03 UTC (rev 16239)
@@ -32,6 +32,8 @@
#include "SCA_ISensor.h"
#include "SCA_EventManager.h"
#include "SCA_LogicManager.h"
+// needed for IsTriggered()
+#include "SCA_PythonController.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -132,10 +134,8 @@
}
if (!m_links)
{
- // sensor is detached from all controllers, initialize it so that it
- // is fresh as at startup when it is reattached again.
+ // sensor is detached from all controllers, remove it from manager
UnregisterToManager();
- Init();
}
}
@@ -168,7 +168,9 @@
};
PyMethodDef SCA_ISensor::Methods[] = {
{"isPositive", (PyCFunction) SCA_ISensor::sPyIsPositive,
- METH_VARARGS, IsPositive_doc},
+ METH_NOARGS, IsPositive_doc},
+ {"isTriggered", (PyCFunction) SCA_ISensor::sPyIsTriggered,
+ METH_VARARGS, IsTriggered_doc},
{"getUsePosPulseMode", (PyCFunction) SCA_ISensor::sPyGetUsePosPulseMode,
METH_NOARGS, GetUsePosPulseMode_doc},
{"setUsePosPulseMode", (PyCFunction) SCA_ISensor::sPySetUsePosPulseMode,
@@ -204,6 +206,9 @@
void SCA_ISensor::RegisterToManager()
{
+ // sensor is just activated, initialize it
+ Init();
+ m_newControllers.erase(m_newControllers.begin(), m_newControllers.end());
m_eventmgr->RegisterSensor(this);
}
@@ -249,19 +254,47 @@
}
}
}
+ if (!m_newControllers.empty())
+ {
+ if (!IsActive() && m_level)
+ {
+ // This level sensor is connected to at least one controller that was just made
+ // active but it did not generate an event yet, do it now to those controllers only
+ for (std::vector<SCA_IController*>::iterator ci=m_newControllers.begin();
+ ci != m_newControllers.end(); ci++)
+ {
+ logicmgr->AddTriggeredController(*ci, this);
+ }
+ }
+ // clear the list. Instead of using clear, which also release the memory,
+ // use erase, which keeps the memory available for next time.
+ m_newControllers.erase(m_newControllers.begin(), m_newControllers.end());
+ }
}
}
/* Python functions: */
char SCA_ISensor::IsPositive_doc[] =
"isPositive()\n"
-"\tReturns whether the sensor is registered a positive event.\n";
-PyObject* SCA_ISensor::PyIsPositive(PyObject* self, PyObject* args, PyObject* kwds)
+"\tReturns whether the sensor is in an active state.\n";
+PyObject* SCA_ISensor::PyIsPositive(PyObject* self)
{
int retval = IsPositiveTrigger();
return PyInt_FromLong(retval);
}
+char SCA_ISensor::IsTriggered_doc[] =
+"isTriggered()\n"
+"\tReturns whether the sensor has triggered the current controller.\n";
+PyObject* SCA_ISensor::PyIsTriggered(PyObject* self)
+{
+ // check with the current controller
+ int retval = 0;
+ if (SCA_PythonController::m_sCurrentController)
+ retval = SCA_PythonController::m_sCurrentController->IsTriggered(this);
+ return PyInt_FromLong(retval);
+}
+
/**
* getUsePulseMode: getter for the pulse mode (KX_TRUE = on)
*/
Modified: branches/apricot/source/gameengine/GameLogic/SCA_ISensor.h
===================================================================
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list