[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15352] trunk/blender: BGE patch 15044 approved: Edit Object Dynamics Actuator.

Benoit Bolsee benoit.bolsee at online.be
Wed Jun 25 16:09:24 CEST 2008


Revision: 15352
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15352
Author:   ben2610
Date:     2008-06-25 16:09:15 +0200 (Wed, 25 Jun 2008)

Log Message:
-----------
BGE patch 15044 approved: Edit Object Dynamics Actuator.

Add enable/disable dynamics actuator under the "Edit Object" category.
The Enable/disable rigid body option is also availale but not implemented.

Modified Paths:
--------------
    trunk/blender/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj
    trunk/blender/source/blender/makesdna/DNA_actuator_types.h
    trunk/blender/source/blender/src/buttons_logic.c
    trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.h

Added Paths:
-----------
    trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h

Modified: trunk/blender/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj
===================================================================
--- trunk/blender/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj	2008-06-25 13:51:54 UTC (rev 15351)
+++ trunk/blender/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj	2008-06-25 14:09:15 UTC (rev 15352)
@@ -463,6 +463,9 @@
 					RelativePath="..\..\..\source\gameengine\Ketsji\KX_SCA_AddObjectActuator.cpp">
 				</File>
 				<File
+					RelativePath="..\..\..\source\gameengine\Ketsji\KX_SCA_DynamicActuator.cpp">
+				</File>
+				<File
 					RelativePath="..\..\..\source\gameengine\Ketsji\KX_SCA_EndObjectActuator.cpp">
 				</File>
 				<File
@@ -687,6 +690,9 @@
 					RelativePath="..\..\..\source\gameengine\Ketsji\KX_SCA_AddObjectActuator.h">
 				</File>
 				<File
+					RelativePath="..\..\..\source\gameengine\Ketsji\KX_SCA_DynamicActuator.h">
+				</File>
+				<File
 					RelativePath="..\..\..\source\gameengine\Ketsji\KX_SCA_EndObjectActuator.h">
 				</File>
 				<File

Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h	2008-06-25 13:51:54 UTC (rev 15351)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h	2008-06-25 14:09:15 UTC (rev 15352)
@@ -81,7 +81,7 @@
 	char name[32];
 	float linVelocity[3]; /* initial lin. velocity on creation */
 	short localflag; /* flag for the lin. vel: apply locally   */
-	short pad;
+	short dyn_operation;
 } bEditObjectActuator;
 
 typedef struct bSceneActuator {
@@ -360,11 +360,12 @@
 /* editObjectActuator->type */
 #define ACT_EDOB_ADD_OBJECT		0
 #define ACT_EDOB_END_OBJECT		1
-#define ACT_EDOB_REPLACE_MESH	2
+#define ACT_EDOB_REPLACE_MESH		2
 #define ACT_EDOB_TRACK_TO		3
-#define ACT_EDOB_MAKE_CHILD		4
-#define ACT_EDOB_END_CHILD		5
+#define ACT_EDOB_DYNAMICS		4
 
+
+
 /* editObjectActuator->flag */
 #define ACT_TRACK_3D			1
 

Modified: trunk/blender/source/blender/src/buttons_logic.c
===================================================================
--- trunk/blender/source/blender/src/buttons_logic.c	2008-06-25 13:51:54 UTC (rev 15351)
+++ trunk/blender/source/blender/src/buttons_logic.c	2008-06-25 14:09:15 UTC (rev 15352)
@@ -1940,8 +1940,15 @@
 			uiDefButI(block, NUM, 0, "Time:",	xco+10+(width-20)/2, yco-44, (width-20)/2-40, 19, &eoa->time, 0.0, 2000.0, 0, 0, "Duration the tracking takes");
 			uiDefButS(block, TOG, 0, "3D",	xco+width-50, yco-44, 40, 19, &eoa->flag, 0.0, 0.0, 0, 0, "Enable 3D tracking");
 		}
