[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19870] trunk/blender/source/gameengine: BGE C++ API
Campbell Barton
ideasman42 at gmail.com
Wed Apr 22 14:16:42 CEST 2009
Revision: 19870
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19870
Author: campbellbarton
Date: 2009-04-22 14:16:41 +0200 (Wed, 22 Apr 2009)
Log Message:
-----------
BGE C++ API
Some functions used
ProcessReplica(replica);
others
replica->ProcessReplica()
Use the second method everywhere so the PyObjectPlus's ProcessReplica() can be called from its subclasses.
Note that PyObjectPlus's ProcessReplica isnt used yet.
Modified Paths:
--------------
trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp
trunk/blender/source/gameengine/Converter/BL_ArmatureObject.h
trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp
trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.h
trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp
trunk/blender/source/gameengine/Expressions/PyObjectPlus.h
trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp
trunk/blender/source/gameengine/Ketsji/KX_Camera.h
trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
trunk/blender/source/gameengine/Ketsji/KX_GameObject.h
trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
Modified: trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Converter/BL_ArmatureObject.cpp 2009-04-22 12:16:41 UTC (rev 19870)
@@ -74,16 +74,17 @@
// this will copy properties and so on...
CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
-void BL_ArmatureObject::ProcessReplica(BL_ArmatureObject *replica)
+void BL_ArmatureObject::ProcessReplica()
{
- KX_GameObject::ProcessReplica(replica);
+ bPose *pose= m_pose;
+ KX_GameObject::ProcessReplica();
- replica->m_pose = NULL;
- game_copy_pose(&replica->m_pose, m_pose);
+ m_pose = NULL;
+ game_copy_pose(&m_pose, pose);
}
BL_ArmatureObject::~BL_ArmatureObject()
Modified: trunk/blender/source/gameengine/Converter/BL_ArmatureObject.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ArmatureObject.h 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Converter/BL_ArmatureObject.h 2009-04-22 12:16:41 UTC (rev 19870)
@@ -45,7 +45,7 @@
public:
double GetLastFrame ();
short GetActivePriority();
- virtual void ProcessReplica(BL_ArmatureObject *replica);
+ virtual void ProcessReplica();
class BL_ActionActuator * GetActiveAction();
BL_ArmatureObject(
Modified: trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp 2009-04-22 12:16:41 UTC (rev 19870)
@@ -41,16 +41,12 @@
delete m_pDeformer; // __NLA : Temporary until we decide where to put this
}
-void BL_DeformableGameObject::ProcessReplica(KX_GameObject* replica)
+void BL_DeformableGameObject::ProcessReplica()
{
- BL_MeshDeformer *deformer;
- KX_GameObject::ProcessReplica(replica);
+ KX_GameObject::ProcessReplica();
- if (m_pDeformer) {
- deformer = (BL_MeshDeformer*)m_pDeformer->GetReplica(replica);
- ((BL_DeformableGameObject*)replica)->m_pDeformer = deformer;
- }
-
+ if (m_pDeformer)
+ m_pDeformer= (BL_MeshDeformer*)m_pDeformer->GetReplica(this);
}
CValue* BL_DeformableGameObject::GetReplica()
@@ -61,7 +57,7 @@
// this will copy properties and so on...
CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
Modified: trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.h 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.h 2009-04-22 12:16:41 UTC (rev 19870)
@@ -62,7 +62,7 @@
m_pDeformer->Relink (map);
KX_GameObject::Relink(map);
};
- void ProcessReplica(KX_GameObject* replica);
+ void ProcessReplica();
BL_DeformableGameObject(Object* blendobj, void* sgReplicationInfo, SG_Callbacks callbacks) :
KX_GameObject(sgReplicationInfo,callbacks),
Modified: trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Expressions/PyObjectPlus.cpp 2009-04-22 12:16:41 UTC (rev 19870)
@@ -810,6 +810,14 @@
return NULL;
}
+
+void PyObjectPlus::ProcessReplica()
+{
+ /* Clear the proxy, will be created again if needed with GetProxy()
+ * otherwise the PyObject will point to the wrong reference */
+ m_proxy= NULL;
+}
+
/* Utility function called by the macro py_getattro_up()
* for getting ob.__dict__() values from our PyObject
* this is used by python for doing dir() on an object, so its good
Modified: trunk/blender/source/gameengine/Expressions/PyObjectPlus.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/PyObjectPlus.h 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Expressions/PyObjectPlus.h 2009-04-22 12:16:41 UTC (rev 19870)
@@ -450,6 +450,12 @@
static PyObject *GetProxy_Ext(PyObjectPlus *self, PyTypeObject *tp);
static PyObject *NewProxy_Ext(PyObjectPlus *self, PyTypeObject *tp, bool py_owns);
+
+ /**
+ * Makes sure any internal data owned by this class is deep copied.
+ */
+ virtual void ProcessReplica();
+
};
PyObject *py_getattr_dict(PyObject *pydict, PyObject *tp_dict);
Modified: trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Ketsji/KX_Camera.cpp 2009-04-22 12:16:41 UTC (rev 19870)
@@ -72,15 +72,10 @@
// this will copy properties and so on...
CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
-
-void KX_Camera::ProcessReplica(KX_Camera* replica)
-{
- KX_GameObject::ProcessReplica(replica);
-}
MT_Transform KX_Camera::GetWorldToCamera() const
{
Modified: trunk/blender/source/gameengine/Ketsji/KX_Camera.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Camera.h 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Ketsji/KX_Camera.h 2009-04-22 12:16:41 UTC (rev 19870)
@@ -146,15 +146,6 @@
virtual CValue*
GetReplica(
);
-
- /**
- * Inherited from CValue -- Makes sure any internal
- * data owned by this class is deep copied. Called internally
- */
- virtual void
- ProcessReplica(
- KX_Camera* replica
- );
MT_Transform GetWorldToCamera() const;
MT_Transform GetCameraToWorld() const;
Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2009-04-22 12:16:41 UTC (rev 19870)
@@ -331,16 +331,16 @@
}
}
-void KX_GameObject::ProcessReplica(KX_GameObject* replica)
+void KX_GameObject::ProcessReplica()
{
- replica->m_pPhysicsController1 = NULL;
- replica->m_pGraphicController = NULL;
- replica->m_pSGNode = NULL;
- replica->m_pClient_info = new KX_ClientObjectInfo(*m_pClient_info);
- replica->m_pClient_info->m_gameobject = replica;
- replica->m_state = 0;
+ m_pPhysicsController1 = NULL;
+ m_pGraphicController = NULL;
+ m_pSGNode = NULL;
+ m_pClient_info = new KX_ClientObjectInfo(*m_pClient_info);
+ m_pClient_info->m_gameobject = this;
+ m_state = 0;
if(m_attr_dict)
- replica->m_attr_dict= PyDict_Copy(m_attr_dict);
+ m_attr_dict= PyDict_Copy(m_attr_dict);
}
@@ -352,7 +352,7 @@
// this will copy properties and so on...
CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.h 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.h 2009-04-22 12:16:41 UTC (rev 19870)
@@ -279,9 +279,7 @@
* data owned by this class is deep copied. Called internally
*/
virtual void
- ProcessReplica(
- KX_GameObject* replica
- );
+ ProcessReplica();
/**
* Return the linear velocity of the game object.
Modified: trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Light.cpp 2009-04-22 11:54:43 UTC (rev 19869)
+++ trunk/blender/source/gameengine/Ketsji/KX_Light.cpp 2009-04-22 12:16:41 UTC (rev 19870)
@@ -85,7 +85,7 @@
// this will copy properties and so on...
CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
replica->m_lightobj.m_worldmatrix = replica->GetOpenGLMatrixPtr();
m_rendertools->AddLight(&replica->m_lightobj);
More information about the Bf-blender-cvs
mailing list