internal MyLodModel AddLOD(float distance, string model) { try { MyLodModel lodModel = new MyLodModel(); if (!string.IsNullOrEmpty(model)) { lodModel.Model = MyRenderModels.GetModel(model); if (lodModel.Model.LoadState == LoadState.Error) { return(null); } lodModel.Model.CloneMaterials(lodModel.MeshMaterials); } lodModel.Distance = distance; m_lods.Add(lodModel); return(lodModel); } catch (Exception e) { throw new ApplicationException("Error adding lod: " + model + ", distance: " + distance, e); } }
MyRenderModel AddLODs(string model) { MyLodModel lodModel = AddLOD(0, model); if (lodModel == null) { return(null); } foreach (var lodDesc in lodModel.Model.LODs) { string lodModelPath = lodDesc.Model; if (String.IsNullOrEmpty(Path.GetExtension(lodModelPath))) { //Debug.Fail("Missing LOD file extension: " + lodModelPath); lodModelPath += ".mwm"; } lodModelPath = GetLodPath(model, lodModelPath); if (lodDesc.RenderQualityList == null || lodDesc.RenderQualityList.Contains((int)MyRenderConstants.RenderQualityProfile.RenderQuality)) { AddLOD(lodDesc.Distance, lodModelPath); } } return(lodModel.Model); }
public MyLodModel AddData(MyRenderMessageSetRenderEntityData msg) { System.Diagnostics.Debug.Assert(msg.ModelData.Sections.Count > 0, "Invalid data"); MyLodModel lodModel = new MyLodModel(); lodModel.Model = new MyRenderModel(MyMeshDrawTechnique.MESH); ProfilerShort.Begin("LoadBuffers"); lodModel.Model.LoadBuffers(msg.ModelData); ProfilerShort.BeginNextBlock("CloneMaterials"); lodModel.Model.CloneMaterials(lodModel.MeshMaterials); ProfilerShort.End(); lodModel.Distance = 0; m_localAABB = (BoundingBoxD)lodModel.Model.BoundingBox; m_localVolume = (BoundingSphereD)lodModel.Model.BoundingSphere; m_localVolumeOffset = (Vector3D)lodModel.Model.BoundingSphere.Center; m_volume = m_localVolume; m_lods.Add(lodModel); m_isDataSet = true; return(lodModel); }
public MyLodModel AddData(MyRenderMessageSetRenderEntityData msg) { System.Diagnostics.Debug.Assert(msg.ModelData.Sections.Count > 0, "Invalid data"); MyLodModel lodModel = new MyLodModel(); lodModel.Model = new MyRenderModel(MyMeshDrawTechnique.MESH); ProfilerShort.Begin("LoadBuffers"); lodModel.Model.LoadBuffers(msg.ModelData); ProfilerShort.BeginNextBlock("CloneMaterials"); lodModel.Model.CloneMaterials(lodModel.MeshMaterials); ProfilerShort.End(); lodModel.Distance = 0; m_localAABB = (BoundingBoxD)lodModel.Model.BoundingBox; m_localVolume = (BoundingSphereD)lodModel.Model.BoundingSphere; m_localVolumeOffset = (Vector3D)lodModel.Model.BoundingSphere.Center; m_volume = m_localVolume; m_lods.Add(lodModel); m_isDataSet = true; return lodModel; }
internal MyLodModel AddLOD(float distance, string model) { try { MyLodModel lodModel = new MyLodModel(); if (!string.IsNullOrEmpty(model)) { lodModel.Model = MyRenderModels.GetModel(model); if (lodModel.Model.LoadState == LoadState.Error) { return null; } lodModel.Model.CloneMaterials(lodModel.MeshMaterials); } lodModel.Distance = distance; m_lods.Add(lodModel); return lodModel; } catch (Exception e) { throw new ApplicationException("Error adding lod: " + model + ", distance: " + distance, e); } }