private bool ShouldUpdateOffset(Transform currentElementTransform, TransformOffset previousElementOffset, ref TransformOffset newOffset)
 {
     newOffset.position = currentElementTransform.localPosition.ToSpatialVector3f();
     newOffset.rotation = currentElementTransform.localRotation.eulerAngles.ToSpatialVector3f();
     return(!(MathUtils.ApproximatelyEqual(newOffset.position, previousElementOffset.position) &&
              MathUtils.ApproximatelyEqual(newOffset.rotation, previousElementOffset.rotation)));
 }
コード例 #2
0
 private static void Copy(MenuCommand command)
 {
     if (m_InspectedProperty != null)
     {
         m_CopiedObject = m_InspectedProperty.GetValue <TransformOffset>().GetClone();
     }
 }
        void Update()
        {
            if ((!VrCamera.activeInHierarchy || !LeftController.activeInHierarchy || !RightController.activeInHierarchy) && (Time.time - LastWarningTimestamp) >= 1)
            {
                LastWarningTimestamp = Time.time;
                Debug.LogWarning("One or more VR Peripherals not active in hierarchy!");
            }

            var previousOffsets = VRPeripheralOffsetsWriter.Data;
            var offsetsUpdate   = new VRPeripheralOffsets.Update();
            var newOffset       = new TransformOffset();

            if (LeftController.activeInHierarchy && ShouldUpdateOffset(LeftController.transform, previousOffsets.leftController, ref newOffset))
            {
                offsetsUpdate.SetLeftController(newOffset);
            }

            if (RightController.activeInHierarchy && ShouldUpdateOffset(RightController.transform, previousOffsets.rightController, ref newOffset))
            {
                offsetsUpdate.SetRightController(newOffset);
            }

            if (VrCamera.activeInHierarchy && ShouldUpdateOffset(VrCamera.transform, previousOffsets.head, ref newOffset))
            {
                offsetsUpdate.SetHead(newOffset);
            }

            VRPeripheralOffsetsWriter.Send(offsetsUpdate);
        }
コード例 #4
0
 public void RegisterInstance(TransformOffset newInstance)
 {
     if (!registered)
     {
         instances.Add(newInstance, this);
         registered = true;
     }
 }
コード例 #5
0
 // Use this for initialization
 void Start()
 {
     // anchor = new Vector3(-.5f, 0, 0);
     scaleOffset = GetComponent <TransformOffset>();
     joint       = GetComponent <HingeJoint2D>();
     if (currentSegment < maxSegments)
     {
         nextSegment = Instantiate(this.gameObject, transform.position + new Vector3(transform.localScale.x, 0, 0), Quaternion.identity);
         //nextSegment = Instantiate(this.gameObject, transform.localPosition + new Vector3(.03f, 0, 0), Quaternion.identity);
         currentSegment += 1;
         nextSegment.GetComponent <HingeJoint2D>().connectedBody = this.GetComponent <Rigidbody2D>();
     }
 }
コード例 #6
0
    protected virtual void OnSceneGUI()
    {
        myTarget = (TransformOffset)target;
        //myTarget.CreateScriptableObject();
        EditorGUI.BeginChangeCheck();
        widgetPos = Handles.PositionHandle(myTarget.Offset, Quaternion.identity);
        Vector3 newScale = Handles.ScaleHandle(myTarget.transform.localScale, widgetPos, Quaternion.identity, 1);

        if (EditorGUI.EndChangeCheck())
        {
            myTarget.Offset = widgetPos;
            Vector3 deltaScale = new Vector3(newScale.x / myTarget.transform.localScale.x, newScale.y / myTarget.transform.localScale.y, newScale.z / myTarget.transform.localScale.z);
            if (deltaScale != Vector3.one)
            {
                myTarget.ScaleOffset(deltaScale);
            }
        }
    }
コード例 #7
0
    public override void OnInspectorGUI()
    {
        myTarget = (TransformOffset)target;
        //myTarget.CreateScriptableObject();
        Vector3 displayOffset = myTarget.Offset;

        myTarget.UseLocalCoords = EditorGUILayout.Toggle("UseLocalCoords", myTarget.UseLocalCoords);
        if (myTarget.UseLocalCoords)
        {
            displayOffset = myTarget.Offset - myTarget.transform.position;
        }
        displayOffset = EditorGUILayout.Vector3Field("Offset", displayOffset);
        if (myTarget.UseLocalCoords)
        {
            myTarget.Offset = myTarget.transform.position + displayOffset;
        }
        else
        {
            myTarget.Offset = displayOffset;
        }
        myTarget.UniformDisplacement = EditorGUILayout.Toggle("Uniform Displacement", myTarget.UniformDisplacement);
        //myTarget.UniformDisplacement = EditorGUILayout.Toggle("Uniform Displacement", myTarget.UniformDisplacement);
    }
コード例 #8
0
 private void SetVRPeripheralModelTransform(Transform vrElement, TransformOffset offset)
 {
     vrElement.localPosition = offset.position.ToUnityVector();
     vrElement.localRotation = Quaternion.Euler(offset.rotation.ToUnityVector());
 }