public void RefreshForm(FormInput formInput)
    {
        if (formInput != form)
        {
            return;
        }

        FormItem[] inputs = form.inputs;
        for (int i = 0; i < inputs.Length; i++)
        {
            if (inputs[i] is FormElement)
            {
                FormElement  formElement  = (FormElement)inputs[i];
                InputElement inputElement = (InputElement)inputBases[i];
                inputElement.Refresh(formElement);
            }
            else if (inputs[i] is FormNum)
            {
                FormNum  formNum  = (FormNum)inputs[i];
                InputNum inputNum = (InputNum)inputBases[i];
                inputNum.Refresh(formNum);
            }
            else if (inputs[i] is FormText)
            {
                FormText  formText  = (FormText)inputs[i];
                InputText inputText = (InputText)inputBases[i];
                inputText.Refresh(formText);
            }
        }
    }
Exemple #2
0
    public override FormInput Title()
    {
        int[] faceIds = measure.face.ids;
        int   len     = faceIds.Length;

        FormElement formElement = new FormElement(len);

        for (int i = 0; i < len; i++)
        {
            formElement.fields[i] = geometry.VertexSign(faceIds[i]);
        }

        float   area    = geometry.FaceArea(faceIds);
        FormNum formNum = new FormNum(area);

        formNum.format = UIConstants.AreaFormat;

        FormInput formInput = new FormInput(4);

        formInput.inputs[0] = formElement;
        formInput.inputs[1] = new FormText("面积");
        formInput.inputs[2] = new FormText("=");
        formInput.inputs[3] = formNum;

        return(formInput);
    }
Exemple #3
0
 protected bool IsPointCoordinate(Geometry geometry, FormNum formNum)
 {
     if (formNum.isEmpty)
     {
         return(false);
     }
     return(true);
 }
Exemple #4
0
    public override bool ValidateInput(Geometry geometry, FormInput formInput)
    {
        FormElement SignElement = (FormElement)formInput.inputs[1];
        FormNum     formNum1    = (FormNum)formInput.inputs[3];
        FormNum     formNum2    = (FormNum)formInput.inputs[5];
        FormNum     formNum3    = (FormNum)formInput.inputs[7];

        if (!IsNewSign(geometry, SignElement))
        {
            return(false);
        }

        return(IsPointCoordinate(geometry, formNum1) && IsPointCoordinate(geometry, formNum2) && IsPointCoordinate(geometry, formNum3));
    }
Exemple #5
0
    public void Refresh(FormNum formNum)
    {
        this.formNum = formNum;
        if (formNum.num == 0 && formNum.isEmpty)
        {
            SetText("");
        }
        else
        {
            SetText(formNum.ToString());
        }

        TextChanged();
    }
    public override Condition GenerateCondition(Geometry geometry, FormInput formInput)
    {
        bool valid = ValidateInput(geometry, formInput);

        if (!valid)
        {
            return(null);
        }

        FormNum formNum = (FormNum)formInput.inputs[2];
        CuboidLengthCondition condition = new CuboidLengthCondition(formNum.num);

        return(condition);
    }
    public override bool ValidateInput(Geometry geometry, FormInput formInput)
    {
        if (!(geometry is Cuboid))
        {
            return(false);
        }
        Cuboid cuboid = (Cuboid)geometry;

        FormNum formNum = (FormNum)formInput.inputs[2];

        if (!IsValidLength(formNum))
        {
            return(false);
        }

        return(true);
    }
Exemple #8
0
    public override void Start()
    {
        vertexBehaviour.SetActive(true);
        vertexBehaviour.OnDragVertex = MoveVertex;

        VertexUnit[] vertices = geometry.VerticesOfMoveVertex(vertex);

        observeElements = new HashSet<GeoElement>();
        observeGizmos = new HashSet<Gizmo>();

        foreach (VertexUnit v in vertices)
        {
            HashSet<GeoElement> elementsSet = geometry.VertexUnitObserveElements(v.id);
            observeElements.UnionWith(elementsSet);

            HashSet<Gizmo> gizmosSet = geometry.VertexUnitObserveGizmos(v.id);
            observeGizmos.UnionWith(gizmosSet);
        }

        string sign = geometry.VertexSign(vertex.id);
        Vector3 position = vertex.Position();

        formInput = new FormInput(8);
        formNumX = new FormNum(position.x);
        formNumY = new FormNum(position.y);
        formNumZ = new FormNum(position.z);

        formNumX.format = UIConstants.PointFormat;
        formNumY.format = UIConstants.PointFormat;
        formNumZ.format = UIConstants.PointFormat;

        FormElement formElement = new FormElement(1);
        formElement.fields[0] = sign;

        formInput.inputs[0] = formElement;
        formInput.inputs[1] = new FormText("(");
        formInput.inputs[2] = formNumX;
        formInput.inputs[3] = new FormText(",");
        formInput.inputs[4] = formNumY;
        formInput.inputs[5] = new FormText(",");
        formInput.inputs[6] = formNumZ;
        formInput.inputs[7] = new FormText(")");

        inputPanel.SetFormForMessage(formInput);
    }