-		
-		str= "Edit Object %t|Add Object %x0|End Object %x1|Replace Mesh %x2|Track to %x3";
+		else if(eoa->type==ACT_EDOB_DYNAMICS) {
+			ysize= 48;
+			glRects(xco, yco-ysize, xco+width, yco);
+			uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1);
+			
+			str= "Dynamic Operation %t|Restore Dynamics %x0|Suspend Dynamics %x1|Enable Rigid Body %x2|Disable Rigid Body %x3";
+			uiDefButS(block, MENU, B_REDR, str,		xco+40, yco-44, (width-80), 19,  &(eoa->dyn_operation), 0.0, 0.0, 0, 0, "");
+		}
+		str= "Edit Object %t|Add Object %x0|End Object %x1|Replace Mesh %x2|Track to %x3|Dynamics %x4";
 		uiDefButS(block, MENU, B_REDR, str,		xco+40, yco-24, (width-80), 19, &eoa->type, 0.0, 0.0, 0, 0, "");
 
  		yco-= ysize;

Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp	2008-06-25 13:51:54 UTC (rev 15351)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp	2008-06-25 14:09:15 UTC (rev 15352)
@@ -62,6 +62,7 @@
 #include "KX_SCA_EndObjectActuator.h"
 #include "KX_SCA_ReplaceMeshActuator.h"
 #include "KX_ParentActuator.h"
+#include "KX_SCA_DynamicActuator.h"
 
 #include "KX_Scene.h"
 #include "KX_KetsjiEngine.h"
@@ -602,7 +603,16 @@
 								blenderobject->upflag
 								);
 							baseact = tmptrackact;
+						break;
 					}
+				case ACT_EDOB_DYNAMICS:
+					{
+						KX_SCA_DynamicActuator* tmpdynact 
+							= new KX_SCA_DynamicActuator(gameobj, 
+								editobact->dyn_operation
+								);
+							baseact = tmpdynact;
+					}
 				}
 				break;
 			}

Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp	2008-06-25 13:51:54 UTC (rev 15351)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp	2008-06-25 14:09:15 UTC (rev 15352)
@@ -1283,17 +1283,7 @@
 										   PyObject* args, 
 										   PyObject* kwds)
 {
-	if (m_bSuspendDynamics)
-	{
-		Py_Return;
-	}
-	
-	if (m_pPhysicsController1)
-	{
-		m_pPhysicsController1->SuspendDynamics();
-	}
-	m_bSuspendDynamics = true;
-	
+	SuspendDynamics();
 	Py_Return;
 }
 
@@ -1303,18 +1293,7 @@
 										   PyObject* args, 
 										   PyObject* kwds)
 {
-	
-	if (!m_bSuspendDynamics)
-	{
-		Py_Return;
-	}
-	
-	if (m_pPhysicsController1)
-	{
-		m_pPhysicsController1->RestoreDynamics();
-	}
-	m_bSuspendDynamics = false;
-	
+	RestoreDynamics();
 	Py_Return;
 }
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.h	2008-06-25 13:51:54 UTC (rev 15351)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.h	2008-06-25 14:09:15 UTC (rev 15352)
@@ -46,7 +46,7 @@
 #include "GEN_HashedPtr.h"
 #include "KX_Scene.h"
 #include "KX_KetsjiEngine.h" /* for m_anim_framerate */
-
+#include "KX_IPhysicsController.h" /* for suspend/resume */
 #define KX_OB_DYNAMIC 1
 
 
@@ -652,6 +652,32 @@
 	 */
 	void Resume(void);
 	
