//used to draw collidable primitives that a value associated with them e.g. health public PickupCollidablePrimitiveObject(string id, ActorType actorType, Transform3D transform, EffectParameters effectParameters, StatusType statusType, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager, PickupParameters pickupParameters) : base(id, actorType, transform, effectParameters, statusType, vertexData, collisionPrimitive, objectManager) { this.pickupParameters = pickupParameters; }
private Actor3D CheckCollision(GameTime gameTime, Actor3D actor, Ray mouseRay) { if (actor is CollidablePrimitiveObject) { collisionPrimitive = (actor as CollidablePrimitiveObject).CollisionPrimitive; if (collisionPrimitive.Intersects(mouseRay)) { return(actor); } } else if (actor is SimpleZoneObject) { collisionPrimitive = (actor as SimpleZoneObject).CollisionPrimitive; if (collisionPrimitive.Intersects(mouseRay)) { return(actor); } } else //PrimitiveObject - uses basic BoundingSphere created for camera frustum culling { float?result = mouseRay.Intersects(actor.BoundingSphere); if (result != null) { return(actor); } } return(null); }
public CollidableZoneObject(string id, ActorType actorType, StatusType statusType, Transform3D transform, ICollisionPrimitive collisionPrimitive) : base(id, actorType, statusType, transform, null) { this.collisionPrimitive = collisionPrimitive; }
//tests if the bounding sphere for this primitive, when moved, will intersect with the collisionPrimitive passed into the method public bool Intersects(ICollisionPrimitive collisionPrimitive, Vector3 translation) { BoundingSphere projectedSphere = this.boundingSphere; projectedSphere.Center += translation; return(collisionPrimitive.Intersects(projectedSphere)); }
//used to make a pick collidable primitives from an existing PrimitiveObject (i.e. the type returned by the PrimitiveFactory public PickupCollidablePrimitiveObject(PrimitiveObject primitiveObject, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager, PickupParameters pickupParameters, EventDispatcher eventDispatcher) : base(primitiveObject, collisionPrimitive, objectManager, eventDispatcher) { this.eventDispatcher = eventDispatcher; this.pickupParameters = pickupParameters; }
private void DrawBoundingPrimitive(GameTime gameTime, ICollisionPrimitive collisionPrimitive, Color color) { if (collisionPrimitive is SphereCollisionPrimitive) { int primitiveCount = 0; vertexData = new VertexData <VertexPositionColor>(VertexFactory.GetSphereVertices(1, 10, out primitiveCount), PrimitiveType.LineStrip, primitiveCount); coll = collisionPrimitive as SphereCollisionPrimitive; world = Matrix.Identity * Matrix.CreateScale(coll.BoundingSphere.Radius) * Matrix.CreateTranslation(coll.BoundingSphere.Center); wireframeEffect.World = world; wireframeEffect.View = cameraManager.ActiveCamera.View; wireframeEffect.Projection = cameraManager.ActiveCamera.Projection; wireframeEffect.DiffuseColor = Color.White.ToVector3(); wireframeEffect.CurrentTechnique.Passes[0].Apply(); vertexData.Draw(gameTime, wireframeEffect); } else { BoxCollisionPrimitive coll = collisionPrimitive as BoxCollisionPrimitive; BoundingBoxBuffers buffers = BoundingBoxDrawer.CreateBoundingBoxBuffers(coll.BoundingBox, GraphicsDevice); BoundingBoxDrawer.DrawBoundingBox(buffers, wireframeEffect, GraphicsDevice, cameraManager.ActiveCamera); } }
//tests if the bounding box for this primitive, when moved, will intersect with the collisionPrimitive passed into the method public bool Intersects(ICollisionPrimitive collisionPrimitive, Vector3 translation) { BoundingBox projectedBox = this.boundingBox; projectedBox.Max += translation; projectedBox.Min += translation; return(collisionPrimitive.Intersects(projectedBox)); }
//used to make a collidable primitives from an existing PrimitiveObject (i.e. the type returned by the PrimitiveFactory public CollidablePrimitiveObject(PrimitiveObject primitiveObject, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager) : base(primitiveObject.ID, primitiveObject.ActorType, primitiveObject.Transform, primitiveObject.EffectParameters, primitiveObject.StatusType, primitiveObject.VertexData) { this.collisionPrimitive = collisionPrimitive; //unusual to pass this in but we use it to test for collisions - see Update(); this.objectManager = objectManager; }
//used to draw collidable primitives that have a texture i.e. use VertexPositionColor vertex types only public CollidablePrimitiveObject(string id, ActorType actorType, Transform3D transform, EffectParameters effectParameters, StatusType statusType, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager) : base(id, actorType, transform, effectParameters, statusType, vertexData) { this.collisionPrimitive = collisionPrimitive; //unusual to pass this in but we use it to test for collisions - see Update(); this.objectManager = objectManager; }
public ICollisionDetector Create(ICollisionPrimitive paramA, ICollisionPrimitive paramB) { var result = InnerCreate(paramA, paramB); if(result is NullCollisionDetector) { result = InnerCreate(paramB, paramA); } return result; }
//used to make a player collidable primitives from an existing PrimitiveObject (i.e. the type returned by the PrimitiveFactory public PlayerCollidablePrimitiveObject(PrimitiveObject primitiveObject, ICollisionPrimitive collisionPrimitive, ManagerParameters managerParameters, Keys[] moveKeys, float moveSpeed, float rotationSpeed) : base(primitiveObject, collisionPrimitive, managerParameters.ObjectManager) { this.moveKeys = moveKeys; this.moveSpeed = moveSpeed; this.rotationSpeed = rotationSpeed; //for input this.managerParameters = managerParameters; }
ICollisionDetector InnerCreate(ICollisionPrimitive paramA, ICollisionPrimitive paramB) { switch (paramA.Shape) { case CollisionShape.Sphere: switch (paramB.Shape) { case CollisionShape.Sphere: var result = new SphereSphereCollisionDetector(); result.ParamA = paramA as SphereCollisionPrimitive; result.ParamB = paramB as SphereCollisionPrimitive; return result; default: break; } break; case CollisionShape.Cylinder: switch (paramB.Shape) { case CollisionShape.Cylinder: { var result = new CylinderCylinderCollisionDetector(); result.ParamA = paramA as CylinderCollisionPrimitive; result.ParamB = paramB as CylinderCollisionPrimitive; return result; } case CollisionShape.AABB: { var result = new CylinderAABBCollisionDetector(); result.Cylinder = paramA as CylinderCollisionPrimitive; result.AABB = paramB as AABBCollisionPrimitive; return result; } } break; case CollisionShape.Ray: switch (paramB.Shape) { case CollisionShape.Sphere: { var result = new RaySphereCollisionDetector(); result.Ray = paramA as RayCollisionPrimitive; result.Sphere = paramB as SphereCollisionPrimitive; return result; } } break; default: break; } return new NullCollisionDetector(); }
public CollidablePlayerObject(string id, ActorType actorType, StatusType statusType, Transform3D transform, EffectParameters effectParameters, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager, Keys[] moveKeys, float moveSpeed, float rotationSpeed, KeyboardManager keyboardManager, Game game) : base(id, actorType, statusType, transform, effectParameters, vertexData, collisionPrimitive, objectManager) { this.moveKeys = moveKeys; this.moveSpeed = moveSpeed; this.rotationSpeed = 0.1f; //for movement this.keyboardManager = keyboardManager; this.game = game; this.deathCount = 0; }
private void DrawCollisionPrimitive(GameTime gameTime, ICollisionPrimitive collisionPrimitive) { if (collisionPrimitive is SphereCollisionPrimitive) { SphereCollisionPrimitive coll = collisionPrimitive as SphereCollisionPrimitive; this.wireframeEffect.World = Matrix.Identity * Matrix.CreateScale(coll.BoundingSphere.Radius) * Matrix.CreateTranslation(coll.BoundingSphere.Center); this.wireframeEffect.View = this.managerParameters.CameraManager.ActiveCamera.View; this.wireframeEffect.Projection = this.managerParameters.CameraManager.ActiveCamera.ProjectionParameters.Projection; this.wireframeEffect.DiffuseColor = sphereColor.ToVector3(); this.wireframeEffect.CurrentTechnique.Passes[0].Apply(); sphereVertexData.Draw(gameTime, this.wireframeEffect); } else { BoxCollisionPrimitive coll = collisionPrimitive as BoxCollisionPrimitive; BoundingBoxBuffers buffers = BoundingBoxDrawer.CreateBoundingBoxBuffers(coll.BoundingBox, this.GraphicsDevice, boxColor); BoundingBoxDrawer.DrawBoundingBox(buffers, this.wireframeEffect, this.GraphicsDevice, this.managerParameters.CameraManager.ActiveCamera); } }
public PlatformCollidablePrimitiveObject(PrimitiveObject primitiveObject, ICollisionPrimitive collisionPrimitive, ManagerParameters managerParameters, EventDispatcher eventDispatcher) : base(primitiveObject, collisionPrimitive, managerParameters.ObjectManager, eventDispatcher) { }
public CollidableProjectile(string id, ActorType actorType, StatusType statusType, Transform3D transform3D, EffectParameters effectParameters, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager) : base(id, actorType, statusType, transform3D, effectParameters, vertexData, collisionPrimitive, objectManager) { }
public CollidableEnemy(string id, ActorType actorType, StatusType statusType, Transform3D transform, EffectParameters effectParameters, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager, float speed, float range, CollidablePlayerObject player) : base(id, actorType, statusType, transform, effectParameters, vertexData, collisionPrimitive, objectManager) { this.speed = speed; this.range = range; this.player = player; }
public bool Intersects(ICollisionPrimitive collisionPrimitive) { return(collisionPrimitive.Intersects(this.boundingSphere)); }
public PlayerCollidablePrimitiveObject(string id, ActorType actorType, Transform3D transform, EffectParameters effectParameters, StatusType statusType, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ManagerParameters managerParameters, Keys[] moveKeys, float moveSpeed, float rotationSpeed) : base(id, actorType, transform, effectParameters, statusType, vertexData, collisionPrimitive, managerParameters.ObjectManager) { this.moveKeys = moveKeys; this.moveSpeed = moveSpeed; this.rotationSpeed = rotationSpeed; //for input this.managerParameters = managerParameters; }
public bool Intersects(ICollisionPrimitive collisionPrimitive) { return(collisionPrimitive.Intersects(boundingBox)); }
//used to make a pick collidable primitives from an existing PrimitiveObject (i.e. the type returned by the PrimitiveFactory public PickupCollidablePrimitiveObject(PrimitiveObject primitiveObject, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager, PickupParameters pickupParameters) : base(primitiveObject, collisionPrimitive, objectManager) { this.pickupParameters = pickupParameters; }
public MovingObstacleSpawner(string id, ActorType actorType, StatusType statusType, Transform3D transform3D, EffectParameters effectParameters, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager) : base(id, actorType, statusType, transform3D, effectParameters, vertexData, collisionPrimitive, objectManager) { }
public CollidablePlayerObject(string id, ActorType actorType, StatusType statusType, Transform3D transform, EffectParameters effectParameters, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ObjectManager objectManager, Keys[] moveKeys, KeyboardManager keyboardManager) : base(id, actorType, statusType, transform, effectParameters, vertexData, collisionPrimitive, objectManager) { this.moveKeys = moveKeys; this.keyboardManager = keyboardManager; }
public PlatformCollidablePrimitiveObject(string id, ActorType actorType, Transform3D transform, EffectParameters effectParameters, StatusType statusType, IVertexData vertexData, ICollisionPrimitive collisionPrimitive, ManagerParameters managerParameters, EventDispatcher eventDispatcher) : base(id, actorType, transform, effectParameters, statusType, vertexData, collisionPrimitive, managerParameters.ObjectManager, eventDispatcher) { this.currentPosition = this.previousPosition = this.Transform.Translation; }
public static CollisionPrimitiveModel ToModel(this ICollisionPrimitive obj) => new CollisionPrimitiveModel { Kind = obj.Kind, Parameters = obj.Parameters, Pose = obj.Pose.ToModel() };