Added access for adjusting timeOffset value at runtime, used for apricot (Franky climbing walls)
This commit is contained in:
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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 :
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -159,6 +159,14 @@ public:
|
||||
bool
|
||||
IsVertexParent(
|
||||
) ;
|
||||
|
||||
/**
|
||||
* Return slow parent status.
|
||||
*/
|
||||
|
||||
bool
|
||||
IsSlowParent(
|
||||
) ;
|
||||
|
||||
/**
|
||||
* Update the spatial data of this node. Iterate through
|
||||
|
||||
@@ -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 :
|
||||
|
||||
/**
|
||||
|
||||
@@ -87,6 +87,13 @@ SG_Spatial::
|
||||
delete (m_parent_relation);
|
||||
}
|
||||
|
||||
SG_ParentRelation *
|
||||
SG_Spatial::
|
||||
GetParentRelation(
|
||||
){
|
||||
return m_parent_relation;
|
||||
}
|
||||
|
||||
void
|
||||
SG_Spatial::
|
||||
SetParentRelation(
|
||||
|
||||
@@ -83,6 +83,10 @@ public:
|
||||
SetParentRelation(
|
||||
SG_ParentRelation *relation
|
||||
);
|
||||
|
||||
SG_ParentRelation *
|
||||
GetParentRelation(
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user