Пример #1
0
        private Mesh GetMesh(int index)
        {
            SgtHelper.ClearCapacity(positions, 1024);
            SgtHelper.ClearCapacity(coords0, 1024);
            SgtHelper.ClearCapacity(indices, 1024);
            SgtHelper.ClearCapacity(colors, 1024);
            SgtHelper.ClearCapacity(normals, 1024);

            if (index >= meshes.Count)
            {
                var newMesh = SgtHelper.CreateTempMesh("Aurora Mesh (Generated)");

                meshes.Add(newMesh);

                return(newMesh);
            }

            var mesh = meshes[index];

            if (mesh == null)
            {
                mesh = meshes[index] = SgtHelper.CreateTempMesh("Aurora Mesh (Generated)");
            }

            return(mesh);
        }
Пример #2
0
        private void UpdateMesh()
        {
            if (mesh == null)
            {
                mesh = SgtHelper.CreateTempMesh("Aurora Mesh (Generated)");
            }

            SgtHelper.ClearCapacity(tempPositions, 1024);
            SgtHelper.ClearCapacity(tempCoords0, 1024);
            SgtHelper.ClearCapacity(tempIndices, 1024);
            SgtHelper.ClearCapacity(tempColors, 1024);
            SgtHelper.ClearCapacity(tempNormals, 1024);

            if (pathDetail > 0 && pathLengthMin > 0.0f && pathLengthMax > 0.0f)
            {
                var vertexCount = 0;

                SgtHelper.BeginRandomSeed(seed);
                {
                    for (var i = 0; i < pathCount; i++)
                    {
                        AddPath(mesh, ref vertexCount);
                    }
                }
                SgtHelper.EndRandomSeed();
            }

            BakeMesh(mesh);
        }