internal static MyRenderableProxyFlags GetRenderableProxyFlags(RenderFlags flags)
        {
            MyRenderableProxyFlags proxyFlags = MyRenderableProxyFlags.None;

            if (flags.HasFlags(RenderFlags.SkipIfTooSmall))
            {
                proxyFlags |= MyRenderableProxyFlags.SkipIfTooSmall;
            }

            if (flags.HasFlags(RenderFlags.DrawOutsideViewDistance))
            {
                proxyFlags |= MyRenderableProxyFlags.DrawOutsideViewDistance;
            }

            if (flags.HasFlags(RenderFlags.CastShadows))
            {
                proxyFlags |= MyRenderableProxyFlags.CastShadows;
            }

            if (flags.HasFlags(RenderFlags.NoBackFaceCulling))
            {
                proxyFlags |= MyRenderableProxyFlags.DisableFaceCulling;
            }

            if (flags.HasFlags(RenderFlags.SkipInMainView) || !flags.HasFlags(RenderFlags.Visible))
            {
                proxyFlags |= MyRenderableProxyFlags.SkipInMainView;
            }

            return(proxyFlags);
        }
 internal void Clear()
 {
     WorldMatrix           = MatrixD.Zero;
     CommonObjectData      = default(MyObjectDataCommon);
     NonVoxelObjectData    = MyObjectDataNonVoxel.Invalid;
     VoxelCommonObjectData = MyObjectDataVoxelCommon.Invalid;
     Mesh             = LodMeshId.NULL;
     MergedMesh       = MyMergedLodMeshId.NULL;
     Instancing       = InstancingId.NULL;
     DepthShaders     = MyMaterialShadersBundleId.NULL;
     Shaders          = MyMaterialShadersBundleId.NULL;
     ForwardShaders   = MyMaterialShadersBundleId.NULL;
     DrawSubmesh      = default(MyDrawSubmesh);
     PerMaterialIndex = 0;
     SectionSubmeshes = null;
     InstanceCount    = 0;
     StartInstance    = 0;
     SkinningMatrices = null;
     Type             = MyMaterialType.OPAQUE;
     Flags            = 0;
     Lod          = 0;
     ObjectBuffer = null;
     Parent       = null;
     Material     = MyStringId.NullOrEmpty;
 }
        internal static MyRenderableProxyFlags GetRenderableProxyFlags(RenderFlags flags)
        {
            MyRenderableProxyFlags proxyFlags = MyRenderableProxyFlags.None;

            if ((flags & RenderFlags.SkipIfTooSmall) == RenderFlags.SkipIfTooSmall)
            {
                proxyFlags |= MyRenderableProxyFlags.SkipIfTooSmall;
            }

            if ((flags & RenderFlags.DrawOutsideViewDistance) == RenderFlags.DrawOutsideViewDistance)
            {
                proxyFlags |= MyRenderableProxyFlags.DrawOutsideViewDistance;
            }

            if ((flags & RenderFlags.CastShadows) == RenderFlags.CastShadows)
            {
                proxyFlags |= MyRenderableProxyFlags.CastShadows;
            }

            if ((flags & RenderFlags.NoBackFaceCulling) == RenderFlags.NoBackFaceCulling)
            {
                proxyFlags |= MyRenderableProxyFlags.DisableFaceCulling;
            }

            return(proxyFlags);
        }
        internal override void Construct()
        {
            base.Construct();

            Type = MyActorComponentEnum.Renderable;
            //m_mesh = null;
            m_lods = null;
            m_cullProxy = MyProxiesFactory.CreateCullProxy();
            m_btreeProxy = -1;

            Mesh = MeshId.NULL;
            Instancing = InstancingId.NULL;
            
            m_instanceCount = 0;
            m_startInstance = 0;

            m_isRenderedStandalone = true;

            m_keyColor = Vector3.One;
            m_objectDithering = 0;

            m_renderableProxiesForLodTransition = null;

            m_lodTransitionState = 0;
            m_lod = 0;

            m_voxelLod = -1;
            m_additionalFlags = 0;

            ModelProperties = new Dictionary<MyEntityMaterialKey, MyModelProperties>();
        }
 internal static bool HasFlags(this MyRenderableProxyFlags proxyFlags, MyRenderableProxyFlags flag)
 {
     return((proxyFlags & flag) == flag);
 }
 internal void Clear()
 {
     WorldMatrix = MatrixD.Zero;
     CommonObjectData = default(MyObjectDataCommon);
     NonVoxelObjectData = MyObjectDataNonVoxel.Invalid;
     VoxelCommonObjectData = MyObjectDataVoxelCommon.Invalid;
     Mesh = LodMeshId.NULL;
     MergedMesh = MyMergedLodMeshId.NULL;
     Instancing = InstancingId.NULL;
     DepthShaders = MyMaterialShadersBundleId.NULL;
     Shaders = MyMaterialShadersBundleId.NULL;
     ForwardShaders = MyMaterialShadersBundleId.NULL;
     DrawSubmesh = default(MyDrawSubmesh);
     PerMaterialIndex = 0;
     SectionSubmeshes = null;
     InstanceCount = 0;
     StartInstance = 0;
     SkinningMatrices = null;
     Type = MyMaterialType.OPAQUE;
     Flags = 0;
     Lod = 0;
     ObjectBuffer = null;
     Parent = null;
     Material = MyMeshMaterialId.NULL;
     UnusedMaterials = UnusedMaterials ?? new HashSet<string>();
     UnusedMaterials.Clear();
 }
 internal static bool HasFlags(this MyRenderableProxyFlags proxyFlags, MyRenderableProxyFlags flag)
 {
     return (proxyFlags & flag) == flag;
 }