internal void InitInternal(MyModels models, bool isVisible, MyVisibilityExtFlags visibilityExt, MyCompatibilityDataForTheOldPipeline compatibilityData) { Models = models; KeyColor = new HalfVector3(); m_instanceMaterials = MyObjectPoolManager.Allocate <MyInstanceMaterialList>(); int instanceMaterialsCount = models.StandardModel.GetUniqueMaterialsCount(); // the other models do not use this mechanism m_instanceMaterials.SetSize(instanceMaterialsCount); for (int i = 0; i < instanceMaterialsCount; i++) { m_instanceMaterials.Set(i, MyInstanceMaterial.Default); } m_cpuCulledEntity = MyObjectPoolManager.Allocate <MyCpuCulledEntity>(); // Bounding entity will be just registered, bounding box will be updated in the loopback OnAabbChange() BoundingBoxD boxTemporary = new BoundingBoxD(models.StandardModel.BoundingBox.Min, models.StandardModel.BoundingBox.Max); m_cpuCulledEntity.Register(boxTemporary, this); m_visibilityStrategy.Init(isVisible, visibilityExt); SetSingleInstanceTransformStrategy(); m_lodStrategy.Init(); Owner.SetMatrix(ref MatrixD.Identity); Owner.SetLocalAabb(models.StandardModel.BoundingBox); CompatibilityDataForTheOldPipeline = compatibilityData; }
public static void Clear(MyInstanceMaterialList culledEntity) { if (culledEntity.m_explicitInstanceMaterials != null) { for (int i = 0; i < culledEntity.m_explicitInstanceMaterials.Length; i++) { culledEntity.m_explicitInstanceMaterials[i] = false; } } }