Exemple #9
0
    public override Auxiliary GenerateAuxiliary(Geometry geometry, FormInput formInput)
    {
        bool valid = ValidateInput(geometry, formInput);

        if (!valid)
        {
            return(null);
        }

        FormNum formNum1 = (FormNum)formInput.inputs[3];
        FormNum formNum2 = (FormNum)formInput.inputs[5];
        FormNum formNum3 = (FormNum)formInput.inputs[7];

        FormElement    SignElement = (FormElement)formInput.inputs[1];
        string         sign        = Sign(SignElement);
        PointAuxiliary auxiliary   = new PointAuxiliary(formNum1.num, formNum2.num, formNum3.num, sign);

        return(auxiliary);
    }
Exemple #10
0
    public override Condition GenerateCondition(Geometry geometry, FormInput formInput)
    {
        bool valid = ValidateInput(geometry, formInput);

        if (!valid)
        {
            return(null);
        }

        FormElement formElement = (FormElement)formInput.inputs[0];

        string[] fields  = formElement.fields;
        int      id1     = geometry.SignVertex(fields[0]);
        int      id2     = geometry.SignVertex(fields[1]);
        FormNum  formNum = (FormNum)formInput.inputs[2];
        BottomLengthCondition condition = new BottomLengthCondition(id1, id2, formNum.num);

        return(condition);
    }
Exemple #11
0
    public void Init()
    {
        input          = transform.Find("Text").GetComponent <Text>();
        input.fontSize = (int)UIConstants.TextFontSize;

        KeyboardSystem.OnKey.AddListener(InputKey);

        rectTransform = GetComponent <RectTransform>();
        rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, UIConstants.TextFontSize);


        GameObject caretObject = transform.Find("Caret").gameObject;

        caret = caretObject.GetComponent <RectTransform>();
        caret.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, UIConstants.TextFontSize);

        SetFocus(false);

        formNum = new FormNum();
    }
Exemple #12
0
    public override FormInput Title()
    {
        EdgeRefer edge = measure.edge;

        FormElement formElement = new FormElement(2);

        formElement.fields[0] = geometry.VertexSign(edge.id1);
        formElement.fields[1] = geometry.VertexSign(edge.id2);

        float   length  = geometry.EdgeLength(edge.id1, edge.id2);
        FormNum formNum = new FormNum(length);

        formNum.format = UIConstants.LengthFormat;

        FormInput formInput = new FormInput(3);

        formInput.inputs[0] = formElement;
        formInput.inputs[1] = new FormText("=");
        formInput.inputs[2] = formNum;

        return(formInput);
    }
    private InputNum AddInputNum(FormNum formNum)
    {
        GameObject go = GameObject.Instantiate(InputNumPrefab.gameObject);

        go.transform.SetParent(transform, false);

        InputNum inputNum = go.GetComponent <InputNum>();

        inputNum.Init(formNum);

        inputNum.OnInputChanged += (num) =>
        {
            formNum.num = num;
            if (OnInputChanged != null)
            {
                OnInputChanged(form);
            }
            RefreshLayout();
            Validate();
        };
        return(inputNum);
    }
    private void SetForm(FormInput formInput)
    {
        if (state != InputPanelState.Normal)
        {
            return;
        }

        form = formInput;
        FormItem[] inputs = form.inputs;
        inputBases = new InputBase[inputs.Length];

        inputables = new List <Inputable>();
        for (int i = 0; i < inputs.Length; i++)
        {
            if (inputs[i] is FormElement)
            {
                FormElement  formElement  = (FormElement)inputs[i];
                InputElement inputElement = AddInputElement(formElement);
                inputables.Add(inputElement);
                inputBases[i] = inputElement;
            }
            else if (inputs[i] is FormNum)
            {
                FormNum  formNum  = (FormNum)inputs[i];
                InputNum inputNum = AddInputNum(formNum);
                inputables.Add(inputNum);
                inputBases[i] = inputNum;
            }
            else if (inputs[i] is FormText)
            {
                FormText  formText  = (FormText)inputs[i];
                InputText inputText = AddInputText(formText);
                inputBases[i] = inputText;
            }
        }

        RefreshLayout();
    }
