public static PaintingModelData createData(GameObject pModelObject, Vector2 pPictureSize) { var lPaintingMesh = new PaintingModelData(); var lMeshFilter = pModelObject.transform.Find("Render").GetComponent<MeshFilter>(); lPaintingMesh.renderMesh.mesh = lMeshFilter.mesh; lPaintingMesh.renderMesh.setTransform(lMeshFilter.transform); var lMeshCollider = pModelObject.GetComponentsInChildren<MeshCollider>(); //var lColliderMeshes = new Mesh[lMeshCollider.Length]; var lColliderMeshes = new ModelData[lMeshCollider.Length]; for (int i = 0; i < lMeshCollider.Length; ++i) { lColliderMeshes[i].mesh = lMeshCollider[i].sharedMesh; lColliderMeshes[i].setTransform(lMeshCollider[i].transform); } lPaintingMesh.colliderMeshes = lColliderMeshes; lPaintingMesh.pictureSize = pPictureSize; return lPaintingMesh; }
public static PaintingModelData createDataFromString(string pStringData) { PaintingModelData lOut = new PaintingModelData(); Hashtable lData = (Hashtable)zzSerializeString.Singleton.unpackToData(pStringData); lOut.pictureSize = (Vector2)lData["pictureSize"]; lOut.renderMesh = createModelDataFromTable((Hashtable)lData["renderMesh"], lOut.pictureSize); ArrayList lColliderMeshesData = (ArrayList)lData["colliderMeshes"]; lOut.colliderMeshes = new ModelData[lColliderMeshesData.Count]; for (int i = 0; i < lColliderMeshesData.Count;++i ) { lOut.colliderMeshes[i] = createModelDataFromTable((Hashtable)lColliderMeshesData[i], lOut.pictureSize); } return lOut; }
public static PaintingMesh create(GameObject lObject,PaintingModelData pData) { //print("GameObject" + lObject.name); Transform lTransform = lObject.transform; var lOut = lObject.GetComponent<PaintingMesh>(); //lOut.modelData = pData; { //图形模型 //var lRenderObject = new GameObject("Render"); var lRenderObjectTransform = lObject.transform.Find("Render"); var lRenderObject = lRenderObjectTransform.gameObject; lOut.paintRenderer = lRenderObject.GetComponent<MeshRenderer>(); lRenderObject.GetComponent<MeshFilter>().mesh = pData.renderMesh.mesh; lRenderObject.transform.parent = lTransform; pData.renderMesh.setToTransform(lRenderObject.transform); } int i = 0; foreach (var lColliderMeshes in pData.colliderMeshes) { //物理模型 var lColliderObject = new GameObject("Collider" + i); lColliderObject.transform.parent = lTransform; var lMeshCollider = lColliderObject.AddComponent<MeshCollider>(); lMeshCollider.convex = true; lMeshCollider.sharedMesh = lColliderMeshes.mesh; lColliderMeshes.setToTransform(lColliderObject.transform); ++i; } return lOut; }