示例#1
0
 /// <summary>
 /// Release all resources. Package is unusable after Release.
 /// </summary>
 public void Release()
 {
     Destroy(spacePin);
     spacePin = null;
     Destroy(highlightProxy);
     highlightProxy = null;
 }
示例#2
0
 /// <summary>
 /// Release all resources. Package is unusable after Release.
 /// </summary>
 public void Release()
 {
     SimpleConsole.AddLine(log, $"Release SpacePin {spacePin.name}");
     Destroy(spacePin);
     spacePin = null;
     Destroy(highlightProxy);
     highlightProxy = null;
 }
        private SpacePinOrientable CreateSpacePin(Transform t)
        {
            Debug.Assert(orienter != null);
            SpacePinOrientable pin = t.gameObject.AddComponent <SpacePinOrientable>();

            pin.Orienter = orienter;
            return(pin);
        }
示例#4
0
        public IEnumerator SaveLoadTestSpacePinOrientable()
        {
            GameObject rig = loadHelper.LoadBasicSceneRig();

            GameObject[]         gos  = new GameObject[pinData.Length];
            SpacePinOrientable[] spos = new SpacePinOrientable[pinData.Length];

            Quaternion rotThirty = Quaternion.AngleAxis(30.0f, new Vector3(0.0f, 1.0f, 0.0f));

            GameObject orienterGO = new GameObject("Orienter");
            IOrienter  orienter   = orienterGO.AddComponent <Orienter>();

            for (int i = 0; i < pinData.Length; ++i)
            {
                gos[i]           = new GameObject("GOs_" + i.ToString());
                spos[i]          = gos[i].AddComponent <SpacePinOrientable>();
                spos[i].Orienter = orienter;
            }
            /// Wait for their Start's to be called.
            yield return(null);

            for (int i = 0; i < spos.Length; ++i)
            {
                spos[i].transform.SetGlobalPose(pinData[i].virtualPose);
                spos[i].ResetModelingPose();
                Vector3 rotPosition = rotThirty * pinData[i].virtualPose.position;
                spos[i].SetFrozenPosition(rotPosition);
            }
            yield return(null);

            IAlignmentManager alignMgr = WorldLockingManager.GetInstance().AlignmentManager;

            /// This is an arbitrary position, not actually one of the pinned positions currently.
            alignMgr.ComputePinnedPose(new Pose(pinData[0].lockedPose.position, Quaternion.identity));
            Quaternion rot      = Quaternion.Inverse(alignMgr.PinnedFromLocked.rotation);
            bool       isThirty = rot == rotThirty;

            Assert.IsTrue(isThirty);

            GameObject.Destroy(rig);

            yield return(null);
        }