public float GetValue()
            {
                FloatRange range = _range;
                float      lerp  = MathUtils.Interpolate(_easeType, 0.0f, 1.0f, _input);

                return(range.Get(lerp));
            }
Beispiel #2
0
            public override void Update(float time, float deltaTime)
            {
                FloatRange range = _range;
                float      lerp  = MathUtils.Interpolate(_easeType, 0.0f, 1.0f, _input);

                _value = range.Get(lerp);
            }
Beispiel #3
0
    public static void MakeTessellatable(FloatRange moveDistance, int subdivideCount, int maxPairsToMove)
    {
        GameObject go           = GameObject.CreatePrimitive(PrimitiveType.Cube);
        MeshFilter meshFilter   = go.GetComponent <MeshFilter>();
        Mesh       originalMesh = meshFilter.sharedMesh;
        Mesh       clonedMesh   = new Mesh();

        clonedMesh.vertices  = originalMesh.vertices;
        clonedMesh.triangles = originalMesh.triangles;
        clonedMesh.normals   = originalMesh.normals;
        clonedMesh.uv        = originalMesh.uv;
        for (int i = 0; i < subdivideCount; i++)
        {
            Subdivide(clonedMesh);
        }
        List <Vector3> vertices = new List <Vector3>();

        vertices.AddRange(clonedMesh.vertices);
        List <int> vertexIndiciesRemaining = new List <int>();

        for (int i = 0; i < vertices.Count; i++)
        {
            vertexIndiciesRemaining.Add(i);
        }
        for (int i = 0; i < maxPairsToMove; i++)
        {
            int     vertexIndiciesRemainingIndex = Random.Range(0, vertexIndiciesRemaining.Count);
            int     indexOfVertexToMove          = vertexIndiciesRemaining[vertexIndiciesRemainingIndex];
            Vector3 offset       = Random.insideUnitSphere * moveDistance.Get(Random.value);
            Vector3 vertexToMove = vertices[indexOfVertexToMove];
            Vector3 otherVertex  = vertexToMove;
            if (Mathf.Abs(vertexToMove.x) == .5f)
            {
                otherVertex.x *= -1;
            }
            if (Mathf.Abs(vertexToMove.y) == .5f)
            {
                otherVertex.y *= -1;
            }
            else
            {
                otherVertex.z *= -1;
            }
            int        indexOfOtherVertex = vertices.IndexOf(otherVertex);
            List <int> relatedVertices    = FindRelatedVertices(clonedMesh, vertexToMove, false);
            foreach (int i2 in relatedVertices)
            {
                vertices[i2] += offset;
            }
            relatedVertices = FindRelatedVertices(clonedMesh, otherVertex, false);
            foreach (int i2 in relatedVertices)
            {
                vertices[i2] += offset;
            }
            vertexIndiciesRemaining.RemoveAt(vertexIndiciesRemainingIndex);
            vertexIndiciesRemaining.RemoveAt(indexOfOtherVertex);
            if (vertexIndiciesRemaining.Count == 0)
            {
                return;
            }
        }
        clonedMesh.vertices = vertices.ToArray();
        clonedMesh.RecalculateNormals();
        meshFilter.mesh = clonedMesh;
    }