Exemplo n.º 1
0
 public void Draw(GameTime gameTime, Matrix view, Matrix projection)
 {
     if (p != null)
     {
         p.Draw(gameTime, view, projection);
     }
 }
Exemplo n.º 2
0
        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();
            }
        }