Example #1
0
        /// <summary>
        /// Returns position and rotation offsets from viewpoint to camera
        /// </summary>
        public void CalculateOffsets(VRC_AvatarDescriptor desc, Camera cam)
        {
            if (!desc || !cam)
            {
                return;
            }

            SerialTransform offsets = GetOffsetsFromViewpoint(desc, cam);

            if (offsets)
            {
                offsetMode           = CameraOffsetMode.Viewpoint;
                positionOffset       = offsets.localPosition;
                rotationAnglesOffset = offsets.localEulerAngles;
            }
        }
Example #2
0
        /// <summary>
        /// Returns position and rotation offsets from target transform to camera
        /// </summary>
        public void CalculateOffsets(Transform target, Camera cam)
        {
            if (!target || !cam)
            {
                return;
            }

            if (target == target.root)
            {
                offsetMode = CameraOffsetMode.AvatarRoot;
            }
            else
            {
                offsetMode = CameraOffsetMode.Transform;
            }

            Transform dummy = null;

            try
            {
                dummy          = new GameObject("Dummy").transform;
                dummy.position = target.position;
                dummy.rotation = target.rotation;

                Transform oldParent = cam.transform.parent;
                cam.transform.parent = dummy;

                positionOffset       = cam.transform.localPosition;
                rotationAnglesOffset = cam.transform.localEulerAngles;
                transformPath        = Helpers.GetGameObjectPath(target);

                cam.transform.parent = oldParent;
            }
            finally
            {
                if (dummy)
                {
                    Helpers.DestroyAppropriate(dummy.gameObject);
                }
            }
        }