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