Added access for adjusting timeOffset value at runtime, used for apricot (Franky climbing walls)

This commit is contained in:
2008-06-14 17:12:49 +00:00
parent 9c2bf9bdbc
commit fc7a83b458
8 changed files with 78 additions and 0 deletions

View File

@@ -911,6 +911,14 @@ PyObject* KX_GameObject::_getattr(const STR_String& attr)
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 @@ int KX_GameObject::_setattr(const STR_String& attr, PyObject *value) // _setattr
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))
{

View File

@@ -177,8 +177,23 @@ public :
NewCopy(
);
MT_Scalar
GetTimeOffset(
) { return m_relax; }
void
SetTimeOffset(
MT_Scalar relaxation
) { m_relax = relaxation; }
~KX_SlowParentRelation(
);
bool
IsSlowRelation(
) {
return true;
}
private :

View File

@@ -22,6 +22,8 @@ class KX_GameObject:
@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):

View File

@@ -159,6 +159,17 @@ IsVertexParent()
return false;
}
bool
SG_Node::
IsSlowParent()
{
if (m_parent_relation)
{
return m_parent_relation->IsSlowRelation();
}
return false;
}
void
SG_Node::
DisconnectFromParent(

View File

@@ -159,6 +159,14 @@ public:
bool
IsVertexParent(
) ;
/**
* Return slow parent status.
*/
bool
IsSlowParent(
) ;
/**
* Update the spatial data of this node. Iterate through

View File

@@ -99,6 +99,16 @@ public :
) {
return false;
}
/**
* Need this to see if we are able to adjust time-offset from the python api
*/
virtual
bool
IsSlowRelation(
) {
return false;
}
protected :
/**

View File

@@ -87,6 +87,13 @@ SG_Spatial::
delete (m_parent_relation);
}
SG_ParentRelation *
SG_Spatial::
GetParentRelation(
){
return m_parent_relation;
}
void
SG_Spatial::
SetParentRelation(

View File

@@ -83,6 +83,10 @@ public:
SetParentRelation(
SG_ParentRelation *relation
);
SG_ParentRelation *
GetParentRelation(
);
/**