Example #1
0
        /// <summary>
        /// Iniciar la creacion
        /// </summary>
        public override void initCreation(Vector3 gridPoint)
        {
            initSelectionPoint = gridPoint;
            currentCreatingState = CreatingBoxState.DraggingSize;

            //Crear caja inicial
            TgcTexture boxTexture = TgcTexture.createTexture(Control.getCreationTexturePath());
            mesh = TgcBox.fromExtremes(initSelectionPoint, initSelectionPoint, boxTexture);
            mesh.BoundingBox.setRenderColor(MeshCreatorUtils.UNSELECTED_OBJECT_COLOR);
            this.Layer = Control.CurrentLayer;
        }
Example #2
0
        /// <summary>
        /// Iniciar la creacion
        /// </summary>
        public override void initCreation(Vector3 gridPoint)
        {
            initSelectionPoint   = gridPoint;
            currentCreatingState = CreatingBoxState.DraggingSize;

            //Crear caja inicial
            TgcTexture boxTexture = TgcTexture.createTexture(Control.getCreationTexturePath());

            mesh = TgcBox.fromExtremes(initSelectionPoint, initSelectionPoint, boxTexture);
            mesh.BoundingBox.setRenderColor(MeshCreatorUtils.UNSELECTED_OBJECT_COLOR);
            this.Layer = Control.CurrentLayer;
        }
Example #3
0
        /// <summary>
        /// Construir caja
        /// </summary>
        public override void doCreation()
        {
            TgcD3dInput input = GuiController.Instance.D3dInput;

            switch (currentCreatingState)
            {
                case CreatingBoxState.DraggingSize:

                    //Si hacen clic con el mouse, ver si hay colision con el suelo
                    if (input.buttonDown(TgcD3dInput.MouseButtons.BUTTON_LEFT))
                    {
                        //Determinar el size en XZ del box
                        Vector3 collisionPoint = Control.Grid.getPicking();

                        //Obtener extremos del rectángulo de selección
                        Vector3 min = Vector3.Minimize(initSelectionPoint, collisionPoint);
                        Vector3 max = Vector3.Maximize(initSelectionPoint, collisionPoint);
                        min.Y = initSelectionPoint.Y;
                        max.Y = initSelectionPoint.Y + 0.2f;

                        //Configurar BOX
                        mesh.setExtremes(min, max);
                        mesh.updateValues();

                    }
                    //Solto el clic del mouse, pasar a configurar el Height del box
                    else if (input.buttonUp(TgcD3dInput.MouseButtons.BUTTON_LEFT))
                    {
                        //Tiene el tamaño minimo tolerado
                        Vector3 size = mesh.BoundingBox.calculateSize();
                        if (size.X > 1 && size.Z > 1)
                        {
                            currentCreatingState = CreatingBoxState.DraggingHeight;
                            creatingBoxInitMouseY = input.Ypos;
                        }
                        //Sino, descartar
                        else
                        {
                            Control.CurrentState = MeshCreatorControl.State.CreatePrimitiveSelected;
                            mesh.dispose();
                            mesh = null;
                        }

                    }

                    break;

                case CreatingBoxState.DraggingHeight:

                    //Si presiona clic, terminar de configurar la altura y generar box definitivo
                    if (input.buttonPressed(TgcD3dInput.MouseButtons.BUTTON_LEFT))
                    {
                        //Guardar size original del Box para hacer Scaling
                        originalSize = mesh.BoundingBox.calculateSize();

                        //Dejar cargado para que se pueda crear un nuevo box
                        Control.CurrentState = MeshCreatorControl.State.CreatePrimitiveSelected;
                        Control.CreatingPrimitive = new BoxPrimitive(Control);

                        //Agregar box a la lista de modelos
                        Control.addMesh(this);

                        //Seleccionar Box
                        Control.SelectionRectangle.clearSelection();
                        Control.SelectionRectangle.selectObject(this);
                        Control.updateModifyPanel();
                    }
                    //Determinar altura en base a la posicion Y del mouse
                    else
                    {
                        float heightY = creatingBoxInitMouseY - input.Ypos;
                        float adjustedHeightY = MeshCreatorUtils.getMouseIncrementHeightSpeed(Control.Camera, this.BoundingBox, heightY);

                        Vector3 min = mesh.BoundingBox.PMin;
                        min.Y = initSelectionPoint.Y;
                        Vector3 max = mesh.BoundingBox.PMax;
                        max.Y = initSelectionPoint.Y + adjustedHeightY;

                        //Configurar BOX
                        mesh.setExtremes(min, max);
                        mesh.updateValues();
                    }

                    break;
            }
        }
