public PlaneAuxiliaryState(Tool tool, Auxiliary auxiliary, Geometry geometry) : base(tool, auxiliary)
    {
        if (auxiliary is PlaneAuxiliary)
        {
            this.auxiliary = (PlaneAuxiliary)auxiliary;
        }

        this.geometry = geometry;
    }
    public override Auxiliary GenerateAuxiliary(Geometry geometry, FormInput formInput)
    {
        bool valid = ValidateInput(geometry, formInput);

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

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

        string[] fields = formElement.fields;
        int[]    ids    = new int[fields.Length];
        for (int i = 0; i < fields.Length; i++)
        {
            ids[i] = geometry.SignVertex(fields[i]);
        }
        PlaneAuxiliary auxiliary = new PlaneAuxiliary(ids);

        return(auxiliary);
    }