Ejemplo n.º 1
0
        public void Draw(EffectTechnique technique)
        {
            if (vertices.Count > 0)
            {
                UniversalEffect effect = RendererAssetPool.UniversalEffect;
                if (technique == null)
                {
                    effect.CurrentTechnique = this.Technique;
                }
                else
                {
                    effect.CurrentTechnique = technique;
                }

                Ready();
                effect.Begin();
                foreach (EffectPass pass in effect.CurrentTechnique.Passes)//TODO1 remove this when shading i
                {
                    pass.Begin();
                    GraphicsDevice device = GraphicOptions.graphics.GraphicsDevice;
                    device.VertexDeclaration = vertDeclaration;
                    device.Vertices[0].SetSource(vertexBuffer, 0, VertexPositionColorTexture.SizeInBytes);
                    device.DrawUserPrimitives <VertexPositionColorTexture>(
                        PrimitiveType.LineList, vertices.ToArray(), 0, 2);
                    pass.End();
                }
                effect.End();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Draws all vertices in the vertex buffer.
        /// </summary>
        ///
        public override void Draw(EffectTechnique technique)
        {
            UniversalEffect effect = RendererAssetPool.UniversalEffect;

            if (technique == effect.Techniques.UseDefault)
            {
                effect.CurrentTechnique = RendererAssetPool.UniversalEffect.Techniques.Colored;
            }
            else
            {
                effect.CurrentTechnique = technique;
            }

            effect.ColorParameters.TransparencyEnabled = this.TransparencyEnabled && GraphicOptions.TransparentWalls;

            effect.Begin();
            foreach (EffectPass pass in effect.CurrentTechnique.Passes)//TODO1 remove this when shading i
            {
                pass.Begin();
                GraphicsDevice device = GraphicOptions.graphics.GraphicsDevice;
                device.VertexDeclaration = vertDeclaration;
                device.Vertices[0].SetSource(vertexBuffer, 0, VertexPositionColor.SizeInBytes);
                device.DrawUserPrimitives <VertexPositionColor>(
                    PrimitiveType.TriangleStrip, vertices.ToArray(), 0, 2);
                pass.End();
            }
            effect.End();
        }
Ejemplo n.º 3
0
        public void ConfigureEffect()
        {
            UniversalEffect effect = RendererAssetPool.UniversalEffect;


            effect.LightParameters.EnableLighting = GraphicOptions.ShadingSupport;
            effect.ShadowParameters.EnableShadows = RendererAssetPool.DrawShadows;

            //Light Parameters
            effect.LightParameters.Position   = worldLight.Position;
            effect.LightParameters.View       = worldLight.View;
            effect.LightParameters.Projection = worldLight.Projection;

            effect.LightParameters.Color = lightColor;

            //Camera Parameters
            effect.CameraParameters.Position   = CurrentCamera.Position;
            effect.CameraParameters.Projection = CurrentCamera.Projection;
            effect.CameraParameters.View       = CurrentCamera.View;

            //World Parameters
            effect.WorldParameters.WorldMatrix = Matrix.Identity;
            if (!GraphicOptions.ShadingSupport)
            {
                AmbientColor = Color.White;
            }
            effect.LightParameters.AmbientColor = AmbientColor;
            if (RendererAssetPool.ParticleEffect != null)
            {
                RendererAssetPool.ParticleEffect.Parameters["xAmbient"].SetValue(AmbientColor.ToVector4());
            }
        }
Ejemplo n.º 4
0
        public void ConfigureShadowEffect()
        {
            UniversalEffect effect = RendererAssetPool.UniversalEffect;

            effect.CurrentTechnique            = effect.Techniques.ShadowMap;
            effect.WorldParameters.WorldMatrix = Matrix.Identity;
            effect.LightParameters.Position    = worldLight.Position;
            effect.LightParameters.View        = worldLight.View;
            effect.LightParameters.Projection  = worldLight.Projection;
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="graphics">The GraphicsDeviceManager for the EntityRenderer to use. </param>
 /// <param name="content">The ContentManager for the EntityRenderer to use.</param>
 public EntityRenderer(GraphicsDeviceManager graphics, ContentManager content)
 {
     options          = new GraphicOptions(graphics, content);
     sceneList        = new List <Scene>();
     sceneIdGenerator = new LowestAvailableID();
     RendererAssetPool.UniversalEffect = UniversalEffect.LoadEffect(content);
     activeScene            = new Scene();
     GraphicOptions.Content = content;
     sceneList.Add(activeScene);
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Draws the model using Absolute Bone Positioning
        /// </summary>
        public override void Draw(EffectTechnique technique)
        {
            UniversalEffect effect = RendererAssetPool.UniversalEffect;

            if (technique == effect.Techniques.UseDefault)
            {
                effect.CurrentTechnique = effect.Techniques.TexturedWrap;
            }
            else
            {
                effect.CurrentTechnique = technique;
            }

            //Set transparent if blocking view
            effect.ColorParameters.TransparencyEnabled = this.TransparencyEnabled && GraphicOptions.TransparentWalls;

            bool usingAnimation = false;

            if (animationPlayer != null)
            {
                effect.SkinningParameters.Bones          = animationPlayer.GetSkinTransforms();
                effect.SkinningParameters.IsSkinnedModel = true;
                usingAnimation = true;
            }
            foreach (ModelMesh mesh in model.Meshes)
            {
                if (animationPlayer == null)
                {
                    effect.WorldParameters.WorldMatrix = boneTransforms[mesh.ParentBone.Index];
                }

                bool switchColor = false;

                if (mesh.Name.Contains("Color"))
                {
                    effect.ColorParameters.ColorToUse         = meshColor;
                    effect.ColorParameters.ForceColorToStored = true;
                    switchColor = true;
                }

                effect.TextureParameters.Texture = mesh.Tag as Texture2D;

                Texture2D mappedTexture;
                if (textureMap.TryGetValue(mesh.Name, out mappedTexture))
                {
                    effect.TextureParameters.Texture = mappedTexture;
                }

                /*
                 * foreach (KeyValuePair<string, Texture2D> mapping in textureMap)
                 * {
                 *  if (mapping.Key == mesh.Name)
                 *  {
                 *      effect.TextureParameters.Texture = mapping.Value;
                 *      break;
                 *  }
                 * }*/

                mesh.Draw();

                if (switchColor == true)
                {
                    effect.ColorParameters.ForceColorToStored = false;
                }
            }

            if (usingAnimation)
            {
                effect.SkinningParameters.IsSkinnedModel = false;
            }
            effect.WorldParameters.WorldMatrix = Matrix.Identity;
        }