// Update is called once per frame
    void Update()
    {
        transform.localPosition = new Vector3(0, SliceIndicator.frameHeight, -SliceIndicator.frameWidth / 2.0f);

        if (_movingHandle)
        {
            int oldSlice = _indicator.Slice;

            float depth = transform.parent.parent.InverseTransformPoint(_sliceHandle.position).z;
            _indicator.SetDepth(depth);

            int newSlice = _indicator.Slice;

            // check other users

            int otherSlice = _otherSlices.GetNearestSliceWithUser(newSlice);

            if (otherSlice != -1 && Mathf.Abs(otherSlice - newSlice) < _snapThreshold)
            {
                newSlice         = otherSlice;
                _indicator.Slice = newSlice;
            }

            // load preview

            if (oldSlice != newSlice)
            {
                _slicePreviewFront.GetComponent <Renderer>().material.mainTexture    =
                    _slicePreviewBack.GetComponent <Renderer>().material.mainTexture =
                        _loader.GetThumbnail(newSlice);
            }

            _sliceNr.GetComponent <TextMesh>().text = "" + newSlice;
        }
        else
        {
            if (_slicer.Slice != _indicator.Slice)
            {
                _indicator.Slice = _slicer.Slice;
            }

            _sliceHandle.position = transform.position + new Vector3(0, _sliceHandle.localScale.y / 2.0f, 0);
        }
    }
Ejemplo n.º 2
0
    void OnGUI()
    {
        //if (_main.deviceType == DeviceType.Tablet)
        {
            // background area

            _sliderArea = new Rect(left, 0, sliderWidth + sliceWidth, Screen.height);

            GUI.Box(_sliderArea, "", _sliderAreaStyle);

            // overall slider

            otherSlicesCount = Mathf.Ceil((Screen.height - currentSliceHeight) / sliceHeight) + 1;
            cursorHeight     = Mathf.Ceil(Screen.height * ((otherSlicesCount + 1) / _loader.SlicesCount));

            float barHeight   = Screen.height;
            float barPosition = (barHeight - cursorHeight) * (1 - (_fakeSlice - 1) / (float)(_loader.SlicesCount - 1)) - Screen.height / 2.0f + cursorHeight / 2.0f;

            GUI.Label(new Rect(left + 1, barPosition, sliderWidth - 2, barHeight), "", _backgroundStyle);
            GUI.Label(new Rect(left + 1, Screen.height / 2.0f - cursorHeight / 2.0f, sliderWidth - 2, cursorHeight), "", _cursorStyle);

            // draw thumbnail

            if (_sliding || _scrolling)
            {
                Texture2D thumbTex   = _loader.GetThumbnail(_loader.GetRealSliceNumber(_fakeSlice));
                float     thumbWidth = thumbHeight * thumbTex.width / thumbTex.height;
                GUI.Label(new Rect(left + _sliderArea.width, Screen.height / 2.0f - thumbHeight / 2.0f - 2, thumbWidth + 4, thumbHeight + 4), "", _sliderAreaStyle);
                GUI.DrawTexture(new Rect(left + _sliderArea.width + 2, Screen.height / 2.0f - thumbHeight / 2.0f, thumbWidth, thumbHeight), thumbTex, ScaleMode.ScaleAndCrop);
            }

            // detail slider

            float currentSlicePosY = Screen.height / 2 - currentSliceHeight / 2 + _offset;
            float halfSliceCount   = Mathf.Ceil(otherSlicesCount / 2.0f);

            // draw current slice
            int realSlice = _loader.GetRealSliceNumber(_fakeSlice);
            GUI.Label(new Rect(left + sliderWidth + 1, currentSlicePosY + 1, sliceWidth - 2, currentSliceHeight - 2), "" + realSlice, _currentSliceStyle);
            GUIUserName(new Rect(left + sliderWidth + sliceWidth + 5, currentSlicePosY + 1, 100, currentSliceHeight - 2), _otherSlices.GetUserInSlice(realSlice));
            // draw slices up
            for (int i = 1; i <= halfSliceCount; i++)
            {
                if (_fakeSlice - i < 1)
                {
                    break;
                }
                realSlice = _loader.GetRealSliceNumber(_fakeSlice - i);
                if (GUI.Button(new Rect(left + sliderWidth + 1, currentSlicePosY - sliceHeight * i + 1, sliceWidth - 2, sliceHeight - 2), "" + realSlice, _sliceStyle))
                {
                    if (_slicesChanged == 0)
                    {
                        _fakeSlice = _fakeSlice - i;
                    }
                }
                GUIUserName(new Rect(left + sliderWidth + sliceWidth + 5, currentSlicePosY - sliceHeight * i + 1, 100, sliceHeight - 2), _otherSlices.GetUserInSlice(realSlice));
            }
            // draw slices down
            for (int i = 1; i <= halfSliceCount; i++)
            {
                if (_fakeSlice + i > _loader.SlicesCount)
                {
                    break;
                }
                realSlice = _loader.GetRealSliceNumber(_fakeSlice + i);
                if (GUI.Button(new Rect(left + sliderWidth + 1, currentSlicePosY + currentSliceHeight + sliceHeight * (i - 1) + 1, sliceWidth - 2, sliceHeight - 2), "" + realSlice, _sliceStyle))
                {
                    if (_slicesChanged == 0)
                    {
                        _fakeSlice = _fakeSlice + i;
                    }
                }
                GUIUserName(new Rect(left + sliderWidth + sliceWidth + 5, currentSlicePosY + currentSliceHeight + sliceHeight * (i - 1) + 1, 100, sliceHeight - 2), _otherSlices.GetUserInSlice(realSlice));
            }
        }
    }
    // Use this for initialization
    void Start()
    {
        _assnetwork  = GameObject.Find("Network").GetComponent <ASSNetwork>();
        _slicer      = GameObject.Find("Main").GetComponent <Slicer>();
        _loader      = GameObject.Find("Main").GetComponent <SliceLoader>();
        _indicator   = transform.parent.GetComponent <SliceIndicator>();
        _otherSlices = GameObject.Find("Main").GetComponent <OtherSlices>();

        _slicePreview      = GameObject.Find("SlicePreview");
        _slicePreviewFront = GameObject.Find("SlicePreviewFront").GetComponent <Renderer>();
        _slicePreviewBack  = GameObject.Find("SlicePreviewBack").GetComponent <Renderer>();
        _slicePreviewFront.material.mainTexture = _slicePreviewBack.material.mainTexture = _loader.GetThumbnail(_slicer.Slice);
        _slicePreview.SetActive(false);

        _sliceNr = transform.parent.gameObject.GetComponent <SliceIndicator>().sliceNr;

        _sliceHandle = GameObject.Find("SliceHandle").transform;

        _snapThreshold = GameObject.Find("Main").GetComponent <ConfigProperties>().snapThreshold;

        _movingHandle = false;
    }