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); } } }
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; } }
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; } } }
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); } } }