Exemplo n.º 1
0
    public void ApplyToPoly(ref PolyHydra poly, AppearancePresets aPresets)
    {
        poly.PolyType        = PolyType;
        poly.BypassOps       = BypassOps;
        poly.TwoSided        = TwoSided;
        poly.ConwayOperators = new List <PolyHydra.ConwayOperator>();
        poly.GridType        = GridType;
        poly.PrismP          = PrismP;
        poly.PrismQ          = PrismQ;
        poly.PresetName      = Name;
        aPresets.ApplyPresetToPoly(AppearancePresetName);

        for (var index = 0; index < Ops.Length; index++)
        {
            var presetOp = Ops[index];
            var op       = new PolyHydra.ConwayOperator
            {
                opType         = presetOp.OpType,
                faceSelections = presetOp.FaceSelections,
                amount         = presetOp.Amount,
                randomize      = presetOp.Randomize,
                disabled       = presetOp.Disabled
            };
            poly.ConwayOperators.Add(op);
        }
    }
Exemplo n.º 2
0
    void AddRandomOpButtonClicked()
    {
        int maxOpIndex  = Enum.GetValues(typeof(PolyHydra.Ops)).Length;
        int opTypeIndex = Random.Range(1, maxOpIndex - 2); // No canonicalize as it's pretty rough at the moment
        var opType      = (PolyHydra.Ops)opTypeIndex;
        var opConfig    = poly.opconfigs[opType];

        ConwayPoly.FaceSelections faceSelection = ConwayPoly.FaceSelections.None;
        var maxFaceSel = Enum.GetValues(typeof(ConwayPoly.FaceSelections)).Length - 1; // Exclude "None"

        // Keep picking a random facesel until we get one that will have an effect
        while (!poly.FaceSelectionIsValid(faceSelection))
        {
            faceSelection = (ConwayPoly.FaceSelections)Random.Range(1, maxFaceSel);
        }
        // TODO pick another facesel if all faces are chosen
        var newOp = new PolyHydra.ConwayOperator
        {
            opType         = opType,
            faceSelections = Random.value > 0.25f ? 0: faceSelection,
            randomize      = Random.value > 0.8f,
            amount         = Random.value > 0.25f ? opConfig.amountDefault : Random.Range(opConfig.amountMin, opConfig.amountMax),
            disabled       = false
        };

        poly.ConwayOperators.Add(newOp);
        AddOpItemToUI(newOp);
        Rebuild();
    }
Exemplo n.º 3
0
    void AddOpItemToUI(PolyHydra.ConwayOperator op)
    {
        var opPrefab = Instantiate(OpTemplate);

        opPrefab.transform.SetParent(OpContainer);
        var opPrefabManager = opPrefab.GetComponent <OpPrefabManager>();

        opPrefab.name = op.opType.ToString();
        foreach (var item in Enum.GetValues(typeof(PolyHydra.Ops)))
        {
            var label = new Dropdown.OptionData(item.ToString());
            opPrefabManager.OpTypeDropdown.options.Add(label);
        }

        foreach (var item in Enum.GetValues(typeof(ConwayPoly.FaceSelections)))
        {
            var label = new Dropdown.OptionData(item.ToString());
            opPrefabManager.FaceSelectionDropdown.options.Add(label);
        }

        opPrefabManager.DisabledToggle.isOn         = op.disabled;
        opPrefabManager.OpTypeDropdown.value        = (int)op.opType;
        opPrefabManager.FaceSelectionDropdown.value = (int)op.faceSelections;
        opPrefabManager.AmountSlider.value          = op.amount;
        opPrefabManager.AmountInput.text            = op.amount.ToString();
        opPrefabManager.RandomizeToggle.isOn        = op.randomize;

        ConfigureOpControls(opPrefab.GetComponent <OpPrefabManager>());

        opPrefabManager.OpTypeDropdown.onValueChanged.AddListener(delegate { OpTypeChanged(); });
        opPrefabManager.FaceSelectionDropdown.onValueChanged.AddListener(delegate { OpsUIToPoly(); });
        opPrefabManager.DisabledToggle.onValueChanged.AddListener(delegate { OpsUIToPoly(); });
        opPrefabManager.AmountSlider.onValueChanged.AddListener(delegate { AmountSliderChanged(); });
        opPrefabManager.AmountInput.onValueChanged.AddListener(delegate { AmountInputChanged(); });
        opPrefabManager.RandomizeToggle.onValueChanged.AddListener(delegate { OpsUIToPoly(); });

        opPrefabManager.UpButton.onClick.AddListener(MoveOpUp);
        opPrefabManager.DownButton.onClick.AddListener(MoveOpDown);
        opPrefabManager.DeleteButton.onClick.AddListener(DeleteOp);

        opPrefabManager.Index = opPrefabs.Count;

        // Enable/Disable down buttons as appropriate:
        // We are adding this at the end so it can't move down
        opPrefab.GetComponent <OpPrefabManager>().DownButton.enabled = false;
        if (opPrefabs.Count == 0) // Only one item exists
        {
            // First item can't move up
            opPrefab.GetComponent <OpPrefabManager>().UpButton.enabled = false;
        }
        else
        {
            // Reenable down button on the previous final item
            opPrefabs[opPrefabs.Count - 1].GetComponent <OpPrefabManager>().DownButton.enabled = true;
        }
        opPrefabs.Add(opPrefab);
    }
Exemplo n.º 4
0
    void AddOpButtonClicked()
    {
        var newOp = new PolyHydra.ConwayOperator {
            disabled = false
        };

        poly.ConwayOperators.Add(newOp);
        AddOpItemToUI(newOp);
        Rebuild();
    }