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); }
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(); } }