Ejemplo n.º 1
0
 protected void HandleSliderChangeRequest(SliderLevels levels)
 {
     //pls change state based on slider levels
     //for this one i'm just going to send a message to the root object...
     gameObject.SendMessageUpwards("OnSliderChangeRequest", levels);
 }
Ejemplo n.º 2
0
    public void performLevelCalculations()
    {
        Vector3      origin          = baseLocation;
        Vector3      currentLocation = gameObject.transform.localPosition;
        SliderLevels sliders         = new SliderLevels();

        //gives x y z values for the size. we want to go .5 times the axis of freedom max.
        float[] allowedThreshold = new float[3];
        allowedThreshold[0] = bounds.x;
        allowedThreshold[1] = bounds.y;
        allowedThreshold[2] = bounds.z;

        if (allowX)
        {
            //calculate what % of the allowed direction im at.
            //0-30% +1pt 31-60% +2pts 61-100% +3pts if to the right
            //0-30% -1pt 31-60% -2pts 61-100% -3pts if to the left

            if (currentLocation.x < origin.x)    //left side of origin
            {
                var delta = Mathf.Abs(currentLocation.x - origin.x);
                if (delta > (0.61f * allowedThreshold[0]))
                {
                    Debug.Log("LEVEL 3 DECREASE");
                    sliders.XAxisLevel = -3;
                }
                else if (delta > (0.31f * allowedThreshold[0]) && delta < (0.60f * allowedThreshold[0]))
                {
                    Debug.Log("LEVEL 2 DECREASE");
                    sliders.XAxisLevel = -2;
                }
                else if (delta > (0.01f * allowedThreshold[0]) && delta < (0.30f * allowedThreshold[0]))
                {
                    Debug.Log("LEVEL 1 DECREASE");
                    sliders.XAxisLevel = -1;
                }
                else
                {
                    //do nothing weird numbers....
                    sliders.XAxisLevel = 0;
                }
            }
            else if (currentLocation.x >= origin.x)       //right side of origin
            {
                var delta = Mathf.Abs(currentLocation.x - origin.x);
                if (delta > (0.61f * allowedThreshold[0]))
                {
                    Debug.Log("LEVEL 3 INCREASE");
                    sliders.XAxisLevel = 3;
                }
                else if (delta > (0.31f * allowedThreshold[0]) && delta < (0.60f * allowedThreshold[0]))
                {
                    Debug.Log("LEVEL 2 INCREASE");
                    sliders.XAxisLevel = 2;
                }
                else if (delta > (0.01f * allowedThreshold[0]) && delta < (0.30f * allowedThreshold[0]))
                {
                    Debug.Log("LEVEL 1 INCREASE");
                    sliders.XAxisLevel = 1;
                }
                else
                {
                    //do nothing weird numbers....
                    sliders.XAxisLevel = 0;
                }
            }
        }

        if (allowY)
        {
            if (currentLocation.y < origin.y)     //left side of origin
            {
                var delta = Mathf.Abs(currentLocation.y - origin.y);
                if (delta > (0.61f * allowedThreshold[1]))
                {
                    Debug.Log("LEVEL 3 DECREASE");
                    sliders.YAxisLevel = -3;
                }
                else if (delta > (0.31f * allowedThreshold[1]) && delta < (0.60f * allowedThreshold[1]))
                {
                    Debug.Log("LEVEL 2 DECREASE");
                    sliders.YAxisLevel = -2;
                }
                else if (delta > (0.01f * allowedThreshold[1]) && delta < (0.30f * allowedThreshold[1]))
                {
                    Debug.Log("LEVEL 1 DECREASE");
                    sliders.YAxisLevel = -1;
                }
                else
                {
                    //do nothing weird numbers....
                    sliders.YAxisLevel = 0;
                }
            }
            else if (currentLocation.y >= origin.y)       //right side of origin
            {
                var delta = Mathf.Abs(currentLocation.y - origin.y);
                if (delta > (0.61f * allowedThreshold[1]))
                {
                    Debug.Log("LEVEL 3 INCREASE");
                    sliders.YAxisLevel = 3;
                }
                else if (delta > (0.31f * allowedThreshold[1]) && delta < (0.60f * allowedThreshold[1]))
                {
                    Debug.Log("LEVEL 2 INCREASE");
                    sliders.YAxisLevel = 2;
                }
                else if (delta > (0.01f * allowedThreshold[1]) && delta < (0.30f * allowedThreshold[1]))
                {
                    Debug.Log("LEVEL 1 INCREASE");
                    sliders.YAxisLevel = 1;
                }
                else
                {
                    //do nothing weird numbers....
                    sliders.YAxisLevel = 0;
                }
            }
        }
        else
        {
            //...
        }

        if (allowZ)
        {
            if (currentLocation.z < origin.z)     //left side of origin
            {
                var delta = Mathf.Abs(currentLocation.z - origin.z);
                if (delta > (0.61f * allowedThreshold[2]))
                {
                    Debug.Log("LEVEL 3 DECREASE");
                    sliders.ZAxisLevel = -3;
                }
                else if (delta > (0.31f * allowedThreshold[2]) && delta < (0.60f * allowedThreshold[2]))
                {
                    Debug.Log("LEVEL 2 DECREASE");
                    sliders.ZAxisLevel = -2;
                }
                else if (delta > (0.01f * allowedThreshold[2]) && delta < (0.30f * allowedThreshold[2]))
                {
                    Debug.Log("LEVEL 1 DECREASE");
                    sliders.ZAxisLevel = -1;
                }
                else
                {
                    //do nothing weird numbers....
                    sliders.ZAxisLevel = 0;
                }
            }
            else if (currentLocation.z >= origin.z)       //right side of origin
            {
                var delta = Mathf.Abs(currentLocation.z - origin.z);
                if (delta > (0.61f * allowedThreshold[2]))
                {
                    Debug.Log("LEVEL 3 INCREASE");
                    sliders.ZAxisLevel = 3;
                }
                else if (delta > (0.31f * allowedThreshold[2]) && delta < (0.60f * allowedThreshold[2]))
                {
                    Debug.Log("LEVEL 2 INCREASE");
                    sliders.ZAxisLevel = 2;
                }
                else if (delta > (0.01f * allowedThreshold[2]) && delta < (0.30f * allowedThreshold[2]))
                {
                    Debug.Log("LEVEL 1 INCREASE");
                    sliders.ZAxisLevel = 1;
                }
                else
                {
                    //do nothing weird numbers....
                    sliders.ZAxisLevel = 0;
                }
            }
        }
        else
        {
        }

        if (sliders.XAxisLevel != 0 || sliders.YAxisLevel != 0 || sliders.ZAxisLevel != 0)
        {
            HandleSliderChangeRequest(sliders);
        }
    }