예제 #1
0
        protected override void DeferRenderable(RenderNode renderable)
        {
            // Only accepts models right now for this renderer
            Type type = renderable.GetType();

            if ((type == typeof(SpriteNode)) || (type.IsSubclassOf(typeof(SpriteNode))))
            {
                SpriteNode spriteNode = (renderable as SpriteNode);

                if (spriteNode != null)
                {
                    // Add to sprite pool
                    m_Sprites.Add(spriteNode);
                }
            }
        }
        protected override void DeferRenderable(RenderNode renderable)
        {
            // Only accepts models right now for this renderer
            Type type = renderable.GetType();

            if ( renderable.InheritsFrom<ModelNode>() )
            {
                ModelNode modelNode = (renderable as ModelNode);
                Mesh mesh = modelNode.Mesh;

                if (mesh != null)
                {
                    // Setup mesh
                    SetupMesh(mesh);

                    // Add Mesh
                    m_Meshes.Add(mesh);

                    if (mesh.SubMeshes.Count > 0)
                    {
                        // FOR NOW ADD ALL SUB MESHES TO THE RENDER LIST ( NOT OPTIMISED YET )
                        for (int i = 0; i < mesh.SubMeshes.Count; i++)
                        {
                            SubMesh subMesh = mesh.SubMeshes[i];

                            //if (camera.Frustum.Intersects(subMesh.GlobalBoundingBox))
                            //{
                            m_VisibleMeshes[(int)subMesh.RenderQueue].Add(subMesh);
                            //}
                        }
                    }
                    else
                    {
                        // Otherwise just add the mesh as there are no sub meshses
                        m_VisibleMeshes[(int)mesh.RenderQueue].Add(mesh);
                    }
                }
            }
        }