/// <summary> /// Removes the object. /// </summary> /// <param name="obj">The obj.</param> public override void RemoveObject(IPhysicObject obj) { if (obj.PhysicObjectTypes == PhysicObjectTypes.TRIANGLEMESHOBJECT) { TriangleMeshObject bo = (TriangleMeshObject)obj; bo.StaticMesh.Tag = null; space.Remove(bo.StaticMesh); objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.InstancedTriangleMeshObject) { InstancedTriangleMeshObject bo = (InstancedTriangleMeshObject)obj; bo.InstancedMesh.Tag = null; space.Remove(bo.InstancedMesh); objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.MobilePhysicObject) { MobileMeshObject bo = (MobileMeshObject)obj; bo.MobileMesh.Tag = null; space.Remove(bo.MobileMesh); objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.SPECIALIZEDMOVER) { ObjectMover m = (ObjectMover)obj; space.Remove(m.BepuEntityObject.Entity); m.BepuEntityObject.Entity.CollisionInformation.Tag = null; space.Remove(m.Mover); space.Remove(m.Rotator); objs.Remove(m.BepuEntityObject); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.DETECTOROBJECT) { DetectorVolumeObject m = (DetectorVolumeObject)obj; space.Remove(m.DetectorVolume); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.TERRAIN) { TerrainObject t = obj as TerrainObject; space.Remove(t.Terrain); t.Terrain.Tag = null; objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.CHARACTEROBJECT) { CharacterObject cc = (CharacterObject)obj; cc.CharacterController.Body.CollisionInformation.Tag = null; space.Remove(cc.CharacterController); objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.FULLCHARACTEROBJECT) { FullCharacterObject cc = (FullCharacterObject)obj; cc.CharacterController.Body.CollisionInformation.Tag = null; space.Remove(cc.CharacterController); objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.SPHERECHARACTEROBJECT) { SphereCharacterObject cc = (SphereCharacterObject)obj; cc.CharacterController.Body.CollisionInformation.Tag = null; space.Remove(cc.CharacterController); objs.Remove(obj); } else if (obj.PhysicObjectTypes == PhysicObjectTypes.GHOST) { //if (obj is AgregatedPhysicObject) //{ // objs.Remove(obj); // AgregatedPhysicObject ag = obj as AgregatedPhysicObject; // foreach (var item in ag.PhysicsObjects) // { // item.ObjectOwner = null; // this.RemoveObject(item); // } //} //else //{ objs.Remove(obj); //} } else { BepuEntityObject bo = (BepuEntityObject)obj; bo.Entity.CollisionInformation.Tag = null; space.Remove(bo.Entity); objs.Remove(obj); } }
public SphereCharacterControllerInput(IScene scene, Vector3 position, float radius, float scale, float Yalignement = 0) : base(scene) { Characterobj = new SphereCharacterObject(position, Matrix.Identity, radius, scale, Yalignement); this.Start(); }