[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