コード例 #1
0
        void updateChaseLight(GameTime gameTime)
        {
            KeyboardState keyState  = Keyboard.GetState();
            Vector3       rotChange = new Vector3(0, 0, 0);

            if (keyState.IsKeyDown(Keys.Up))
            {
                rotChange += new Vector3(1, 0, 0);
            }
            if (keyState.IsKeyDown(Keys.Down))
            {
                rotChange += new Vector3(-1, 0, 0);
            }
            if (keyState.IsKeyDown(Keys.Left))
            {
                rotChange += new Vector3(0, 1, 0);
            }
            if (keyState.IsKeyDown(Keys.Right))
            {
                rotChange += new Vector3(0, -1, 0);
            }
            chaseLight.Rotate(rotChange * .025f);
            chaseLight.Move(models[0].Position,
                            models[0].Rotation);
            chaseLight.Update();
            mat.SetEffectParameters(effect);
        }
コード例 #2
0
        public void Draw(Matrix View, Matrix Projection, Vector3 CameraPosition)
        {
            // Calculate the base transformation by combining
            // translation, rotation, and scaling
            Matrix baseWorld = Matrix.CreateScale(Scale)
                               * Matrix.CreateFromYawPitchRoll(
                Rotation.Y, Rotation.X, Rotation.Z)
                               * Matrix.CreateTranslation(Position);

            foreach (ModelMesh mesh in Model.Meshes)
            {
                Matrix localWorld = modelTransforms[mesh.ParentBone.Index]
                                    * baseWorld;

                foreach (ModelMeshPart meshPart in mesh.MeshParts)
                {
                    Effect effect = meshPart.Effect;

                    if (effect is BasicEffect)
                    {
                        ((BasicEffect)effect).World      = localWorld;
                        ((BasicEffect)effect).View       = View;
                        ((BasicEffect)effect).Projection = Projection;

                        if (enableLighting)
                        {
                            ((BasicEffect)effect).EnableDefaultLighting();
                        }
                    }
                    else
                    {
                        setEffectParameter(effect, "World", localWorld);
                        setEffectParameter(effect, "View", View);
                        setEffectParameter(effect, "Projection", Projection);
                        setEffectParameter(effect, "CameraPosition", CameraPosition);

                        Material.SetEffectParameters(effect);
                    }
                }

                mesh.Draw();
            }
        }