//public void init( MeshCollider c, byte[] idList, _StructurePart3.enType t ) public void init(MeshCollider c, ushort[] idList, _StructurePart3.enType t) { collider = c; triangleToPartId.init(idList); type = t; if (!structure.isReplicated) { // コライダのメッシュをシェアしてないものは、最初からメッシュ作成済みとする。 colliderTriangles = collider.sharedMesh.triangles; triangleToPartId.alloc(structure.parts); hitmesh = collider.sharedMesh; } else if (false) { // 最初からメッシュ作ってしまうモード colliderTriangles = collider.sharedMesh.triangles; triangleToPartId.alloc(structure.parts); var oldmesh = collider.sharedMesh; var newmesh = new Mesh(); newmesh.MarkDynamic(); newmesh.bounds = oldmesh.bounds; newmesh.vertices = oldmesh.vertices; newmesh.triangles = colliderTriangles; collider.enabled = false; collider.sharedMesh = newmesh; collider.enabled = true; hitmesh = newmesh; } }
GameObject buildChildWithCollider(_StructurePart3.enType hitType, Transform tfParent) { var mesh = meshBuilder.hits[(int)hitType].mesh; if (mesh != null) { var go = new GameObject(hitType.ToString()); go.layer = getPartLayer(hitType); go.transform.SetParent(tfParent, false); var cd = go.AddComponent <MeshCollider>(); cd.sharedMesh = mesh; return(go); } return(null); }
static public int getPartLayer(_StructurePart3.enType hitType) { return((int)hitType + UserLayer._bgDetail); }
/// <summary> /// 破壊コントローラーを取得する。 /// </summary> /// <param name="partType">取得したい破壊コントローラーを示すタイプ</param> /// <returns>破壊コントローラー</returns> public StructureMeshBreakController3 getBreaker(_StructurePart3.enType partType) { return(breakers[(int)partType]); }