示例#1
0
    public override void OnSetRotation(CameraController.SetRotationPayload payload)
    {
        var eulerDir = Vector3.zero;

        if (payload.cameraTarget.HasValue)
        {
            var newPos       = new Vector3(payload.x, payload.y, payload.z);
            var cameraTarget = payload.cameraTarget.GetValueOrDefault();
            var dirToLook    = (cameraTarget - newPos);
            eulerDir = Quaternion.LookRotation(dirToLook).eulerAngles;
        }

        defaultVirtualCameraAsFreeLook.m_XAxis.Value = eulerDir.y;
        defaultVirtualCameraAsFreeLook.m_YAxis.Value = eulerDir.x;
    }
示例#2
0
    public override void OnSetRotation(CameraController.SetRotationPayload payload)
    {
        var eulerDir = Vector3.zero;

        if (payload.cameraTarget.HasValue)
        {
            var newPos       = new Vector3(payload.x, payload.y, payload.z);
            var cameraTarget = payload.cameraTarget.GetValueOrDefault();
            var dirToLook    = (cameraTarget - newPos);
            eulerDir = Quaternion.LookRotation(dirToLook).eulerAngles;
        }

        if (pov != null)
        {
            pov.m_HorizontalAxis.Value = eulerDir.y;
            pov.m_VerticalAxis.Value   = eulerDir.x;
        }
    }
示例#3
0
    public override void OnSetRotation(CameraController.SetRotationPayload payload)
    {
        var eulerDir = Vector3.zero;

        if (payload.cameraTarget.HasValue)
        {
            var newPos       = new Vector3(payload.x, payload.y, payload.z);
            var cameraTarget = payload.cameraTarget.GetValueOrDefault();
            var dirToLook    = (cameraTarget - newPos);
            eulerDir = Quaternion.LookRotation(dirToLook).eulerAngles;
        }

        if (defaultVirtualCamera is CinemachineVirtualCamera vcamera)
        {
            var pov = vcamera.GetCinemachineComponent <CinemachinePOV>();
            pov.m_HorizontalAxis.Value = eulerDir.y;
            pov.m_VerticalAxis.Value   = eulerDir.x;
        }
    }
示例#4
0
        public void ReactToSetRotation(float lookAtX, float lookAtY, float lookAtZ)
        {
            var payload = new CameraController.SetRotationPayload()
            {
                x            = 0,
                y            = 0,
                z            = 0,
                cameraTarget = new Vector3(lookAtX, lookAtY, lookAtZ)
            };

            var rotationEuler = Quaternion.LookRotation(payload.cameraTarget.Value).eulerAngles;

            cameraController.SetRotation(JsonConvert.SerializeObject(payload, Formatting.None, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }));

            Assert.AreEqual(cameraController.GetRotation().y, rotationEuler.y);
            Assert.AreEqual(cameraController.GetRotation().x, rotationEuler.x);
        }
示例#5
0
        public void SetBuilderCameraRotation(string yawpitchRotation)
        {
            if (LOG_MESSAGES)
            {
                Debug.Log($"RECEIVE: SetBuilderCameraRotation {yawpitchRotation}");
            }
            if (!string.IsNullOrEmpty(yawpitchRotation))
            {
                string[] splitRotationStr = yawpitchRotation.Split(',');
                if (splitRotationStr.Length == 2)
                {
                    float yaw, pitch = 0;
                    float.TryParse(splitRotationStr[0], out yaw);
                    float.TryParse(splitRotationStr[1], out pitch);

                    if (isPreviewMode)
                    {
                        if (DCLCharacterController.i != null)
                        {
                            DCLCharacterController.i.transform.rotation = Quaternion.Euler(0f, yaw * Mathf.Rad2Deg, 0f);
                        }

                        if (cameraController)
                        {
                            var cameraRotation = new CameraController.SetRotationPayload()
                            {
                                x = pitch * Mathf.Rad2Deg,
                                y = 0,
                                z = 0
                            };
                            cameraController.SetRotation(JsonUtility.ToJson(cameraRotation));
                        }
                    }
                    else
                    {
                        OnSetCameraRotation?.Invoke(yaw * Mathf.Rad2Deg, pitch * Mathf.Rad2Deg);
                    }
                }
            }
        }
        public IEnumerator OnPointerHoverFeedbackIsDisplayedCorrectly()
        {
            IDCLEntity entity;
            BoxShape   shape;

            shape = TestHelpers.InstantiateEntityWithShape <BoxShape, BoxShape.Model>(
                scene,
                DCL.Models.CLASS_ID.BOX_SHAPE,
                Vector3.zero,
                out entity,
                new BoxShape.Model()
            {
            });

            TestHelpers.SetEntityTransform(scene, entity, new Vector3(8, 2, 10), Quaternion.identity, new Vector3(3, 3, 3));
            yield return(shape.routine);

            var OnPointerDownModel = new OnPointerDown.Model()
            {
                type = OnPointerDown.NAME,
                uuid = "pointerevent-1"
            };

            var component = TestHelpers.EntityComponentCreate <OnPointerDown, OnPointerDown.Model>(scene, entity,
                                                                                                   OnPointerDownModel, CLASS_ID_COMPONENT.UUID_CALLBACK);

            Assert.IsTrue(component != null);

            yield return(null);

            var cursorController = GameObject.FindObjectOfType <CursorController>();

            // Check cursor shows normal sprite
            Assert.AreEqual(cursorController.cursorImage.sprite, cursorController.normalCursor);

            DCLCharacterController.i.PauseGravity();
            DCLCharacterController.i.SetPosition(new Vector3(8, 1, 7f));

            var cameraController = GameObject.FindObjectOfType <CameraController>();

            // Rotate camera towards the interactive object
            var cameraRotationPayload = new CameraController.SetRotationPayload()
            {
                x = 45,
                y = 0,
                z = 0
            };

            cameraController.SetRotation(JsonConvert.SerializeObject(cameraRotationPayload, Formatting.None, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }));

            yield return(null);

            // Check cursor shows hover sprite
            Assert.AreEqual(cursorController.cursorImage.sprite, cursorController.hoverCursor);

            // Rotate the camera away from the interactive object
            cameraRotationPayload = new CameraController.SetRotationPayload()
            {
                x            = 0,
                y            = 0,
                z            = 0,
                cameraTarget = (DCLCharacterController.i.transform.position - entity.gameObject.transform.position)
            };

            cameraController.SetRotation(JsonConvert.SerializeObject(cameraRotationPayload, Formatting.None, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }));

            yield return(null);

            // Check cursor shows normal sprite
            Assert.AreEqual(cursorController.cursorImage.sprite, cursorController.normalCursor);

            DCLCharacterController.i.ResumeGravity();
        }
示例#7
0
 public virtual void OnSetRotation(CameraController.SetRotationPayload payload)
 {
 }