Ejemplo n.º 1
0
    public void UpdateLayouter(CVType nComparativeType, SPType nSuperpositionType, int nVisualSpaceDim, int nParametersDim, List <ParameterNameValue> parameters)
    {
        Camera.main.transform.position = new Vector3(0, 0, -300);

        if (GameObject.Find("Composition") != null)
        {
            GameObject.DestroyImmediate(GameObject.Find("Composition"));
        }

        comparativeType = nComparativeType;
        visualSpaceDim  = nVisualSpaceDim;
        parametersDim   = nParametersDim;

        switch (comparativeType)
        {
        case CVType.Juxtaposition:
        {
            if (parametersDim == 1)
            {
                layouter = new LayouterStripes();
                (layouter as LayouterStripes).mainParameter = ensemble.getParameter(1);
                (layouter as LayouterStripes).minValue      = ensemble.parametersInfo[(layouter as LayouterStripes).mainParameter].minValue;
                (layouter as LayouterStripes).maxValue      = ensemble.parametersInfo[(layouter as LayouterStripes).mainParameter].maxValue;
                (layouter as LayouterStripes).count         = ensemble.parametersInfo[(layouter as LayouterStripes).mainParameter].count;
                (layouter as LayouterStripes).delta         = ensemble.structuresSize.x * 0.5f;
            }
            else if (parametersDim == 2 && ensemble.parametersInfo.Count >= 2)
            {
                layouter = new LayouterBoxes();

                (layouter as LayouterBoxes).mainParameter = ensemble.getParameter(1);
                (layouter as LayouterBoxes).mCount        = ensemble.parametersInfo[(layouter as LayouterBoxes).mainParameter].count;
                (layouter as LayouterBoxes).mMinValue     = ensemble.parametersInfo[(layouter as LayouterBoxes).mainParameter].minValue;
                (layouter as LayouterBoxes).mMaxValue     = ensemble.parametersInfo[(layouter as LayouterBoxes).mainParameter].maxValue;
                (layouter as LayouterBoxes).mDelta        = ensemble.structuresSize.x * 0.5f;

                (layouter as LayouterBoxes).secParameter = ensemble.getParameter(2);
                (layouter as LayouterBoxes).sCount       = ensemble.parametersInfo[(layouter as LayouterBoxes).secParameter].count;
                (layouter as LayouterBoxes).sMinValue    = ensemble.parametersInfo[(layouter as LayouterBoxes).secParameter].minValue;
                (layouter as LayouterBoxes).sMaxValue    = ensemble.parametersInfo[(layouter as LayouterBoxes).secParameter].maxValue;
                (layouter as LayouterBoxes).sDelta       = ensemble.structuresSize.y * 0.5f;
            }
            else
            {
                Debug.Log("Not permitted combination! Yet!");
            }
            break;
        }

        case CVType.Superposition:
        {
            if (parametersDim == 1)
            {
                layouter = new LayouterSuperPosition();
                (layouter as LayouterSuperPosition).mainParameter = ensemble.getParameter(1);
                (layouter as LayouterSuperPosition).minValue      = ensemble.parametersInfo[(layouter as LayouterSuperPosition).mainParameter].minValue;
                (layouter as LayouterSuperPosition).maxValue      = ensemble.parametersInfo[(layouter as LayouterSuperPosition).mainParameter].maxValue;
                (layouter as LayouterSuperPosition).count         = ensemble.parametersInfo[(layouter as LayouterSuperPosition).mainParameter].count;
                (layouter as LayouterSuperPosition).delta         = 0.5f;
                (layouter as LayouterSuperPosition).type          = nSuperpositionType;
            }
            else
            {
                Debug.Log("Not permitted combination! Yet!");
            }
            break;
        }

        case CVType.Hybrid:
        {
            if (parametersDim == 2 && ensemble.parametersInfo.Count >= 2)
            {
                layouter = new LayouterSuperStripes();

                (layouter as LayouterSuperStripes).mainParameter = ensemble.getParameter(1);
                (layouter as LayouterSuperStripes).mCount        = ensemble.parametersInfo[(layouter as LayouterSuperStripes).mainParameter].count;
                (layouter as LayouterSuperStripes).mMinValue     = ensemble.parametersInfo[(layouter as LayouterSuperStripes).mainParameter].minValue;
                (layouter as LayouterSuperStripes).mMaxValue     = ensemble.parametersInfo[(layouter as LayouterSuperStripes).mainParameter].maxValue;
                (layouter as LayouterSuperStripes).mDelta        = ensemble.structuresSize.x * 0.5f;

                (layouter as LayouterSuperStripes).secParameter = ensemble.getParameter(2);
                (layouter as LayouterSuperStripes).sCount       = ensemble.parametersInfo[(layouter as LayouterSuperStripes).secParameter].count;
                (layouter as LayouterSuperStripes).sMinValue    = ensemble.parametersInfo[(layouter as LayouterSuperStripes).secParameter].minValue;
                (layouter as LayouterSuperStripes).sMaxValue    = ensemble.parametersInfo[(layouter as LayouterSuperStripes).secParameter].maxValue;
                (layouter as LayouterSuperStripes).sDelta       = 0.5f;
                (layouter as LayouterSuperStripes).type         = nSuperpositionType;
            }
            else if (parametersDim == 3 && ensemble.parametersInfo.Count >= 3)
            {
                layouter = new LayouterSuperBoxes();

                (layouter as LayouterSuperBoxes).mainParameter = ensemble.getParameter(1);
                (layouter as LayouterSuperBoxes).mCount        = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).mainParameter].count;
                (layouter as LayouterSuperBoxes).mMinValue     = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).mainParameter].minValue;
                (layouter as LayouterSuperBoxes).mMaxValue     = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).mainParameter].maxValue;
                (layouter as LayouterSuperBoxes).mDelta        = ensemble.structuresSize.x * 0.5f;

                (layouter as LayouterSuperBoxes).secParameter = ensemble.getParameter(2);
                (layouter as LayouterSuperBoxes).sCount       = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).secParameter].count;
                (layouter as LayouterSuperBoxes).sMinValue    = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).secParameter].minValue;
                (layouter as LayouterSuperBoxes).sMaxValue    = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).secParameter].maxValue;
                (layouter as LayouterSuperBoxes).sDelta       = ensemble.structuresSize.y * 0.5f;

                (layouter as LayouterSuperBoxes).thirdParameter = ensemble.getParameter(2);
                (layouter as LayouterSuperBoxes).tCount         = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).thirdParameter].count;
                (layouter as LayouterSuperBoxes).tMinValue      = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).thirdParameter].minValue;
                (layouter as LayouterSuperBoxes).tMaxValue      = ensemble.parametersInfo[(layouter as LayouterSuperBoxes).thirdParameter].maxValue;
                (layouter as LayouterSuperBoxes).tDelta         = 0.5f;

                (layouter as LayouterSuperBoxes).type = nSuperpositionType;
            }
            else
            {
                Debug.Log("Not permitted combination! Yet!");
            }
            break;
        }
        }

        if (visualSpaceDim == 3)
        {
            Camera.main.gameObject.GetComponent <MouseCameraControl> ().pitch.activate = true;
            Camera.main.gameObject.GetComponent <MouseCameraControl> ().yaw.activate   = true;
        }
        else
        {
            Camera.main.gameObject.GetComponent <MouseCameraControl> ().pitch.activate = false;
            Camera.main.gameObject.GetComponent <MouseCameraControl> ().yaw.activate   = false;
        }

        layouter.axisParameters = parameters;

        string abstractionName = pickupAbstractionNew();
        int    numOfElements   = Mathf.FloorToInt((Camera.main.orthographicSize * 2f) / (abstractions[abstractionName].scale * 300f));

        if (numOfElements == 0)
        {
            numOfElements = 5;
        }
        layouter.PlacePreview(numOfElements);

        wasLayoutChanged     = true;
        isCompositionCreated = false;
    }