private void Init() { bool collider = false; int count = environmentObjectData.meshMatDatas.Length; for (int i = 0; i < count; i++) { //Debug.Log(i); MeshMatData data = environmentObjectData.meshMatDatas[i]; GameObject child = new GameObject("Mesh"); child.transform.SetParent(transform); child.transform.localScale *= data.scale; child.transform.localPosition = data.posOffset; child.transform.localRotation = Quaternion.identity; child.AddComponent <MeshRenderer>().sharedMaterials = data.mats; child.AddComponent <MeshFilter>().mesh = data.mesh; for (int b = 0; b < data.boxData.Length; b++) { BoxColliderData boxData = environmentObjectData.boxColDatas[data.boxData[b]]; BoxCollider col = child.AddComponent <BoxCollider>(); col.center = boxData.center; col.size = boxData.size; collider = true; } for (int c = 0; c < data.capsuleData.Length; c++) { CapsuleColliderData capData = environmentObjectData.capColDatas[data.capsuleData[c]]; CapsuleCollider col = child.AddComponent <CapsuleCollider>(); col.center = capData.center; col.radius = capData.radius; col.height = capData.height; collider = true; } } if (collider) { gameObject.AddComponent <Rigidbody>().isKinematic = true; //GetComponent<NetworkTransform>().transformSyncMode = NetworkTransform.TransformSyncMode.SyncRigidbody3D; } radius = environmentObjectData.radius; anim = GetComponent <Animator>(); anim.SetTrigger("StartEntrance"); pSystem.Play(); }
public void AddMeshMat(Mesh mesh, Material[] mats, float scale, Vector3 pos, Quaternion rot) { if (meshMatCount >= meshMatDatas.Length) { MeshMatData[] newArr = new MeshMatData[meshMatDatas.Length + 1]; for (int i = 0; i < meshMatDatas.Length; i++) { newArr[i] = meshMatDatas[i]; } meshMatDatas = newArr; } meshMatDatas[meshMatCount] = new MeshMatData(mesh, mats, scale, pos, rot); meshMatCount++; for (int i = 0; i < meshMatDatas.Length; i++) { Debug.Log("Added " + meshMatDatas[i].mesh + ", " + meshMatDatas[i].mats[0]); } }
public TerrainChunk(Vector2 coord, int size, Transform parent, int layer) { position = coord * size; bounds = new Bounds(position, Vector2.one * size); Vector3 positionV3 = new Vector3(position.x, 0, position.y); meshObject = new GameObject("TerrainChunk"); meshObject.layer = layer; MeshRenderer = meshObject.AddComponent <MeshRenderer>(); meshFilter = meshObject.AddComponent <MeshFilter>(); meshObject.transform.position = positionV3; meshObject.transform.SetParent(parent); meshObject.tag = "Ground"; SetVisible(true); MeshMatData data = chunks.mapGen.GetGeneratedData(position, coord); meshFilter.mesh = MeshGen.GenerateTerrainMesh(data.map, 0).CreateMesh(); MeshRenderer.material = data.mat; meshObject.AddComponent <MeshCollider>(); }