Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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]);
        }
Пример #5
0
        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;
            }
        }
Пример #6
0
        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;
            }
        }
Пример #7
0
        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);
            }
        }