private bool IsMeshExist(GEOMETRYTYPE meshType, out GeometryMesh mesh, List <System.Object> param = null) { bool bRet = false; mesh = null; if (null == m_MeshTbl) { return(false); } foreach (var item in m_MeshTbl) { if (null == item) { continue; } if ( (item.Type == meshType) && item.IsMeshEqual(param) ) { mesh = item; break; } } return(bRet); }
public void ReleaseMesh(GEOMETRYTYPE meshType, List <System.Object> param = null) { GeometryMesh geometryMesh = null; if (IsMeshExist(meshType, out geometryMesh, param = null)) { if ( (geometryMesh != null) && (geometryMesh.DrawCounter > 0) ) { geometryMesh.DrawCounter--; } } return; }
public void GetMesh(GEOMETRYTYPE meshType, out Mesh realMesh, List <System.Object> param = null) { realMesh = null; GeometryMesh geometryMesh = null; if (!IsMeshExist(meshType, out geometryMesh, param)) { CreateNewMesh(meshType, out geometryMesh, param); } if (geometryMesh != null) { realMesh = geometryMesh.RealMesh; geometryMesh.DrawCounter++; } return; }
private void CreateNewMesh(GEOMETRYTYPE meshType, out GeometryMesh geometryMesh, List <System.Object> param = null) { geometryMesh = null; if (null == m_MeshTbl) { return; } do { if (IsMeshExist(meshType, out geometryMesh, param)) { break; } switch (meshType) { case GEOMETRYTYPE.GEOMETRY_TYPE_TAPER: geometryMesh = new TaperMesh(); break; case GEOMETRYTYPE.GEOMETRY_TYPE_RING: geometryMesh = new RingMesh(); break; case GEOMETRYTYPE.GEOMETRY_TYPE_SECTOR: geometryMesh = new SectorMesh(param); break; default: break; } if (geometryMesh != null) { m_MeshTbl.Add(geometryMesh); } } while (false); return; }
//private void DrawGeometryObjectWithCamera(string id, GEOMETRYTYPE type, Quaternion roration, Vector3 pos, Vector3 size, Material mat, int layer, Camera cam) //{ // GeometryObject obj = null; // if ( // (null == m_ObjectTbl) // && string.IsNullOrEmpty(id) // ) // { // return; // } // if (!m_CanDrawObject) // { // Debug.LogError("未执行DrawBegin"); // return; // } // CreateGeometryObj(id, type, roration, pos, size, mat, layer, out obj); // if(obj != null) // { // obj.UpdateCustomStatus(cam); // } //} private void DrawGeometryObject(string id, GEOMETRYTYPE type, Quaternion roration, Vector3 pos, Vector3 size, Material mat, int layer, out GeometryObject obj, List <object> param = null) { obj = null; if ( (null == m_ObjectTbl) && string.IsNullOrEmpty(id) ) { return; } if (!m_CanDrawObject) { Debug.LogError("未执行DrawBegin"); return; } CreateGeometryObj(id, type, roration, pos, size, mat, layer, out obj, param); }
private void CreateGeometryObj(string id, GEOMETRYTYPE type, Quaternion roration, Vector3 pos, Vector3 size, Material mat, int layer, out GeometryObject obj, List <object> param = null) { obj = null; if (string.IsNullOrEmpty(id)) { return; } if (!IsObjExist(id, out obj)) { switch (type) { case GEOMETRYTYPE.GEOMETRY_TYPE_CUBE: obj = new CubeObject(id, roration, pos, size, mat, layer); break; case GEOMETRYTYPE.GEOMETRY_TYPE_TAPER: obj = new TaperObject(id, roration, pos, size, mat, layer); break; case GEOMETRYTYPE.GEOMETRY_TYPE_AXIS: obj = new AxisObject(id, roration, pos, size, mat, layer); break; case GEOMETRYTYPE.GEOMETRY_TYPE_TEXT: obj = new TextObject(id, roration, pos, size, mat, layer); break; case GEOMETRYTYPE.GEOMETRY_TYPE_RING: obj = new RingObject(id, roration, pos, size, mat, layer); break; case GEOMETRYTYPE.GEOMETRY_TYPE_SECTOR: obj = new SectorObject(id, roration, pos, size, mat, layer, param); break; case GEOMETRYTYPE.GEOMETRY_TYPE_SPHERE: obj = new SphereObject(id, roration, pos, size, mat, layer); break; default: break; } if (obj != null) { obj.DrawCounter++; m_ObjectTbl.Add(obj); } } else { if (obj != null) { obj.Rotation = roration; obj.Position = pos; obj.Scale = size; obj.DefaultMat = mat; obj.Layer = layer; obj.DrawCounter++; } } }