Example #4
0
        /// <summary>
        /// Construir caja
        /// </summary>
        public override void doCreation()
        {
            TgcD3dInput input = GuiController.Instance.D3dInput;

            switch (currentCreatingState)
            {
            case CreatingBoxState.DraggingSize:

                //Si hacen clic con el mouse, ver si hay colision con el suelo
                if (input.buttonDown(TgcD3dInput.MouseButtons.BUTTON_LEFT))
                {
                    //Determinar el size en XZ del box
                    Vector3 collisionPoint = Control.Grid.getPicking();

                    //Obtener extremos del rectángulo de selección
                    Vector3 min = Vector3.Minimize(initSelectionPoint, collisionPoint);
                    Vector3 max = Vector3.Maximize(initSelectionPoint, collisionPoint);
                    min.Y = initSelectionPoint.Y;
                    max.Y = initSelectionPoint.Y + 0.2f;

                    //Configurar BOX
                    mesh.setExtremes(min, max);
                    mesh.updateValues();
                }
                //Solto el clic del mouse, pasar a configurar el Height del box
                else if (input.buttonUp(TgcD3dInput.MouseButtons.BUTTON_LEFT))
                {
                    //Tiene el tamaño minimo tolerado
                    Vector3 size = mesh.BoundingBox.calculateSize();
                    if (size.X > 1 && size.Z > 1)
                    {
                        currentCreatingState  = CreatingBoxState.DraggingHeight;
                        creatingBoxInitMouseY = input.Ypos;
                    }
                    //Sino, descartar
                    else
                    {
                        Control.CurrentState = MeshCreatorControl.State.CreatePrimitiveSelected;
                        mesh.dispose();
                        mesh = null;
                    }
                }

                break;

            case CreatingBoxState.DraggingHeight:

                //Si presiona clic, terminar de configurar la altura y generar box definitivo
                if (input.buttonPressed(TgcD3dInput.MouseButtons.BUTTON_LEFT))
                {
                    //Guardar size original del Box para hacer Scaling
                    originalSize = mesh.BoundingBox.calculateSize();

                    //Dejar cargado para que se pueda crear un nuevo box
                    Control.CurrentState      = MeshCreatorControl.State.CreatePrimitiveSelected;
                    Control.CreatingPrimitive = new BoxPrimitive(Control);

                    //Agregar box a la lista de modelos
                    Control.addMesh(this);

                    //Seleccionar Box
                    Control.SelectionRectangle.clearSelection();
                    Control.SelectionRectangle.selectObject(this);
                    Control.updateModifyPanel();
                }
                //Determinar altura en base a la posicion Y del mouse
                else
                {
                    float heightY         = creatingBoxInitMouseY - input.Ypos;
                    float adjustedHeightY = MeshCreatorUtils.getMouseIncrementHeightSpeed(Control.Camera, this.BoundingBox, heightY);

                    Vector3 min = mesh.BoundingBox.PMin;
                    min.Y = initSelectionPoint.Y;
                    Vector3 max = mesh.BoundingBox.PMax;
                    max.Y = initSelectionPoint.Y + adjustedHeightY;

                    //Configurar BOX
                    mesh.setExtremes(min, max);
                    mesh.updateValues();
                }

                break;
            }
        }