Ejemplo n.º 1
0
    public void ModificationCallback(PhysicsScene scene, NativeArray <ModifiableContactPair> contactPairs)
    {
        foreach (var pair in contactPairs)
        {
            ContactModType colliderModType      = ContactModType.None;
            ContactModType otherColliderModType = ContactModType.None;
            modifiableColliders.TryGetValue(pair.colliderInstanceID, out colliderModType);
            modifiableColliders.TryGetValue(pair.otherColliderInstanceID, out otherColliderModType);

            if (colliderModType == ContactModType.Boost || otherColliderModType == ContactModType.Boost)
            {
                ModifyBoostPair(pair);
            }

            if (colliderModType == ContactModType.NoSeparation || otherColliderModType == ContactModType.NoSeparation)
            {
                ModifyNoSeparationPair(pair);
            }

            if (colliderModType == ContactModType.Valve || otherColliderModType == ContactModType.Valve)
            {
                ModifyValvePair(pair);
            }
        }
    }
Ejemplo n.º 2
0
 private void SetupContactModGameObjects(string gameObjectTag, ContactModType contactModType)
 {
     // find gameobjects with specific tag to mark them for contact modification + cache their data on hash map
     foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag(gameObjectTag))
     {
         Collider collider = gameObject.GetComponent <Collider>();
         if (collider == null)
         {
             continue;
         }
         collider.hasModifiableContacts = true;
         modifiableColliders.Add(collider.GetInstanceID(), contactModType);
     }
 }