コード例 #1
0
        public virtual void DoMousePick(GameTime gameTime)
        {
            if (game.CameraManager.ActiveCamera != null)
            {
                Vector3 pos, normal;

                Actor pickedActor = game.MouseManager.GetPickedObject(
                    game.CameraManager.ActiveCamera,
                    GameData.FirstPersonStartPickDistance /*5 == how far from 1st Person collidable to start testing for collisions - should always exceed capsule collision skin radius*/,
                    1000, out pos, out normal);

                //am i picking something collidable that isnt the ground?
                if ((pickedActor != null) && (pickedActor.ObjectType != GDLibrary.ObjectType.CollidableGround))
                {
                    ModelObject nextPickedModelObject = pickedActor as ModelObject;

                    //make mouse icon change color on collision
                    this.Color = Color.Red;
                    this.SourceRectangle = new Microsoft.Xna.Framework.Rectangle(128, 0, 128, 128);
                    this.Transform2D.Rotation += 0.1f * gameTime.ElapsedGameTime.Milliseconds;

                    //we could publish an event - remove object, play a sound etc

                    //picking a new object?
                    if (nextPickedModelObject != lastPickedModelObject)
                    {
                        //set the last back to original color
                        if (this.lastPickedModelObject != null)
                        {
                            this.lastPickedModelObject.Color = this.lastPickedModelObject.OriginalColor;
                            this.lastPickedModelObject.Alpha = this.lastPickedModelObject.OriginalAlpha;
                        }

                        //set next to picked color
                        if (nextPickedModelObject != null)
                        {
                            nextPickedModelObject.Color = Color.Red;
                            nextPickedModelObject.Alpha = 0.5f;
                        }
                    }

                    this.lastPickedModelObject = nextPickedModelObject;
                }
                else
                {
                    //if no collision then set mouse icon back to white etc
                    this.Color = Color.White;
                    this.SourceRectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 128, 128);
                    this.Transform2D.Rotation = 0;
                }
            }
        }
コード例 #2
0
        //Body, wait for engine updates
        #endregion

        #region Constructors
        public MoveableObject(ModelObject modelObject, IController controller) :
            base(modelObject)
        {
            ControllerList.Add(controller);
        }
コード例 #3
0
 public ModelObject(ModelObject modelObject) :
     this(modelObject.ID, modelObject.ActorType, modelObject.StatusType,
          modelObject.Transform3D, modelObject.EffectParameters, modelObject.model)
 {
 }