コード例 #1
0
 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;
 }
コード例 #2
0
    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);
    }
コード例 #3
0
 public void OnCollisionStayEvent(EventManager.EDCollisionStay eventData)
 {
     OrganizeEvent(eventData.interactionCont, eventData.otherInteractionCont, eventData, collStayEventData, CollStayMatches, SaveCollisionStayData);
 }
コード例 #4
0
 private bool CollStayMatches(EventManager.EDCollisionStay coll1, EventManager.EDCollisionStay coll2)
 {
     return(coll1.collider == coll2.collision2D.collider && coll2.collider == coll1.collision2D.collider);
 }
コード例 #5
0
    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);
            }
        }
    }