Exemple #15
0
    public override bool ValidateInput(Geometry geometry, FormInput formInput)
    {
        if (!(geometry is TriPyramid))
        {
            return(false);
        }
        TriPyramid triPyramid = (TriPyramid)geometry;

        FormElement formElement = (FormElement)formInput.inputs[1];

        if (!IsBottomCorner(triPyramid, formElement))
        {
            return(false);
        }

        FormNum formNum = (FormNum)formInput.inputs[3];

        if (!IsValidAngle(formNum))
        {
            return(false);
        }

        return(true);
    }
Exemple #16
0
    public override bool ValidateInput(Geometry geometry, FormInput formInput)
    {
        if (!(geometry is TriPyramid))
        {
            return(false);
        }
        TriPyramid triPyramid = (TriPyramid)geometry;

        FormElement formElement = (FormElement)formInput.inputs[0];

        if (!IsBottomEdge(triPyramid, formElement))
        {
            return(false);
        }

        FormNum formNum = (FormNum)formInput.inputs[2];

        if (!IsValidLength(formNum))
        {
            return(false);
        }

        return(true);
    }
Exemple #17
0
    public override FormInput Title()
    {
        CornerRefer corner = measure.corner;

        FormElement formElement = new FormElement(3);

        formElement.fields[0] = geometry.VertexSign(corner.id1);
        formElement.fields[1] = geometry.VertexSign(corner.id2);
        formElement.fields[2] = geometry.VertexSign(corner.id3);

        float   angle   = geometry.CornerAngle(corner.id1, corner.id2, corner.id3);
        FormNum formNum = new FormNum(angle);

        formNum.format = UIConstants.AngleFormat;

        FormInput formInput = new FormInput(4);

        formInput.inputs[0] = new FormText("∠");
        formInput.inputs[1] = formElement;
        formInput.inputs[2] = new FormText("=");
        formInput.inputs[3] = formNum;

        return(formInput);
    }
Exemple #18
0
 public void Init(FormNum formNum)
 {
     Init();
     Refresh(formNum);
 }
Exemple #19
0
    protected bool IsValidAngle(FormNum formNum)
    {
        bool result = formNum.num > 0 && formNum.num < 180;

        return(result);
    }
Exemple #20
0
    public override void Start()
    {
        FormInput formInput;

        string  sign     = geometry.VertexSign(vertexUnit.id);
        Vector3 position = vertexUnit.Position();


        formInput = new FormInput(8);
        FormNum formNumX = new FormNum(position.x);
        FormNum formNumY = new FormNum(position.y);
        FormNum formNumZ = new FormNum(position.z);

        formNumX.format = UIConstants.PointFormat;
        formNumY.format = UIConstants.PointFormat;
        formNumZ.format = UIConstants.PointFormat;

        FormElement formElement = new FormElement(1);

        formElement.fields[0] = sign;

        formInput.inputs[0] = formElement;
        formInput.inputs[1] = new FormText("(");
        formInput.inputs[2] = formNumX;
        formInput.inputs[3] = new FormText(",");
        formInput.inputs[4] = formNumY;
        formInput.inputs[5] = new FormText(",");
        formInput.inputs[6] = formNumZ;
        formInput.inputs[7] = new FormText(")");

        inputPanel.SetFormForInput(formInput);

        inputPanel.OnValidate = (form) =>
        {
            return(!formNumX.isEmpty && !formNumY.isEmpty && !formNumZ.isEmpty);
        };

        inputPanel.OnClickSubmit = (form) =>
        {
            float x = formNumX.num;
            float y = formNumY.num;
            float z = formNumZ.num;

            Vector3 newPosition = new Vector3(x, y, z);

            geometry.SetUnitVector(vertexUnit.id, newPosition);

            stateController.RefreshStateCellById(vertexUnit.id);

            geometryBehaviour.UpdateElements();
            geometryBehaviour.UpdateSignsPosition();
            geometryBehaviour.UpdateGizmos();

            geoController.EndOperation();
        };

        inputPanel.OnClickCancel = (form) =>
        {
            geoController.EndOperation();
        };
    }
Exemple #21
0
    protected bool IsValidLength(FormNum formNum)
    {
        bool result = formNum.num > 0 && formNum.num < 10;

        return(result);
    }