+	void SuspendDynamics(void) {
+		if (m_bSuspendDynamics)
+		{
+			return;
+		}
+	
+		if (m_pPhysicsController1)
+		{
+			m_pPhysicsController1->SuspendDynamics();
+		}
+		m_bSuspendDynamics = true;
+	}
+	
+	void RestoreDynamics(void) {	
+		if (!m_bSuspendDynamics)
+		{
+			return;
+		}
+	
+		if (m_pPhysicsController1)
+		{
+			m_pPhysicsController1->RestoreDynamics();
+		}
+		m_bSuspendDynamics = false;
+	}
+	
 	KX_ClientObjectInfo* getClientInfo() { return m_pClient_info; }
 	/**
 	 * @section Python interface functions.

Added: trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp	                        (rev 0)
+++ trunk/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp	2008-06-25 14:09:15 UTC (rev 15352)
@@ -0,0 +1,206 @@
+//
+// Adjust dynamics settins for this object
+//
+// $Id$
+//
+// ***** BEGIN GPL LICENSE BLOCK *****
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+// All rights reserved.
+//
+// The Original Code is: all of this file.
+//
+// Contributor(s): none yet.
+//
+// ***** END GPL LICENSE BLOCK *****
+
+//
+// Previously existed as:
+
+// \source\gameengine\GameLogic\SCA_DynamicActuator.cpp
+
+// Please look here for revision history.
+
+#include "KX_SCA_DynamicActuator.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+/* ------------------------------------------------------------------------- */
+/* Python functions                                                          */
+/* ------------------------------------------------------------------------- */
+
+/* Integration hooks ------------------------------------------------------- */
+
+	PyTypeObject 
+
+KX_SCA_DynamicActuator::
+
+Type = {
+	PyObject_HEAD_INIT(&PyType_Type)
+	0,
+	"KX_SCA_DynamicActuator",
+	sizeof(KX_SCA_DynamicActuator),
+	0,
+	PyDestructor,
+	0,
+	__getattr,
+	__setattr,
+	0, 
+	__repr,
+	0, 
+	0,
+	0,
+	0,
+	0
+};
+
+PyParentObject KX_SCA_DynamicActuator::Parents[] = {
+	&KX_SCA_DynamicActuator::Type,
+	&SCA_IActuator::Type,
+	&SCA_ILogicBrick::Type,
+	&CValue::Type,
+	NULL
+};
+
+
+PyMethodDef KX_SCA_DynamicActuator::Methods[] = {
+	KX_PYMETHODTABLE(KX_SCA_DynamicActuator, setOperation),
+   	KX_PYMETHODTABLE(KX_SCA_DynamicActuator, getOperation),
+	{NULL,NULL} //Sentinel
+};
+
+
+
+PyObject* KX_SCA_DynamicActuator::_getattr(const STR_String& attr)
+{
+  _getattr_up(SCA_IActuator);
+}
+
+
+
+/* 1. setOperation */
+KX_PYMETHODDEF_DOC(KX_SCA_DynamicActuator, setOperation,
+"setOperation(operation?)\n"
+"\t - operation? : type of dynamic operation\n"
+"\t                0 = restore dynamics\n"
+"\t                1 = disable dynamics\n"
+"\t                2 = enable rigid body\n"
+"\t                3 = disable rigid body\n"
+"Change the dynamic status of the parent object.\n")
+{
+	int dyn_operation;
+	
+	if (!PyArg_ParseTuple(args, "i", &dyn_operation))
+	{
+		return NULL;	
+	}
+	if (dyn_operation <0 || dyn_operation>3) {
+		PyErr_SetString(PyExc_IndexError, "Dynamic Actuator's setOperation() range must be between 0 and 3");
+		return NULL;
+	}
+	m_dyn_operation= dyn_operation;
+	Py_Return;
+}
+
+KX_PYMETHODDEF_DOC(KX_SCA_DynamicActuator, getOperation,
+"getOperation() -> integer\n"
+"Returns the operation type of this actuator.\n"
+)
+{
+	return PyInt_FromLong((long)m_dyn_operation);
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* Native functions                                                          */
+/* ------------------------------------------------------------------------- */
+
+KX_SCA_DynamicActuator::KX_SCA_DynamicActuator(SCA_IObject *gameobj,
+													   short dyn_operation,
+													   PyTypeObject* T) : 
+
+	SCA_IActuator(gameobj, T),
+	m_dyn_operation(dyn_operation)
+{
+} /* End of constructor */
+
+
+KX_SCA_DynamicActuator::~KX_SCA_DynamicActuator()
+{ 
+	// there's nothing to be done here, really....
+} /* end of destructor */
+
+
+

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list