Example #1
0
        void ForceField(CollisionMethodArgs args)
        {
            PhysicsScene  scene      = demo.Engine.Factory.PhysicsSceneManager.Get(args.OwnerSceneIndex);
            PhysicsObject objectBase = scene.Factory.PhysicsObjectManager.Get(args.OwnerIndex);

            float time = args.Time;

            Vector3       axis                    = vectorZero;
            Vector3       objectPosition          = vectorZero;
            Vector3       collisionObjectPosition = vectorZero;
            PhysicsObject collisionPhysicsObject  = null;

            for (int i = 0; i < args.Collisions.Count; i++)
            {
                collisionPhysicsObject = scene.Factory.PhysicsObjectManager.Get(args.Collisions[i]);

                if (!collisionPhysicsObject.IsStatic)
                {
                    objectBase.MainWorldTransform.GetPosition(ref objectPosition);
                    collisionPhysicsObject.MainWorldTransform.GetPosition(ref collisionObjectPosition);

                    Vector3.Subtract(ref collisionObjectPosition, ref objectPosition, out axis);
                    axis.Normalize();

                    Vector3.Multiply(ref axis, 40000.0f, out axis);

                    collisionPhysicsObject.RigidGroupOwner.WorldAccumulator.AddWorldForce(ref axis);
                }
            }
        }
Example #2
0
        void Run(CollisionMethodArgs args)
        {
            PhysicsScene  scene      = demo.Engine.Factory.PhysicsSceneManager.Get(args.OwnerSceneIndex);
            PhysicsObject objectBase = scene.Factory.PhysicsObjectManager.Get(args.OwnerIndex);

            float time = args.Time;

            if ((cabinFrontButtonConstraint == null) || (body == null) || cabinFrontButtonConstraint.IsBroken || body.IsBrokenRigidGroup)
            {
                return;
            }

            PhysicsObject physicsObjectWithActiveCamera = scene.GetPhysicsObjectWithActiveCamera(0);

            if ((physicsObjectWithActiveCamera == null) || !physicsObjectWithActiveCamera.RigidGroupOwner.IsColliding(objectBase))
            {
                return;
            }

            if (!enableFly)
            {
                enableFly = true;
                cabinFrontButtonConstraint.ControlDistanceX = 0.4f;
            }
        }
Example #3
0
        private void CheckCollision(CollisionMethodArgs args)
        {
            MataliPhysicsObject mataliPhysicsObj         = scene.Factory.PhysicsObjectManager.Get(args.OwnerIndex);
            MataliObject        mataliObj                = (MataliObject)mataliPhysicsObj.UserTagObj;
            Dictionary <MataliPhysicsObject, bool> table = collisionTable[mataliPhysicsObj];

            for (int i = 0; i < args.Collisions.Count; i++)
            {
                MataliPhysicsObject collidingObject = scene.Factory.PhysicsObjectManager.Get(args.Collisions[i]);
                if (table.ContainsKey(collidingObject))
                {
                    if (mataliObj.CollisionContinueCallback != null)
                    {
                        mataliObj.CollisionContinueCallback(mataliPhysicsObj, collidingObject);
                    }
                }
                else
                {
                    table.Add(collidingObject, true);
                    if (mataliObj.CollisionStartCallback != null)
                    {
                        mataliObj.CollisionStartCallback(mataliPhysicsObj, collidingObject);
                    }
                }
            }
        }
        void Run(CollisionMethodArgs args)
        {
            PhysicsScene  scene      = demo.Engine.Factory.PhysicsSceneManager.Get(args.OwnerSceneIndex);
            PhysicsObject objectBase = scene.Factory.PhysicsObjectManager.Get(args.OwnerIndex);

            float time = args.Time;

            if ((constraint1 == null) || (panel == null) || constraint1.IsBroken || panel.IsBrokenRigidGroup)
            {
                return;
            }

            PhysicsObject physicsObjectWithActiveCamera = scene.GetPhysicsObjectWithActiveCamera(0);

            if ((physicsObjectWithActiveCamera == null) || !physicsObjectWithActiveCamera.RigidGroupOwner.IsColliding(objectBase))
            {
                return;
            }

            if (!enableRun)
            {
                enableRun = true;

                if ((constraint2 != null) && (constraint2.ControlDegAngleY >= 180.0f))
                {
                    flipRotation = true;
                }
                else
                {
                    flipRotation = false;
                }
            }
        }
Example #5
0
        private void CheckCollision(CollisionMethodArgs args)
        {
            MataliPhysicsObject mataliPhysicsObj = scene.Factory.PhysicsObjectManager.Get(args.OwnerIndex);
            MataliObject mataliObj = (MataliObject)mataliPhysicsObj.UserTagObj;
            Dictionary<MataliPhysicsObject, bool> table = collisionTable[mataliPhysicsObj];

            for (int i = 0; i < args.Collisions.Count; i++)
            {
                MataliPhysicsObject collidingObject = scene.Factory.PhysicsObjectManager.Get(args.Collisions[i]);
                if (table.ContainsKey(collidingObject))
                {
                    if (mataliObj.CollisionContinueCallback != null)
                        mataliObj.CollisionContinueCallback(mataliPhysicsObj, collidingObject);
                }
                else
                {
                    table.Add(collidingObject, true);
                    if (mataliObj.CollisionStartCallback != null)
                        mataliObj.CollisionStartCallback(mataliPhysicsObj, collidingObject);
                }
            }
        }