public override void GetRenderElements(MyLodTypeEnum lodTypeEnum, List <MyRender.MyRenderElement> elements, List <MyRender.MyRenderElement> transparentElements)
        {
            if (MyRender.CurrentRenderSetup.CallerID.HasValue && MyRender.CurrentRenderSetup.CallerID.Value == MyRenderCallerEnum.EnvironmentMap && this.EntityDithering > 0)
            {
                return;
            }

            Debug.Assert(m_isDataSet, "Data is not set, have you forgotten to send SetRenderEntityData message?");

            MyRenderModel currentModel = m_lods[0].Model;
            List <MyRenderMeshMaterial> currentMaterials = m_lods[0].MeshMaterials;

            var volume   = WorldVolume;
            var lodIndex = 0;

            if (lodTypeEnum == MyLodTypeEnum.LOD_NEAR)
            {
            }
            else
            if (lodTypeEnum == MyLodTypeEnum.LOD0)
            {
                if (m_lods.Count > 1)
                {
                    var distance = MyUtils.GetSmallestDistanceToSphereAlwaysPositive(ref MyRenderCamera.Position, ref volume);

                    if (distance > MyRenderCamera.FAR_PLANE_DISTANCE)
                    {
                        return;
                    }

                    for (int i = 1; i < m_lods.Count; i++)
                    {
                        var lod = m_lods[i];
                        if (distance < lod.Distance)
                        {
                            break;
                        }

                        currentModel     = lod.Model;
                        currentMaterials = lod.MeshMaterials;
                        lodIndex         = i;
                    }
                }
            }
            else
            {
                return;     //nothing to render in LOD1
            }
            if (currentModel == null)
            {
                return;
            }

            int instanceCount = m_instanceBuffer != null ? m_instanceCount : 1;

            MyRender.ModelTrianglesCountStats += currentModel.GetTrianglesCount() * instanceCount;

            MyPerformanceCounter.PerCameraDrawWrite.EntitiesRendered++;

            CollectRenderElements(elements, transparentElements, currentModel, currentMaterials, lodIndex);
        }