//test for collision against a specific object
        private Actor CheckCollisionWithActor(GameTime gameTime, Actor3D actor3D)
        {
            //dont test for collision against yourself - remember the player is in the object manager list too!
            if (this != actor3D)
            {
                if (actor3D is CollidablePrimitiveObject)
                {
                    CollidablePrimitiveObject collidableObject = actor3D as CollidablePrimitiveObject;
                    if (this.CollisionPrimitive.Intersects(collidableObject.CollisionPrimitive, this.Transform.TranslateIncrement))
                    {
                        return(collidableObject);
                    }
                }
                else if (actor3D is SimpleZoneObject)
                {
                    SimpleZoneObject zoneObject = actor3D as SimpleZoneObject;
                    if (this.CollisionPrimitive.Intersects(zoneObject.CollisionPrimitive, this.Transform.TranslateIncrement))
                    {
                        return(zoneObject);
                    }
                }
            }

            return(null);
        }
Exemple #2
0
        public override object GetDeepCopy()
        {
            CollidablePrimitiveObject actor = new CollidablePrimitiveObject("clone - " + ID,                                      //deep
                                                                            this.ActorType,                                       //deep
                                                                            (Transform3D)this.Transform.Clone(),                  //deep
                                                                            (EffectParameters)this.EffectParameters.Clone(),      //deep
                                                                            this.StatusType,                                      //deep
                                                                            this.VertexData,                                      //shallow - its ok if objects refer to the same vertices
                                                                            (ICollisionPrimitive)this.CollisionPrimitive.Clone(), //deep
                                                                            this.objectManager);                                  //shallow - reference


            if (this.ControllerList != null)
            {
                //clone each of the (behavioural) controllers
                foreach (IController controller in this.ControllerList)
                {
                    actor.AttachController((IController)controller.Clone());
                }
            }

            return(actor);
        }