public override void DetectCollisions(IPhysicObject po, System.Collections.Generic.List <IPhysicObject> resp) { BulletPhysicObject BulletPhysicObject = po as BulletPhysicObject; contactcallbac.objs = new List <IPhysicObject>(); world.ContactTest(BulletPhysicObject.Body, contactcallbac); resp = contactcallbac.objs; }
public override void RemoveObject(IPhysicObject obj) { if (obj is BulletPhysicObject && obj.PhysicObjectTypes != PhysicObjectTypes.GHOST) { BulletPhysicObject BulletPhysicObject = obj as BulletPhysicObject; world.RemoveRigidBody(BulletPhysicObject.Body); BulletPhysicObject.Body.UserObject = null; } objs.Remove(obj); }
public override void AddObject(IPhysicObject obj) { if (obj is BulletPhysicObject && obj.PhysicObjectTypes != PhysicObjectTypes.GHOST) { BulletPhysicObject BulletPhysicObject = obj as BulletPhysicObject; world.AddRigidBody(BulletPhysicObject.Body, BulletPhysicObject.CollisionFilterGroup, BulletPhysicObject.CollisionFilterMask); BulletPhysicObject.Body.UserObject = obj; } objs.Add(obj); }
/// <summary> /// Create a simple Sphere object /// </summary> /// <param name="pos"></param> /// <param name="ori"></param> /// <returns></returns> private IObject SpawnPrimitive(Vector3 pos, Matrix ori) { ///Load a Model with a custom texture SimpleModel sm2 = new SimpleModel(factory,"Model\\ball"); sm2.SetTexture(factory.CreateTexture2DColor(1,1,Color.White,false), TextureType.DIFFUSE); ForwardXNABasicShader nd = new ForwardXNABasicShader(); IMaterial m = new ForwardMaterial(nd); BulletPhysicObject BulletPhysicObject = new BulletPhysicObject(new SphereShape(1), pos, Matrix.Identity, Vector3.One , 10); IObject o = new IObject(m, sm2, BulletPhysicObject); return o; }