Esempio n. 1
0
 private void UpdateTriggeringStatus()
 {
     Miscellaneous.FindHashSetDifference(_triggeringBodySet, _triggeringBodySetLast,
                                         _triggeringBodyEntered, _triggeringBodyExited);
     foreach (ICollisionTriggeringBody bodyEntered in _triggeringBodyEntered)
     {
         OnTriggerStart(bodyEntered);
     }
     foreach (ICollisionTriggeringBody bodyExited in _triggeringBodyExited)
     {
         OnTriggerEnd(bodyExited);
     }
     _triggeringBodySetLast.Clear();
     _triggeringBodySetLast.CopyFrom(_triggeringBodySet);
     _triggeringBodySet.Clear();
 }
Esempio n. 2
0
        protected override void UpdateTriggeringObject()
        {
            Miscellaneous.FindHashSetDifference(
                TriggeringObjectSet, TriggeringObjectSetLast,
                TriggeringObjectEntered, TriggeringObjectExited);
            foreach (T objectEntered in TriggeringObjectEntered)
            {
                OnTriggerStart(objectEntered);
            }

            foreach (T objectExited in TriggeringObjectExited)
            {
                OnTriggerEnd(objectExited);
            }
            TriggeringObjectSetLast.Clear();
            TriggeringObjectSetLast.CopyFrom(TriggeringObjectSet);
            TriggeringObjectSet.Clear();
        }
 /// <summary>
 /// Update the color of the touched objects. From the latest set of touched objects,
 /// it finds which objects just come into contact. The color of these objects will
 /// be modified if needed. Then it finds which objects are no longer in contact. The
 /// color of these objects will be restored to original.
 /// </summary>
 /// <param name="touchableSet">Latest set of touched objects.</param>
 public void UpdateTouchedObjectColor(HashSet <ITouchable> touchableSet)
 {
     // Find touchable objects that comes in and the ones left our hand
     Miscellaneous.FindHashSetDifference(touchableSet, _lastTouchableSet,
                                         _touchableEnterSetTemp, _touchableExitSetTemp);
     // Colorize touchable objects that just come into contact with the hand
     foreach (ITouchable touchable in _touchableEnterSetTemp)
     {
         if (touchable.IndicateColorOnTouching)
         {
             ChangeTouchableObjectColorUponEnter(touchable);
         }
     }
     // Restore color of the touchable objects that leave the hand
     foreach (ITouchable touchable in _touchableExitSetTemp)
     {
         if (touchable.IndicateColorOnTouching)
         {
             RestoreTouchableObjectColorUponExit(touchable);
         }
     }
     _lastTouchableSet.Clear();
     _lastTouchableSet.CopyFrom(touchableSet);
 }