Пример #1
0
    private void OnCameraRotate()
    {
        xAxis.transform.rotation = RotationOfDirection(Vector3.right);
        yAxis.transform.rotation = RotationOfDirection(Vector3.up);
        zAxis.transform.rotation = RotationOfDirection(Vector3.forward);

        Quaternion xQuaternion = RotationOfNormal(Vector3.right);
        Quaternion yQuaternion = RotationOfNormal(Vector3.up);
        Quaternion zQuaternion = RotationOfNormal(Vector3.forward);

        for (int i = 0; i < count - 1; i++)
        {
            xPoints[i].transform.rotation = xQuaternion;
            yPoints[i].transform.rotation = yQuaternion;
            zPoints[i].transform.rotation = zQuaternion;
        }

        for (int i = 0; i < count - 1; i++)
        {
            xSigns[i].transform.position = PositionOfDirection(xPos[i], Vector3.forward, POINT_SIGN_BIAS);
            ySigns[i].transform.position = PositionOfDirection(yPos[i], Vector3.left, POINT_SIGN_BIAS);
            zSigns[i].transform.position = PositionOfDirection(zPos[i], Vector3.up, POINT_SIGN_BIAS);
        }

        // Arrow
        Ray xRay = new Ray(Vector3.zero, Vector3.left);
        Ray yRay = new Ray(Vector3.zero, Vector3.down);
        Ray zRay = new Ray(Vector3.zero, Vector3.back);

        Vector3 xArrowPos, yArrowPos, zArrowPos;

        geoCamera.IntersectRay(xRay, out xArrowPos);
        geoCamera.IntersectRay(yRay, out yArrowPos);
        geoCamera.IntersectRay(zRay, out zArrowPos);

        float offset = count / 2.0f;

        xArrowPos.x = Mathf.Min(offset, xArrowPos.x);
        yArrowPos.y = Mathf.Min(offset, yArrowPos.y);
        zArrowPos.z = Mathf.Min(offset, zArrowPos.z);

        xArrow.transform.position = xArrowPos;
        yArrow.transform.position = yArrowPos;
        zArrow.transform.position = zArrowPos;

        xArrowPos.x -= AXIS_SIGN_OFFSET;
        yArrowPos.y -= AXIS_SIGN_OFFSET;
        zArrowPos.z -= AXIS_SIGN_OFFSET;

        xSign.transform.position = PositionOfDirection(xArrowPos, Vector3.forward, AXIS_SIGN_BIAS);
        ySign.transform.position = PositionOfDirection(yArrowPos, Vector3.left, AXIS_SIGN_BIAS);
        zSign.transform.position = PositionOfDirection(zArrowPos, Vector3.up, AXIS_SIGN_BIAS);
    }