public float GetValue() { FloatRange range = _range; float lerp = MathUtils.Interpolate(_easeType, 0.0f, 1.0f, _input); return(range.Get(lerp)); }
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); }
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; }