[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15221] trunk/blender/source/gameengine: Added access for adjusting timeOffset value at runtime, used for apricot ( Franky climbing walls)
Campbell Barton
ideasman42 at gmail.com
Sat Jun 14 19:13:07 CEST 2008
Revision: 15221
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15221
Author: campbellbarton
Date: 2008-06-14 19:12:49 +0200 (Sat, 14 Jun 2008)
Log Message:
-----------
Added access for adjusting timeOffset value at runtime, used for apricot (Franky climbing walls)
Modified Paths:
--------------
trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
trunk/blender/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
trunk/blender/source/gameengine/PyDoc/KX_GameObject.py
trunk/blender/source/gameengine/SceneGraph/SG_Node.cpp
trunk/blender/source/gameengine/SceneGraph/SG_Node.h
trunk/blender/source/gameengine/SceneGraph/SG_ParentRelation.h
trunk/blender/source/gameengine/SceneGraph/SG_Spatial.cpp
trunk/blender/source/gameengine/SceneGraph/SG_Spatial.h
Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2008-06-14 17:12:49 UTC (rev 15221)
@@ -911,7 +911,15 @@
if (attr == "name")
return PyString_FromString(m_name.ReadPtr());
+ if (attr == "timeOffset") {
+ if (m_pSGNode->GetSGParent()->IsSlowParent()) {
+ return PyFloat_FromDouble(static_cast<KX_SlowParentRelation *>(m_pSGNode->GetSGParent()->GetParentRelation())->GetTimeOffset());
+ } else {
+ return PyFloat_FromDouble(0.0);
+ }
+ }
+
_getattr_up(SCA_IObject);
}
@@ -932,6 +940,19 @@
return 0;
}
}
+
+ if (PyFloat_Check(value))
+ {
+ MT_Scalar val = PyFloat_AsDouble(value);
+ if (attr == "timeOffset") {
+ if (m_pSGNode->GetSGParent()->IsSlowParent()) {
+ static_cast<KX_SlowParentRelation *>(m_pSGNode->GetSGParent()->GetParentRelation())->SetTimeOffset(val);
+ return 0;
+ } else {
+ return 0;
+ }
+ }
+ }
if (PySequence_Check(value))
{
Modified: trunk/blender/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SG_NodeRelationships.h 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/Ketsji/KX_SG_NodeRelationships.h 2008-06-14 17:12:49 UTC (rev 15221)
@@ -177,8 +177,23 @@
NewCopy(
);
+ MT_Scalar
+ GetTimeOffset(
+ ) { return m_relax; }
+
+ void
+ SetTimeOffset(
+ MT_Scalar relaxation
+ ) { m_relax = relaxation; }
+
~KX_SlowParentRelation(
);
+
+ bool
+ IsSlowRelation(
+ ) {
+ return true;
+ }
private :
Modified: trunk/blender/source/gameengine/PyDoc/KX_GameObject.py
===================================================================
--- trunk/blender/source/gameengine/PyDoc/KX_GameObject.py 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/PyDoc/KX_GameObject.py 2008-06-14 17:12:49 UTC (rev 15221)
@@ -22,6 +22,8 @@
@type orientation: 3x3 Matrix [[float]]
@ivar scaling: The object's scaling factor. list [sx, sy, sz]
@type scaling: list [sx, sy, sz]
+ @ivar timeOffset: adjust the slowparent delay at runtime.
+ @type timeOffset: float
"""
def setVisible(visible):
Modified: trunk/blender/source/gameengine/SceneGraph/SG_Node.cpp
===================================================================
--- trunk/blender/source/gameengine/SceneGraph/SG_Node.cpp 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/SceneGraph/SG_Node.cpp 2008-06-14 17:12:49 UTC (rev 15221)
@@ -159,6 +159,17 @@
return false;
}
+ bool
+SG_Node::
+IsSlowParent()
+{
+ if (m_parent_relation)
+ {
+ return m_parent_relation->IsSlowRelation();
+ }
+ return false;
+}
+
void
SG_Node::
DisconnectFromParent(
Modified: trunk/blender/source/gameengine/SceneGraph/SG_Node.h
===================================================================
--- trunk/blender/source/gameengine/SceneGraph/SG_Node.h 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/SceneGraph/SG_Node.h 2008-06-14 17:12:49 UTC (rev 15221)
@@ -159,7 +159,15 @@
bool
IsVertexParent(
) ;
+
+ /**
+ * Return slow parent status.
+ */
+ bool
+ IsSlowParent(
+ ) ;
+
/**
* Update the spatial data of this node. Iterate through
* the children of this node and update their world data.
Modified: trunk/blender/source/gameengine/SceneGraph/SG_ParentRelation.h
===================================================================
--- trunk/blender/source/gameengine/SceneGraph/SG_ParentRelation.h 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/SceneGraph/SG_ParentRelation.h 2008-06-14 17:12:49 UTC (rev 15221)
@@ -99,6 +99,16 @@
) {
return false;
}
+
+ /**
+ * Need this to see if we are able to adjust time-offset from the python api
+ */
+ virtual
+ bool
+ IsSlowRelation(
+ ) {
+ return false;
+ }
protected :
/**
Modified: trunk/blender/source/gameengine/SceneGraph/SG_Spatial.cpp
===================================================================
--- trunk/blender/source/gameengine/SceneGraph/SG_Spatial.cpp 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/SceneGraph/SG_Spatial.cpp 2008-06-14 17:12:49 UTC (rev 15221)
@@ -87,6 +87,13 @@
delete (m_parent_relation);
}
+ SG_ParentRelation *
+SG_Spatial::
+GetParentRelation(
+){
+ return m_parent_relation;
+}
+
void
SG_Spatial::
SetParentRelation(
Modified: trunk/blender/source/gameengine/SceneGraph/SG_Spatial.h
===================================================================
--- trunk/blender/source/gameengine/SceneGraph/SG_Spatial.h 2008-06-14 16:54:46 UTC (rev 15220)
+++ trunk/blender/source/gameengine/SceneGraph/SG_Spatial.h 2008-06-14 17:12:49 UTC (rev 15221)
@@ -83,6 +83,10 @@
SetParentRelation(
SG_ParentRelation *relation
);
+
+ SG_ParentRelation *
+ GetParentRelation(
+ );
/**
More information about the Bf-blender-cvs
mailing list