private void Compare(State state) { // Highlights two values in array to indicate comparision operation JToken index1 = state.state_def["index1"]; JToken index2 = state.state_def["index2"]; List <int> _index1 = NDimensionalArray.ToListIndex(index1); List <int> _index2 = NDimensionalArray.ToListIndex(index2); animator.Compare(_index1, _index2); }
private void Declare(State state, GameObject placeholder) { // Creates Array GameObjects this.rendered = true; this.name = (string)state.state_def["variable_name"]; JArray jt = (JArray)state.state_def["body"]; this.body = new NDimensionalArray(jt); animator.Declare(body, placeholder); }
private void Swap(State state) { // Swaps value stored at indexes JToken index1 = state.state_def["index1"]; JToken index2 = state.state_def["index2"]; ContentType temp = this.body[index1]; this.body[index1] = this.body[index2]; this.body[index2] = temp; List <int> _index1 = NDimensionalArray.ToListIndex(index1); List <int> _index2 = NDimensionalArray.ToListIndex(index2); animator.Swap(_index1, _index2); }
private void Iter(State state) { // Highlight certain index of Array and might update value JToken index = state.state_def["index"]; JToken value; if (state.state_def.TryGetValue("value", out value)) { this.body[index] = new ContentType(value); } List <int> _index = NDimensionalArray.ToListIndex(index); animator.Iter(_index, this.body[index]); }
public void Declare(NDimensionalArray body, GameObject placeHolder) { /* * Sets Array represented by Cubes at placeholder */ List <int> shape = body.Shape; int dimension = body.Dimensions; GameObject array = new GameObject("array"); switch (dimension) { case 1: Array1DDeclare(array, placeHolder, shape, body); break; default: break; } }
public override void Undo(State state) { // Called to undo a change enforced by `state` string funcType = state.state_type.Split('_').ToList()[1]; switch (funcType) { case "declare": break; case "iter": JToken index = state.state_def["index"]; JToken lastValue; if (state.state_def.TryGetValue("last_value", out lastValue)) { this.body[index] = new ContentType(lastValue); List <int> _index = NDimensionalArray.ToListIndex(index); this.animator.Set(_index, this.body[index]); } break; case "compare": break; case "swap": JToken index1 = state.state_def["index1"]; JToken index2 = state.state_def["index2"]; ContentType temp = this.body[index1]; this.body[index1] = this.body[index2]; this.body[index2] = temp; List <int> _index1 = NDimensionalArray.ToListIndex(index1); List <int> _index2 = NDimensionalArray.ToListIndex(index2); this.animator.Set(_index1, this.body[index1]); this.animator.Set(_index2, this.body[index2]); break; default: break; } }
private void Array1DDeclare(GameObject array, GameObject placeHolder, List <int> shape, NDimensionalArray body) { // Handles 1-D arrays arrayOfCubes = new Cube[shape[0]]; array.transform.parent = placeHolder.transform; array.transform.position = placeHolder.transform.position; array.transform.rotation = placeHolder.transform.rotation; for (int i = 0; i < shape[0]; i++) { arrayOfCubes[i] = new Cube(i, body[i]); arrayOfCubes[i].cube.transform.parent = array.transform; } //Vector3 midpoint; float distanceX = arrayOfCubes[0].scale.x * 2; float arrayScale = (arrayOfCubes[0].scale.x + distanceX) * shape[0] - (distanceX * 2); float offset = arrayOfCubes[0].scale.x * 0.5f; for (int i = 0; i < shape[0]; i++) { // changing local position arrayOfCubes[i].rotation = array.transform.rotation; arrayOfCubes[i].position = new Vector3(i * distanceX - (arrayScale * 0.5f) + offset, offset, 0); } }