/*private void DrawBranchPoints(Color color) * { * ivyInfo = (IvyInfo)target; * Handles.color = color; * * RTBakedIvy bakedIvy = ivyInfo.GetComponent<RTBakedIvy>(); * * BranchContainer branch = bakedIvy.ivyContainer.branches[1]; * * //BranchContainer currentBranch = ivyInfo.infoPool.ivyContainer.branches[i]; * Handles.color = Color.blue; * Handles.CubeHandleCap(0, branch.branchPoints[0].point, Quaternion.identity, 0.0025f, EventType.Repaint); * for (int j = 1; j < branch.branchPoints.Count; j++) * { * Handles.color = color; * Handles.CubeHandleCap(0, branch.branchPoints[j].point, Quaternion.identity, 0.0025f, EventType.Repaint); * } * * }*/ private void DrawBuildingMesh(Color color) { ivyInfo = (IvyInfo)target; Handles.color = color; RuntimeBakedIvy bakedIvy = ivyInfo.GetComponent <RuntimeBakedIvy>(); if (bakedIvy != null && bakedIvy.meshBuilder != null) { RTMeshData meshData = bakedIvy.meshBuilder.buildingMeshData; int maxVertices = meshData.VertexCount(); int initIndex = meshData.VertexCount() - 200; initIndex = Mathf.Clamp(initIndex, 0, int.MaxValue); maxVertices = Mathf.Clamp(maxVertices, 0, 100); for (int i = 0; i < meshData.VertexCount(); i++) { Vector3 pos = ivyInfo.transform.TransformPoint(meshData.vertices[i]); Handles.CubeHandleCap(0, pos, Quaternion.identity, 0.0025f, EventType.Repaint); Handles.Label(pos, "" + i); } } //ivyMesh.vertices.Length - 25 }
private void DrawProcessedMeshVertices(Color[] colorPerBranch) { ivyInfo = (IvyInfo)target; RuntimeBakedIvy bakedIvy = ivyInfo.GetComponent <RuntimeBakedIvy>(); RTMeshData processedMeshData = bakedIvy.meshBuilder.processedMeshData; List <List <int> > verticesIndicesPerBranch = bakedIvy.meshBuilder.processedVerticesIndicesPerBranch; int verticesPerLoop = bakedIvy.meshBuilder.ivyParameters.sides + 1; int initIndex = verticesIndicesPerBranch.Count - (verticesPerLoop * 4); initIndex = Mathf.Clamp(initIndex, 0, int.MaxValue); Handles.color = Color.yellow; for (int j = 0; j < bakedIvy.meshBuilder.processedMeshData.VertexCount(); j++) { Vector3 vertex = bakedIvy.meshBuilder.processedMeshData.vertices[j]; Vector3 pos = ivyInfo.transform.TransformPoint(vertex); Handles.CubeHandleCap(0, pos, Quaternion.identity, 0.01f, EventType.Repaint); } for (int j = 0; j < verticesIndicesPerBranch[verticesIndicesPerBranch.Count - 1].Count; j++) { int index = verticesIndicesPerBranch[verticesIndicesPerBranch.Count - 1][j]; Vector3 pos = ivyInfo.transform.TransformPoint(processedMeshData.vertices[index]); Handles.CubeHandleCap(0, pos, Quaternion.identity, 0.01f, EventType.Repaint); } }
public void PrepareRuntimeBaked() { RTIvy rtIvy = ivyGO.GetComponent <RTIvy>(); RuntimeBakedIvy rtBakedIvy = (RuntimeBakedIvy)rtIvy; RuntimeGrowthParameters defaultGrowthParameters = new RuntimeGrowthParameters(); IvyController ivyController = ivyGO.GetComponent <IvyController>(); if (rtIvy == null) { rtBakedIvy = ivyGO.GetComponent <RuntimeBakedIvy>(); if (rtBakedIvy == null) { rtBakedIvy = ivyGO.AddComponent <RuntimeBakedIvy>(); } if (ivyController == null) { ivyController = ivyGO.AddComponent <IvyController>(); } ivyController.rtIvy = rtBakedIvy; ivyController.ivyContainer = currentIvyInfo.infoPool.ivyContainer; ivyController.ivyParameters = currentIvyInfo.infoPool.ivyParameters; ivyController.growthParameters = defaultGrowthParameters; rtBakedIvy.meshFilter = rtBakedIvy.GetComponent <MeshFilter>(); rtBakedIvy.meshRenderer = rtBakedIvy.GetComponent <MeshRenderer>(); if (rtBakedIvy.mrProcessedMesh == null) { GameObject processedMesh = new GameObject(); processedMesh.name = "processedMesh"; processedMesh.transform.parent = rtBakedIvy.transform; processedMesh.transform.localPosition = Vector3.zero; processedMesh.transform.localRotation = Quaternion.identity; MeshRenderer mrProcessedMesh = processedMesh.AddComponent <MeshRenderer>(); MeshFilter mfProcessedMesh = processedMesh.AddComponent <MeshFilter>(); rtBakedIvy.mrProcessedMesh = mrProcessedMesh; rtBakedIvy.mfProcessedMesh = mfProcessedMesh; } } ivyController.ivyParameters = currentIvyInfo.infoPool.ivyParameters; }
private void DrawBranchVertices(Color color) { ivyInfo = (IvyInfo)target; Handles.color = color; RuntimeBakedIvy bakedIvy = ivyInfo.GetComponent <RuntimeBakedIvy>(); //Mesh ivyMesh = bakedIvy.meshFilter.mesh; //ivyMesh.vertices.Length - 25 for (int i = 0; i < bakedIvy.meshBuilder.buildingMeshData.VertexCount(); i++) { Vector3 pos = ivyInfo.transform.TransformPoint(bakedIvy.meshBuilder.buildingMeshData.vertices[i]); Handles.CubeHandleCap(0, pos, Quaternion.identity, 0.01f, EventType.Repaint); } }