Esempio n. 1
0
    public void OnCollisionHandler(CollisionInformation e)
    {
        for (int i = 0; i < lastActiveIndex; i++)
        {
            Invoke("SetGoActive", active_value[i]);
        }
        for (int i = 0; i < lastInactiveIndex; i++)
        {
            Invoke("SetGoInactive", inactive_value[i]);
        }
        var handler = CollisionEnter;

        if (handler != null)
        {
            handler(this, e);
        }
        if (InstanceBehaviour == DeactivationEnum.Deactivate && !deactivatedIsWait)
        {
            deactivatedIsWait = true;
            Invoke("Deactivate", DeactivateTimeDelay);
        }
        if (InstanceBehaviour == DeactivationEnum.DestroyAfterCollision)
        {
            Destroy(gameObject, DestroyTimeDelay);
        }
    }
Esempio n. 2
0
        private bool onCollision(Fixture fixtureA, Fixture fixtureB, FarseerPhysics.Dynamics.Contacts.Contact contact)
        {
            BaseShape shapeA = fixtureA.UserData as BaseShape;
            BaseShape shapeB = fixtureB.UserData as BaseShape;

            CollisionInformation info = new CollisionInformation()
            {
                ShapeA       = shapeA,
                ShapeB       = shapeB,
                Friction     = contact.Friction,
                Restitution  = contact.Restitution,
                TangentSpeed = contact.TangentSpeed
            };

            shapeA.Physics.TriggerCollide(info);
            shapeB.Physics.TriggerCollide(info);
            Collision?.Invoke(info);

            return(true);
        }
Esempio n. 3
0
        private void HandleRotation()
        {
            if (Rotation == 0)
            {
                return;
            }

            exactBounds.RotationOffset = new Vector2(Width / 2, Height / 2);
            exactBounds.Rotation       = Rotation;

            CollisionInformation collisionInformation = exactBounds.GetCollisionInformation();

            float xMin   = VertexFinder(collisionInformation.Vertices, "x", "minimum");
            float xMax   = VertexFinder(collisionInformation.Vertices, "x", "maximum");
            float yMin   = VertexFinder(collisionInformation.Vertices, "y", "minimum");
            float yMax   = VertexFinder(collisionInformation.Vertices, "y", "maximum");
            float width  = xMax - xMin;
            float height = yMax - yMin;

            broadBounds.SetBounds(xMin, yMin, width, height);
        }
Esempio n. 4
0
 public void endContact(ref CollisionInformation collisionInformation)
 {
 }
Esempio n. 5
0
 public void beginContact(ref CollisionInformation collisionInformation)
 {
 }
Esempio n. 6
0
 public void instantaniousParticleContact(ref CollisionInformation collisionInformation, out EnumParticleCollisionResponse particleResponse)
 {
     particleResponse = EnumParticleCollisionResponse.ABSORB;
 }
Esempio n. 7
0
 public void instantaniousContact(ref CollisionInformation collisionInformation)
 {
 }