public void SetBrushOnRibbonSketchObject()
        {
            ICommand addCommand = new AddPointAndRotationCommand(this.Ribbon, new Vector3(0, 0, 0), Quaternion.Euler(0, 0, 45));

            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddPointAndRotationCommand(this.Ribbon, new Vector3(1, 1, 1), Quaternion.Euler(0, 0, -45));
            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddPointAndRotationCommand(this.Ribbon, new Vector3(1, 1, 1), Quaternion.Euler(45, 0, 0));
            Invoker.ExecuteCommand(addCommand);

            Assert.AreEqual(3 * 3, this.Ribbon.GetComponent <MeshFilter>().sharedMesh.vertexCount);

            RibbonBrush brush = this.Ribbon.GetBrush() as RibbonBrush;

            brush.SketchMaterial.AlbedoColor = Color.cyan;
            brush.CrossSectionVertices.Add(Vector3.one);
            ICommand SetBrushCommand = new SetBrushCommand(this.Ribbon, brush);

            Invoker.ExecuteCommand(SetBrushCommand);

            Assert.AreEqual(4 * 3, this.Ribbon.GetComponent <MeshFilter>().sharedMesh.vertexCount);
            Assert.AreEqual(Color.cyan, this.Ribbon.GetComponent <MeshRenderer>().sharedMaterial.color);
            RibbonBrush updatedBrush = this.Ribbon.GetBrush() as RibbonBrush;

            Assert.AreEqual(Color.cyan, updatedBrush.SketchMaterial.AlbedoColor);
        }
        public void AddOneControlPointAndRotationCommandUndo()
        {
            ICommand addCommand = new AddPointAndRotationCommand(this.RibbonSketchObject, new Vector3(0, 0, 0), Quaternion.Euler(45, 0, 0));

            Invoker.ExecuteCommand(addCommand);
            Invoker.Undo();

            Assert.AreEqual(null, RibbonSketchObject.GetComponent <MeshFilter>().sharedMesh);
            Assert.IsTrue(SketchWorld.ActiveSketchWorld.IsObjectDeleted(this.RibbonSketchObject));
        }
        public void AddControlPointAndRotationCommand()
        {
            ICommand addCommand = new AddPointAndRotationCommand(this.RibbonSketchObject, new Vector3(0, 0, 0), Quaternion.Euler(45, 0, 0));

            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddPointAndRotationCommand(this.RibbonSketchObject, new Vector3(1, 0, 0), Quaternion.Euler(-45, 0, 0));
            Invoker.ExecuteCommand(addCommand);

            Assert.AreEqual(6, RibbonSketchObject.GetComponent <MeshFilter>().sharedMesh.vertices.Length);
        }