|
@@ -675,6 +675,7 @@ void PhysicsWorld2D::SendBeginContactEvents()
|
|
|
|
|
|
|
|
using namespace PhysicsBeginContact2D;
|
|
using namespace PhysicsBeginContact2D;
|
|
|
VariantMap& eventData = GetEventDataMap();
|
|
VariantMap& eventData = GetEventDataMap();
|
|
|
|
|
+ VariantMap nodeEventData;
|
|
|
eventData[P_WORLD] = this;
|
|
eventData[P_WORLD] = this;
|
|
|
|
|
|
|
|
for (unsigned i = 0; i < beginContactInfos_.Size(); ++i)
|
|
for (unsigned i = 0; i < beginContactInfos_.Size(); ++i)
|
|
@@ -687,6 +688,26 @@ void PhysicsWorld2D::SendBeginContactEvents()
|
|
|
eventData[P_CONTACT] = (void*)contactInfo.contact_;
|
|
eventData[P_CONTACT] = (void*)contactInfo.contact_;
|
|
|
|
|
|
|
|
SendEvent(E_PHYSICSBEGINCONTACT2D, eventData);
|
|
SendEvent(E_PHYSICSBEGINCONTACT2D, eventData);
|
|
|
|
|
+
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_CONTACT] = (void*)contactInfo.contact_;
|
|
|
|
|
+
|
|
|
|
|
+ if (contactInfo.nodeA_)
|
|
|
|
|
+ {
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_BODY] = contactInfo.bodyA_.Get();
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_OTHERNODE] = contactInfo.nodeB_.Get();
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_OTHERBODY] = contactInfo.bodyB_.Get();
|
|
|
|
|
+
|
|
|
|
|
+ contactInfo.nodeA_->SendEvent(E_NODEBEGINCONTACT2D, nodeEventData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (contactInfo.nodeB_)
|
|
|
|
|
+ {
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_BODY] = contactInfo.bodyB_.Get();
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_OTHERNODE] = contactInfo.nodeA_.Get();
|
|
|
|
|
+ nodeEventData[NodeBeginContact2D::P_OTHERBODY] = contactInfo.bodyA_.Get();
|
|
|
|
|
+
|
|
|
|
|
+ contactInfo.nodeB_->SendEvent(E_NODEBEGINCONTACT2D, nodeEventData);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
beginContactInfos_.Clear();
|
|
beginContactInfos_.Clear();
|
|
@@ -699,6 +720,7 @@ void PhysicsWorld2D::SendEndContactEvents()
|
|
|
|
|
|
|
|
using namespace PhysicsEndContact2D;
|
|
using namespace PhysicsEndContact2D;
|
|
|
VariantMap& eventData = GetEventDataMap();
|
|
VariantMap& eventData = GetEventDataMap();
|
|
|
|
|
+ VariantMap nodeEventData;
|
|
|
eventData[P_WORLD] = this;
|
|
eventData[P_WORLD] = this;
|
|
|
|
|
|
|
|
for (unsigned i = 0; i < endContactInfos_.Size(); ++i)
|
|
for (unsigned i = 0; i < endContactInfos_.Size(); ++i)
|
|
@@ -711,6 +733,26 @@ void PhysicsWorld2D::SendEndContactEvents()
|
|
|
eventData[P_CONTACT] = (void*)contactInfo.contact_;
|
|
eventData[P_CONTACT] = (void*)contactInfo.contact_;
|
|
|
|
|
|
|
|
SendEvent(E_PHYSICSENDCONTACT2D, eventData);
|
|
SendEvent(E_PHYSICSENDCONTACT2D, eventData);
|
|
|
|
|
+
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_CONTACT] = (void*)contactInfo.contact_;
|
|
|
|
|
+
|
|
|
|
|
+ if (contactInfo.nodeA_)
|
|
|
|
|
+ {
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_BODY] = contactInfo.bodyA_.Get();
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_OTHERNODE] = contactInfo.nodeB_.Get();
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_OTHERBODY] = contactInfo.bodyB_.Get();
|
|
|
|
|
+
|
|
|
|
|
+ contactInfo.nodeA_->SendEvent(E_NODEENDCONTACT2D, nodeEventData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (contactInfo.nodeB_)
|
|
|
|
|
+ {
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_BODY] = contactInfo.bodyB_.Get();
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_OTHERNODE] = contactInfo.nodeA_.Get();
|
|
|
|
|
+ nodeEventData[NodeEndContact2D::P_OTHERBODY] = contactInfo.bodyA_.Get();
|
|
|
|
|
+
|
|
|
|
|
+ contactInfo.nodeB_->SendEvent(E_NODEENDCONTACT2D, nodeEventData);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
endContactInfos_.Clear();
|
|
endContactInfos_.Clear();
|