Beispiel #1
0
    // TODO: this should only be visible if a database is loaded

    void Start()
    {
        Camera          = Camera.main;
        UserObject      = Camera.transform.parent.gameObject;
        TerrainTester   = GameObject.Find("TerrainTester");
        SurfaceCollider = TerrainTester.GetComponent <Cognitics.UnityCDB.SurfaceCollider>();
    }
Beispiel #2
0
 private void Start()
 {
     Input.simulateMouseWithTouches = false;
     ModeButton = ModeButtonGameObject.GetComponent <ModeButton>();
     //StartCoroutine(SurfaceCollider_CR());
     surfaceCollider          = GetComponent <Cognitics.UnityCDB.SurfaceCollider>();;
     TerrainTester            = GameObject.Find("TerrainTester");
     SurfaceCollider          = TerrainTester.GetComponent <Cognitics.UnityCDB.SurfaceCollider>();
     eventDataCurrentPosition = new PointerEventData(EventSystem.current);
 }
Beispiel #3
0
    static public void Calculate()
    {
        pinchDistance   = pinchDistanceDelta = 0;
        turnAngle       = turnAngleDelta = 0;
        terrainTester   = GameObject.Find("TerrainTester");
        SurfaceCollider = terrainTester.GetComponent <Cognitics.UnityCDB.SurfaceCollider>();

        if (Input.touchCount == 2)
        {
            Touch touch1 = Input.touches[0];
            Touch touch2 = Input.touches[1];

            if (touch1.phase == TouchPhase.Moved || touch2.phase == TouchPhase.Moved || Input.GetKey(KeyCode.F))
            {
                Ray ray = Camera.main.ViewportPointToRay(new Vector2(.5f, .5f));
                terrainTester.transform.position = Camera.main.transform.position;

                while (true)
                {
                    if (!checkForPoint)
                    {
                        break;
                    }
                    terrainTester.transform.position += ray.direction * 15f;
                    SurfaceCollider.TerrainElevationGetter();
                    if (terrainTester.transform.position.y < SurfaceCollider.minCameraElevation)
                    {
                        break;
                    }
                    if (Vector3.SqrMagnitude(terrainTester.transform.position - Camera.main.transform.position) > (50000f * 50000f))
                    {
                        pivotPoint    = Vector3.positiveInfinity;
                        checkForPoint = false;
                    }
                }

                pivotPoint = terrainTester.transform.position;

                touchDirection = Vector2.Dot(touch1.deltaPosition, touch2.deltaPosition);
                twoTouchDelta  = touch1.deltaPosition.y + touch2.deltaPosition.y;
                pinchDistance  = Vector2.Distance(touch1.position, touch2.position);
                float prevDistance = Vector2.Distance(touch1.position - touch1.deltaPosition, touch2.position - touch2.deltaPosition);

                pinchDistanceDelta = pinchDistance - prevDistance;

                if (Mathf.Abs(pinchDistanceDelta) > minPinchDistance)
                {
                    pinchDistanceDelta *= pinchRatio;
                }
                else
                {
                    pinchDistance = pinchDistanceDelta = 0;
                }

                turnAngle = Angle(touch1.position, touch2.position);
                float prevTurn = Angle(touch1.position - touch1.deltaPosition, touch2.position - touch2.deltaPosition);
                turnAngleDelta = Mathf.DeltaAngle(prevTurn, turnAngle);

                if (Mathf.Abs(turnAngleDelta) > minTurnAngle)
                {
                    turnAngleDelta *= pinchTurnRatio;
                }
                else
                {
                    turnAngle = turnAngleDelta = 0;
                }
            }
        }
    }