Esempio n. 1
0
    private void Update()
    {
        int layer_mask = LayerMask.GetMask("model3d");
        Ray rayInfo = Camera.main.ScreenPointToRay(Input.mousePosition);
        bool isHit = Physics.Raycast(rayInfo, out RaycastHit hitInfo, float.MaxValue, layerMask: layer_mask);

        RestoreSelectionAction();

        SelectAction(isHit, hitInfo);

        switch (modelerState) {
            case ModelerState.None:
                modelerState = SelectionActions(ModelerState.None);
                break;
            case ModelerState.DrawQuad:
                modelerState = DrawActions(ModelerState.DrawQuad);
                break;
            case ModelerState.DrawCube:
                modelerState = DrawActions(ModelerState.DrawCube);
                break;
            default:
                break;
        }

        switch (toolState) {
            case ToolState.None:
                isExtruding = false;
                break;
            case ToolState.Extrude:

                if (selectionState != SelectionState.Face) {
                    break;
                }

                if (Input.GetMouseButton(0)) {
                    if (EventSystem.current.IsPointerOverGameObject() == false) {
                        if (selectedPrimitiveObject != null) {
                            float magnitude = Input.GetAxis("Mouse X") + Input.GetAxis("Mouse Y");
                            ExtrudeFace(magnitude, true);
                            isExtruding = true;
                        }
                    }
                }
                if (isExtruding == true) {
                    if (Input.GetMouseButtonUp(0)) {
                        if (EventSystem.current.IsPointerOverGameObject() == false) {
                            if (selectedPrimitiveObject != null) {
                                selectedPrimitiveObject.GetCompound().FinishExtrude();
                                isExtruding = false;
                            }
                        }
                    }
                }

                break;
            default:
                break;
        }
    }
Esempio n. 2
0
    protected ModelerState SelectionActions(ModelerState modelerState)
    {
        if (Input.GetMouseButtonDown(0)) {
            if (EventSystem.current.IsPointerOverGameObject() == false) {
                if (selectedPrimitiveObject != null) {
                    selectedPrimitiveObject.GetCompound().SelectAll(false);
                    selectedPrimitiveObject = null;
                }
            }
            switch (selectionState) {
                case SelectionState.Object:

                    if (hitPrimitiveObject != null) {
                        if (selectedPrimitiveObject != null) {
                            selectedPrimitiveObject.GetCompound().SelectAll(false);
                        }
                        selectedPrimitiveObject = hitTr.GetComponent<PrimitiveObject>();
                        selectedPrimitiveObject.GetCompound().SelectAll(true);
                    }
                    break;
                case SelectionState.Face:
                    if (hitPrimitiveObject != null) {
                        if (selectedPrimitiveObject != null) {
                            selectedPrimitiveObject.IsSelected = false;
                        }
                        selectedPrimitiveObject = hitTr.GetComponent<PrimitiveObject>();
                        selectedPrimitiveObject.IsSelected = true;
                    }
                    break;
                case SelectionState.Edge:
                    break;
                case SelectionState.Vertex:

                    break;
                default:
                    break;
            }
        }
        return modelerState;
    }
Esempio n. 3
0
    protected ModelerState DrawActions(ModelerState modelerState)
    {
        int layer_mask = LayerMask.GetMask("floor");
        Vector3 point = Vector3.zero;
        Ray rayInfo = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(rayInfo, out RaycastHit hitInfo, float.MaxValue, layerMask: layer_mask) == true) {
            point = hitInfo.point;
            point.y = 0;
        }

        switch (drawState) {
            case DrawState.isSettingUp:

                drawState = DrawState.isPlacing;
                break;

            case DrawState.isPlacing:

                UIManager.instance.ToolActions.ExtrudeToggleAction(false);

                if (Input.GetMouseButtonUp(0)) {
                    if (modelerState == ModelerState.DrawQuad) {
                        newCo = CompoundObject.MakeQuad(ModelParent, 2f);
                        newCo.transform.position = point;
                    } else if (modelerState == ModelerState.DrawCube) {
                        newCo = CompoundObject.MakeCube(ModelParent, 2f);
                        newCo.transform.position = point;
                    }
                    drawState = DrawState.isMoving;
                }

                break;
            case DrawState.isMoving:
                newCo.transform.position = point;

                if (Input.GetMouseButtonUp(0)) {
                    drawState = DrawState.isDrawing;
                }

                break;
            case DrawState.isDrawing:
                if (newCo != null) {
                    float magnitude = (Input.GetAxis("Mouse X") + Input.GetAxis("Mouse Y"));

                    UIManager.instance.InputPanel.SetMagnitudeFieldActive(true);
                    UIManager.instance.InputPanel.SetMagnitudeFieldText(newCo.Magnitute.ToString());

                    newCo.UpdateUniformlyCompoundbject(magnitude);
                }
                if (Input.GetMouseButtonUp(0)) {
                    UIManager.instance.InputPanel.SetAllActive(false);

                    newCo = null;

                    drawState = DrawState.isSettingUp;
                    return ModelerState.None;
                }

                return modelerState;

            default:
                break;
        }
        return modelerState;
    }
Esempio n. 4
0
 public void SetModelerState(ModelerState state)
 {
     modelerState = state;
 }