Пример #1
0
        /*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
        }
Пример #2
0
        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;
        }
Пример #4
0
        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);
            }
        }