Exemple #1
0
        protected override void UpdateMonitor(P3dPaintableTexture paintableTexture)
        {
            var renderTexture = paintableTexture.Current;
            var temporary     = default(RenderTexture);

            if (P3dHelper.Downsample(renderTexture, downsampleSteps, ref temporary) == true)
            {
                Calculate(temporary, temporary, 1 << downsampleSteps);

                P3dHelper.ReleaseRenderTexture(temporary);
            }
            else
            {
                Calculate(renderTexture, temporary, 1);
            }
        }
    void Update()
    {
        if (isInGame)
        {
            if (Input.touchCount == 0)
            {
                PainterManager.Instacne.hitScreenData.ClearHitCache();
                PainterManager.Instacne.hitScreenData.ResetConnections();
                PainterManager.Instacne.hitScreenData.ClearFingers();

                PainterManager.Instacne.hitScreenData.enabled = false;

                textureScrollRect.enabled = true;
                timerForApplyTex          = 0;
                timerForGetTex            = 0;
                previouslyDetectedPiece   = null;
                clickingTex  = false;
                clickingGrad = false;
                chosenTex    = false;
                chosenGrad   = false;
                texture.gameObject.SetActive(false);
                gradTexture      = null;
                paintableObject  = null;
                paintableTexture = null;
                canPaint         = true;
                currentTHS       = null;
                DisconnectPaint3DTouches();
            }

            if (Input.touchCount > 0 || Input.GetMouseButtonDown(0))
            {
                if (AnimationManager.isFinishedAnimation)
                {
                    DeactivateObjectsOnScreenTouch();
                    AnimationManager.isFinishedAnimation = false;
                }
            }

            if (Input.touchCount == 1 && canPaintShoe)
            {
                touch = Input.GetTouch(0);

                if (!PainterManager.Instacne.hitScreenData.enabled)
                {
                    Invoke("EnableHitScreen", 0.15f);
                }

                if (touch.phase == TouchPhase.Stationary)
                {
                    if (clickingTex && !chosenTex)
                    {
                        timerForGetTex += Time.deltaTime;

                        if (timerForGetTex > 0.1f)
                        {
                            textureScrollRect.enabled = false;
                            chosenTex        = true;
                            timerForApplyTex = 0;
                            TextureHolderScript THS = currentTHS.transform.GetComponent <TextureHolderScript>();

                            texture.gameObject.SetActive(true);
                            texture.texture = THS.heldTexture;

                            Vector3 mousePos = Camera.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 100));
                            mousePos.z = texture.transform.position.z;
                            //Debug.DrawRay(Camera.transform.position, mousePos, Color.red);

                            texture.transform.position   = mousePos;
                            texture.transform.localScale = new Vector3(1, 1, 1);
                        }
                    }

                    if (clickingGrad && !chosenGrad)
                    {
                        timerForGetTex += Time.deltaTime;

                        if (timerForGetTex > 0.1f)
                        {
                            //textureScrollRect.enabled = false;
                            chosenGrad       = true;
                            timerForApplyTex = 0;
                            //TextureHolderScript THS = currentTHS.transform.GetComponent<TextureHolderScript>();

                            //texture.gameObject.SetActive(true);
                            //texture.texture = THS.heldTexture;

                            Vector3 mousePos = Camera.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 100));
                            mousePos.z = gradTexture.transform.position.z - 1;
                            //Debug.DrawRay(Camera.transform.position, mousePos, Color.red);

                            gradTexture.transform.position = mousePos;
                            //texture.transform.position = mousePos;
                            //texture.transform.localScale = new Vector3(1, 1, 1);
                        }
                    }
                }

                if (touch.phase == TouchPhase.Moved)
                {
                    timerForGetTex   = 0;
                    timerForApplyTex = 0;

                    if (chosenTex && !changingTexNow)
                    {
                        changingTexNow = true;
                        Vector3 mousePos = Camera.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 100));
                        mousePos.z = 75;
                        texture.transform.position   = mousePos;
                        texture.transform.localScale = new Vector3(1, 1, 1);
                        RaycastHit hit;
                        Ray        ray = Camera.ScreenPointToRay(touch.position);

                        //Debug.DrawRay(Camera.transform.position, mousePos, Color.red);
                        if (Physics.Raycast(ray, out hit, Mathf.Infinity))
                        {
                            if (hit.transform.CompareTag("ShoePiece") || hit.transform.CompareTag("ShoePieceNonPaintable"))
                            {
                                texture.transform.position   = new Vector3(hit.point.x, hit.point.y, hit.point.z - 1);
                                texture.transform.localScale = new Vector3(0.2f, 0.2f, 1);

                                timerForApplyTex += Time.deltaTime;

                                if (hit.transform.CompareTag("ShoePiece"))
                                {
                                    paintableObject  = hit.transform.GetComponent <P3dPaintable>();
                                    paintableTexture = hit.transform.GetComponent <P3dPaintableTexture>();
                                }
                            }
                        }
                        else
                        {
                            paintableObject  = null;
                            paintableTexture = null;
                            timerForApplyTex = 0;

                            //if (previouslyDetectedPiece)
                            //{
                            //    Renderer previouslyDetectedPieceRenderer = previouslyDetectedPiece.transform.GetComponent<Renderer>();
                            //    previouslyDetectedPieceRenderer.material.SetTexture("_BaseMap", null);
                            //    previouslyDetectedPiece = null;
                            //}
                        }

                        changingTexNow = false;
                    }

                    if (chosenGrad && !changingTexNow)
                    {
                        changingTexNow = true;
                        Vector3 mousePos = Camera.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 100));
                        mousePos.z = 74;
                        gradTexture.transform.position   = mousePos;
                        gradTexture.transform.localScale = new Vector3(1, 1, 1);
                        RaycastHit hit;
                        Ray        ray = Camera.ScreenPointToRay(touch.position);

                        //Debug.DrawRay(Camera.transform.position, mousePos, Color.red);
                        if (Physics.Raycast(ray, out hit, Mathf.Infinity))
                        {
                            if (hit.transform.CompareTag("ShoePiece") || hit.transform.CompareTag("ShoePieceNonPaintable"))
                            {
                                gradTexture.transform.position   = new Vector3(hit.point.x, hit.point.y, hit.point.z - 1);
                                gradTexture.transform.localScale = new Vector3(0.2f, 0.2f, 1);

                                timerForApplyTex += Time.deltaTime;

                                if (hit.transform.CompareTag("ShoePiece"))
                                {
                                    paintableObject  = hit.transform.GetComponent <P3dPaintable>();
                                    paintableTexture = hit.transform.GetComponent <P3dPaintableTexture>();
                                }
                            }
                        }
                        else
                        {
                            paintableObject  = null;
                            paintableTexture = null;
                            timerForApplyTex = 0;
                        }
                        changingTexNow = false;
                    }
                }

                if (touch.phase == TouchPhase.Ended)
                {
                    DisconnectPaint3DTouches();

                    if (chosenTex)
                    {
                        StartCoroutine(ChangeTexOnPiece(touch));
                    }

                    if (chosenGrad)
                    {
                        gradTexture.transform.localPosition = originalGradTexPos;
                        gradTexture.transform.localScale    = new Vector3(1, 1, 1);
                        StartCoroutine(ChangeGradOnPiece(touch));
                    }
                }
            }

            if (Input.touchCount >= 2 && canPaintShoe)
            {
                PainterManager.Instacne.hitScreenData.enabled = false;

                canPaint = false;
                //PainterManager.Instacne.hitScreenData.enabled = false;
                //PainterManager.Instacne.hitScreenData.Paint()


                Touch touchOne = Input.GetTouch(0);
                Touch touchTwo = Input.GetTouch(1);

                if (touchOne.phase == TouchPhase.Moved)
                {
                    if (toRotate.transform.eulerAngles.y < 320 && toRotate.transform.eulerAngles.y > 230)
                    {
                        float deltaX = touchOne.deltaPosition.x;
                        float deltaY = touchOne.deltaPosition.y;
                        ShoeRotationY  = deltaX * Time.deltaTime * rotationSpeedModifier;
                        ShoeRotationZ -= deltaY * Time.deltaTime * rotationSpeedModifier;
                    }
                    else
                    {
                        float deltaX = touchOne.deltaPosition.x;
                        float deltaY = touchOne.deltaPosition.y;
                        ShoeRotationY  = deltaX * Time.deltaTime * rotationSpeedModifier;
                        ShoeRotationZ += deltaY * Time.deltaTime * rotationSpeedModifier;
                    }

                    float rotateY = toRotate.transform.eulerAngles.y - ShoeRotationY;

                    ShoeRotationZ = Mathf.Clamp(ShoeRotationZ, -13, 13);

                    toRotate.transform.eulerAngles = new Vector3(0, rotateY, ShoeRotationZ);
                    //toRotate.transform.rotation = Quaternion.Euler(new Vector3(0, rotateY, rotateZ));
                }
            }
        }

        if (isSharingScreen)
        {
            if (Input.touchCount >= 2)
            {
                RotateSpecificScreen();
            }
        }

        if (UIManager.Instance.isLastScreen && UIManager.Instance.disableOnTouch.Count <= 0)
        {
            if (Input.touchCount >= 2)
            {
                UIManager.Instance.lastScreenAssetsNoShoe.SetActive(false);
                UIManager.Instance.designAgainFromShareScreen.SetActive(true);
                RotateSpecificScreen();
            }
        }
    }