Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2009-04-22 22:20:41 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2009-04-22 22:20:41 +0400
commit48f483d14f1ff6dd9e5b4c87cb8d75ac862f3157 (patch)
tree350b36ffc1afe78d8d5da33ba5452854cd656149 /source/gameengine/Ketsji/KX_NearSensor.cpp
parentb22819f686539f75438938ed45751e7dc3405a0c (diff)
BGE: some more cleanup, implement proper GetReplica/ProcessReplica workflow for touch/near/radar sensor. Remove duplicated code.
Diffstat (limited to 'source/gameengine/Ketsji/KX_NearSensor.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_NearSensor.cpp44
1 files changed, 14 insertions, 30 deletions
diff --git a/source/gameengine/Ketsji/KX_NearSensor.cpp b/source/gameengine/Ketsji/KX_NearSensor.cpp
index 23c525a1b52..2f1a3af78fa 100644
--- a/source/gameengine/Ketsji/KX_NearSensor.cpp
+++ b/source/gameengine/Ketsji/KX_NearSensor.cpp
@@ -109,51 +109,35 @@ void KX_NearSensor::UnregisterSumo(KX_TouchEventManager* touchman)
CValue* KX_NearSensor::GetReplica()
{
KX_NearSensor* replica = new KX_NearSensor(*this);
- replica->m_colliders = new CListValue();
- replica->Init();
replica->ProcessReplica();
+ return replica;
+}
+
+void KX_NearSensor::ProcessReplica()
+{
+ KX_TouchSensor::ProcessReplica();
- replica->m_client_info = new KX_ClientObjectInfo(m_client_info->m_gameobject, KX_ClientObjectInfo::NEAR);
+ m_client_info = new KX_ClientObjectInfo(m_client_info->m_gameobject, KX_ClientObjectInfo::NEAR);
- if (replica->m_physCtrl)
+ if (m_physCtrl)
{
- replica->m_physCtrl = replica->m_physCtrl->GetReplica();
- if (replica->m_physCtrl)
+ m_physCtrl = m_physCtrl->GetReplica();
+ if (m_physCtrl)
{
//static_cast<KX_TouchEventManager*>(m_eventmgr)->GetPhysicsEnvironment()->addSensor(replica->m_physCtrl);
- replica->m_physCtrl->SetMargin(m_Margin);
- replica->m_physCtrl->setNewClientInfo(replica->m_client_info);
+ m_physCtrl->SetMargin(m_Margin);
+ m_physCtrl->setNewClientInfo(m_client_info);
}
}
- //Wrong: the parent object could be a child, this code works only if it is a root parent.
- //Anyway, at this stage, the parent object is already synchronized, nothing to do.
- //bool parentUpdated = false;
- //((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL, parentUpdated);
- replica->SynchronizeTransform();
-
- return replica;
}
-
-
void KX_NearSensor::ReParent(SCA_IObject* parent)
{
m_client_info->m_gameobject = static_cast<KX_GameObject*>(parent);
m_client_info->m_sensors.push_back(this);
-
-
-/* KX_ClientObjectInfo *client_info = gameobj->getClientInfo();
- client_info->m_gameobject = gameobj;
- client_info->m_auxilary_info = NULL;
-
- client_info->m_sensors.push_back(this);
- SCA_ISensor::ReParent(parent);
-*/
- //Not needed, was done in GetReplica() already
- //bool parentUpdated = false;
- //((KX_GameObject*)GetParent())->GetSGNode()->ComputeWorldTransforms(NULL,parentUpdated);
- //SynchronizeTransform();
+ //Synchronize here with the actual parent.
+ SynchronizeTransform();
SCA_ISensor::ReParent(parent);
}