Beispiel #1
0
        private void DrawObject(GameTime gameTime, BillboardPrimitiveObject billboardPrimitiveObject, Camera3D activeCamera)
        {
            if (activeCamera.BoundingFrustum.Intersects(billboardPrimitiveObject.BoundingSphere))
            {
                billboardPrimitiveObject.EffectParameters.SetParameters(activeCamera, billboardPrimitiveObject.BillboardOrientationParameters);
                billboardPrimitiveObject.EffectParameters.SetWorld(billboardPrimitiveObject.GetWorldMatrix());
                billboardPrimitiveObject.VertexData.Draw(gameTime, billboardPrimitiveObject.EffectParameters.Effect);

#if DEBUG
                debugDrawCount++;
#endif
            }
        }
        private void DrawObject(GameTime gameTime, BillboardPrimitiveObject billboardPrimitiveObject)
        {
            Effect effect = billboardPrimitiveObject.Effect as Effect;

            billboardParameters = billboardPrimitiveObject.BillboardParameters;

            //W, V, P, Apply, Draw
            effect.CurrentTechnique = effect.Techniques[billboardParameters.Technique];
            effect.Parameters["World"].SetValue(billboardPrimitiveObject.Transform3D.World);
            effect.Parameters["View"].SetValue((this.Game as Main).CameraManager.ActiveCamera.View);
            effect.Parameters["Projection"].SetValue((this.Game as Main).CameraManager.ActiveCamera.ProjectionParameters.Projection);
            effect.Parameters["Up"].SetValue(billboardPrimitiveObject.Transform3D.Up);
            effect.Parameters["DiffuseTexture"].SetValue(billboardPrimitiveObject.Texture);
            effect.Parameters["Alpha"].SetValue(billboardPrimitiveObject.Alpha);

            if (billboardParameters.BillboardType == BillboardType.Normal)
            {
                effect.Parameters["Right"].SetValue(billboardPrimitiveObject.Transform3D.Right);
            }

            if (billboardParameters.IsScrolling)
            {
                effect.Parameters["IsScrolling"].SetValue(billboardParameters.IsScrolling);
                effect.Parameters["scrollRate"].SetValue(billboardParameters.scrollValue);
            }
            else
            {
                effect.Parameters["IsScrolling"].SetValue(false);
            }

            if (billboardParameters.IsAnimated)
            {
                effect.Parameters["IsAnimated"].SetValue(billboardParameters.IsAnimated);
                effect.Parameters["InverseFrameCount"].SetValue(billboardParameters.inverseFrameCount);
                effect.Parameters["CurrentFrame"].SetValue(billboardParameters.currentFrame);
            }
            else
            {
                effect.Parameters["IsAnimated"].SetValue(false);
            }


            effect.CurrentTechnique.Passes[0].Apply();
            billboardPrimitiveObject.VertexData.Draw(gameTime, effect);
        }