public CollDataBundle(EventManager.EDCollisionStay collEvent) { collision = new Coll2D(collEvent.flippedColl ? collEvent.collider : collEvent.collision2D.collider, collEvent.collision2D, collEvent.flippedColl); collisionCont = collEvent.collisionCont; callback = collEvent.collisionCallback; interactionCont = collEvent.interactionCont; }
private void SaveCollisionStayData(EventManager.EDCollisionStay event1, EventManager.EDCollisionStay event2) { // create collision data CollDataBundle collData1 = new CollDataBundle(event1); CollDataBundle collData2 = new CollDataBundle(event2); // create the internal data CollisionDataInternal internalData = new CollisionDataInternal(collData1, collData2); internalCollData.Add(internalData); // save collision enter data for both objects SaveDataHelper <CollisionDataInternal, CollDataBundle, CollisionData>(event1.interactionCont, event2.interactionCont, internalData, collData1, collData2, AddCollisionStayDataToInfoBundle); SaveDataHelper <CollisionDataInternal, CollDataBundle, CollisionData>(event2.interactionCont, event1.interactionCont, internalData, collData2, collData1, AddCollisionStayDataToInfoBundle); }
public void OnCollisionStayEvent(EventManager.EDCollisionStay eventData) { OrganizeEvent(eventData.interactionCont, eventData.otherInteractionCont, eventData, collStayEventData, CollStayMatches, SaveCollisionStayData); }
private bool CollStayMatches(EventManager.EDCollisionStay coll1, EventManager.EDCollisionStay coll2) { return(coll1.collider == coll2.collision2D.collider && coll2.collider == coll1.collision2D.collider); }
private void CompleteUnmatchedEvents() { // report unmatched events // TODO : option to pass dummy data with unmatched event to complete it foreach (KeyValuePair <int, List <EventManager.EDCollisionEnter> > eventList in collEnterEventData) { foreach (EventManager.EDCollisionEnter eventData in eventList.Value) { EventManager.EDCollisionEnter flippedEventData = new EventManager.EDCollisionEnter(); flippedEventData.collider = eventData.collider; flippedEventData.interactionCont = eventData.otherInteractionCont; flippedEventData.otherInteractionCont = eventData.interactionCont; flippedEventData.collisionCont = eventData.otherInteractionCont.GetRbodyCollCont(); flippedEventData.collision2D = eventData.collision2D; flippedEventData.momentumCalcRequired = eventData.momentumCalcRequired; flippedEventData.flippedColl = true; // if either collider is null do not save if (eventData.collider == null || flippedEventData.collider == null) { return; } SaveCollisionEnterData(eventData, flippedEventData); } } foreach (KeyValuePair <int, List <EventManager.EDCollisionStay> > eventList in collStayEventData) { foreach (EventManager.EDCollisionStay eventData in eventList.Value) { EventManager.EDCollisionStay flippedEventData = new EventManager.EDCollisionStay(); flippedEventData.collider = eventData.collider; flippedEventData.interactionCont = eventData.otherInteractionCont; flippedEventData.otherInteractionCont = eventData.interactionCont; flippedEventData.collisionCont = eventData.otherInteractionCont.GetRbodyCollCont(); flippedEventData.collision2D = eventData.collision2D; flippedEventData.flippedColl = true; SaveCollisionStayData(eventData, flippedEventData); } } foreach (KeyValuePair <int, List <EventManager.EDCollisionExit> > eventList in collExitEventData) { foreach (EventManager.EDCollisionExit eventData in eventList.Value) { EventManager.EDCollisionExit flippedEventData = new EventManager.EDCollisionExit(); flippedEventData.collider = eventData.collider; flippedEventData.interactionCont = eventData.otherInteractionCont; flippedEventData.otherInteractionCont = eventData.interactionCont; flippedEventData.collisionCont = eventData.otherInteractionCont.GetRbodyCollCont(); flippedEventData.collision2D = eventData.collision2D; flippedEventData.flippedColl = true; SaveCollisionExitData(eventData, flippedEventData); } } foreach (KeyValuePair <int, List <EventManager.EDTriggerEnter> > eventList in triggerEnterEventData) { foreach (EventManager.EDTriggerEnter eventData in eventList.Value) { EventManager.EDTriggerEnter flippedEventData = new EventManager.EDTriggerEnter(); flippedEventData.collider = eventData.eventCollider; flippedEventData.eventCollider = eventData.collider; flippedEventData.interactionCont = eventData.otherInteractionCont; flippedEventData.otherInteractionCont = eventData.interactionCont; flippedEventData.collisionCont = eventData.otherInteractionCont.GetRbodyCollCont(); SaveTriggerEnterData(eventData, flippedEventData); } } foreach (KeyValuePair <int, List <EventManager.EDTriggerStay> > eventList in triggerStayEventData) { foreach (EventManager.EDTriggerStay eventData in eventList.Value) { EventManager.EDTriggerStay flippedEventData = new EventManager.EDTriggerStay(); flippedEventData.collider = eventData.eventCollider; flippedEventData.eventCollider = eventData.collider; flippedEventData.interactionCont = eventData.otherInteractionCont; flippedEventData.otherInteractionCont = eventData.interactionCont; flippedEventData.collisionCont = eventData.otherInteractionCont.GetRbodyCollCont(); SaveTriggerStayData(eventData, flippedEventData); } } foreach (KeyValuePair <int, List <EventManager.EDTriggerExit> > eventList in triggerExitEventData) { foreach (EventManager.EDTriggerExit eventData in eventList.Value) { EventManager.EDTriggerExit flippedEventData = new EventManager.EDTriggerExit(); flippedEventData.collider = eventData.eventCollider; flippedEventData.eventCollider = eventData.collider; flippedEventData.interactionCont = eventData.otherInteractionCont; flippedEventData.otherInteractionCont = eventData.interactionCont; flippedEventData.collisionCont = eventData.otherInteractionCont.GetRbodyCollCont(); SaveTriggerExitData(eventData, flippedEventData); } } }