public void Draw(GameTime gameTime, Matrix view, Matrix projection) { if (p != null) { p.Draw(gameTime, view, projection); } }
public void Draw(GameTime gameTime, Matrix view, Matrix projection) { if (vorgänger != null) { vorgänger.Draw(gameTime, view, projection); } foreach (ModelMesh mesh in partikelmodel.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { part.Effect = effect; float rot = 0; if (richtung != new Vector3(0, 0, 0)) { if (richtung == new Vector3(0, 0, 1) || richtung == new Vector3(0, 0, -1)) { rot = 0; horizontal = true; } else { rot = 3.141f / 2f; horizontal = false; } } else { if (horizontal) { rot = 0; } else { rot = 3.141f / 2f; } } effect.Parameters["World"].SetValue(Matrix.CreateScale(0.09f, 0.09f, 1) * Matrix.CreateRotationY(rot) * Matrix.CreateTranslation(position + new Vector3(0, 1f, 0))); effect.Parameters["View"].SetValue(view); effect.Parameters["Projection"].SetValue(projection); switch (farbe.mycolor) { case 000000: effect.Parameters["AmbientColor"].SetValue(new Vector4(1, 1, 1, 1)); break; case 000001: effect.Parameters["AmbientColor"].SetValue(new Vector4(1, 0, 0, 1)); break; case 000010: effect.Parameters["AmbientColor"].SetValue(new Vector4(1, 1, 0, 1)); break; case 000100: effect.Parameters["AmbientColor"].SetValue(new Vector4(0, 1, 0, 1)); break; case 001000: effect.Parameters["AmbientColor"].SetValue(new Vector4(0, 1, 1, 1)); break; case 010000: effect.Parameters["AmbientColor"].SetValue(new Vector4(0, 0, 1, 1)); break; case 100000: effect.Parameters["AmbientColor"].SetValue(new Vector4(1, 0, 1, 1)); break; case 000011: effect.Parameters["AmbientColor"].SetValue(new Vector4(1, 0.5f, 0, 1)); break; case 000110: effect.Parameters["AmbientColor"].SetValue(new Vector4(0.5f, 1, 0, 1)); break; case 001100: effect.Parameters["AmbientColor"].SetValue(new Vector4(0, 1, 0.5f, 1)); break; case 011000: effect.Parameters["AmbientColor"].SetValue(new Vector4(0, 0.5f, 1, 1)); break; case 110000: effect.Parameters["AmbientColor"].SetValue(new Vector4(0.5f, 0, 1, 1)); break; case 100001: effect.Parameters["AmbientColor"].SetValue(new Vector4(1, 0, 0.5f, 1)); break; default: effect.Parameters["AmbientColor"].SetValue(new Vector4(0, 0, 0, 1)); break; } Matrix worldInverseTransposeMatrix = Matrix.Transpose(Matrix.Invert(mesh.ParentBone.Transform * Matrix.CreateTranslation(position + new Vector3(0, 0.5f, 0)))); effect.Parameters["WorldInverseTranspose"].SetValue(worldInverseTransposeMatrix); } mesh.Draw(); } }