Ejemplo n.º 1
0
        public void Generate(int resolutionIndex, int resolution, bool forceRegenerate)
        {
            CubeMeshGenerator.CubeData cubeData = null;
            Mesh currentMesh = meshes[resolutionIndex];

            if (forceRegenerate || !meshesInitialized[resolutionIndex])
            {
                lock (_lock)
                {
                    cubeData = meshGenerator.GenerateCube(resolution);
                }
            }

            Dispatcher.InvokeAsync(() => {
                if (this == null)
                {
                    return;
                }

                if (colliderEnabled == physicsCollider.isTrigger)
                {
                    physicsCollider.isTrigger = !colliderEnabled;
                }

                if (cubeData != null)
                {
                    if (colliderEnabled)
                    {
                        float minh = cubeData.minmax.x, maxh = cubeData.minmax.y;
                        colliderRadiuses[resolutionIndex] = minh + (maxh - minh) * .9f;
                    }

                    currentMesh.Clear();
                    currentMesh.vertices  = cubeData.vertices;
                    currentMesh.triangles = cubeData.triangles;
                    currentMesh.uv        = cubeData.uvs;

                    currentMesh.RecalculateNormals();
                    currentMesh.RecalculateTangents();

                    meshesInitialized[resolutionIndex] = true;
                }

                if (colliderEnabled)
                {
                    physicsCollider.radius = colliderRadiuses[resolutionIndex];
                }

                filter.sharedMesh = meshes[resolutionIndex];

                region.root.NotifyRendered();
            });
        }
Ejemplo n.º 2
0
    public void Generate()
    {
        var promise = new Future <CubeMeshGenerator.CubeData>();

        promise.OnSuccess(cubeDataFuture => {
            var cubeData = cubeDataFuture.value;

            mesh.Clear();
            mesh.vertices  = cubeData.vertices;
            mesh.triangles = cubeData.triangles;
            mesh.uv        = cubeData.uvs;

            mesh.RecalculateNormals();
            // mesh.RecalculateBounds();
            mesh.RecalculateTangents();
        });

        promise.Process(() => g.GenerateCube(resolution));
    }