/*--------------------------------------------------------------------------------------------*/ private void BuildCursor(HoverCursorDataProvider pProv, ICursorData pData) { var curGo = new GameObject(pData.Type + ""); curGo.transform.SetParent(gameObject.transform, false); TreeUpdater treeUp = curGo.AddComponent <TreeUpdater>(); HoverCursorFollower follow = curGo.AddComponent <HoverCursorFollower>(); follow.CursorDataProvider = pProv; follow.CursorType = pData.Type; follow.FollowCursorActive = false; follow.ScaleUsingCursorSize = true; HoverRendererCursorUpdater cursRendUp = curGo.AddComponent <HoverRendererCursorUpdater>(); cursRendUp.CursorRendererPrefab = CursorRendererPrefab; if (pData.Idle != null) { HoverRendererIdleUpdater idleRendUp = curGo.AddComponent <HoverRendererIdleUpdater>(); idleRendUp.IdleRendererPrefab = IdleRendererPrefab; } follow.Update(); //moves interface to the correct cursor transform treeUp.Update(); //force renderer creation }
// public void Start() { Debug.Log("DNAPanelController.Start()"); DNA_Model = DNAModel.Instance; //get the DNA Model. key = DNA_Model.niceName["Rattus norvegicus"]; seqLength = DNA_Model.data[key][1].Length; textureY = seqLength / textureX; numRows = 24; Debug.Log("numRows: " + numRows + " seqLength: " + seqLength + " textureX: " + textureX); //Load UIs DNAUI = GameObject.Find("CursorRenderers/Look/DNA_Letter_UI"); DNAUI.SetActive(false); RightIndexUI = GameObject.Find("CursorRenderers/RightIndex/DNA_Letter_UI"); RightIndexUI.SetActive(false); RightIndexSelection = GameObject.Find("CursorRenderers/RightIndex/HoverOpaqueCursorArcRenderer-Default"); // DNA_Model.readFile(Application.dataPath + "/StreamingAssets/Gria2Data/1L2Y_nuc.fasta"); //figure out where the user is looking and pointing. HoverLookCursor = Look.GetComponent <HoverCursorFollower>(); HoverRightIndexTransform = RightIndex.transform; //subscribe updateUV method to UVCoordChangedEvent. UVCoordChangedEvent += updateRightIndexUV; // UVCoordChangedEvent += updateLookUV; NiceNameChangedEvent += updateNiceNameKey; Debug.Log("added UVCoordChangedEvent events"); }
/////////////////////////////////////////////////////////////////////////////////////////////////*--------------------------------------------------------------------------------------------*/ private void UpdateCursorType(HoverCursorFollower pFollow) { if (UseFollowedCursorType) { Controllers.Set(CursorTypeName, this); CursorType = pFollow.CursorType; } }
/*--------------------------------------------------------------------------------------------*/ private void UpdateRenderer(HoverCursorFollower pFollower) { ICursorData cursorData = pFollower.GetCursorData(); HoverIndicator cursorInd = CursorRenderer.GetIndicator(); CursorRenderer.Controllers.Set(SettingsControllerMap.GameObjectActiveSelf, this); CursorRenderer.Controllers.Set(HoverRendererCursor.IsRaycastName, this); CursorRenderer.Controllers.Set(HoverRendererCursor.RaycastWorldOriginName, this); cursorInd.Controllers.Set(HoverIndicator.HighlightProgressName, this); cursorInd.Controllers.Set(HoverIndicator.SelectionProgressName, this); RendererUtil.SetActiveWithUpdate(CursorRenderer, cursorData.IsActive); CursorRenderer.IsRaycast = cursorData.IsRaycast; CursorRenderer.RaycastWorldOrigin = cursorData.WorldPosition; cursorInd.HighlightProgress = cursorData.MaxItemHighlightProgress; cursorInd.SelectionProgress = cursorData.MaxItemSelectionProgress; }
/*--------------------------------------------------------------------------------------------*/ private void SetScale(float pScaleFactor) { HoverCursorFollower follower = GetComponent <HoverCursorFollower>(); Transform openTx = GetComponent <HovercastInterface>().OpenItem.transform; for (int i = 0; i < follower.ObjectsToActivate.Length; i++) { Transform tx = follower.ObjectsToActivate[i].transform; if (tx == openTx) { continue; } tx.localScale = Vector3.one * pScaleFactor; } }
/*--------------------------------------------------------------------------------------------*/ public void TreeUpdate() { HovercastInterface cast = gameObject.GetComponent <HovercastInterface>(); HoverCursorFollower follow = cast.GetComponent <HoverCursorFollower>(); UpdateCursorType(follow); if (cast.BackItem.IsEnabled) { ICursorData cursorData = follow.CursorDataProvider.GetCursorData(CursorType); float triggerStrength = cursorData.TriggerStrength; UpdateTrigger(cast, triggerStrength); UpdateOverrider(cast.BackItem, triggerStrength); } Controllers.TryExpireControllers(); }
/*--------------------------------------------------------------------------------------------*/ public void SwitchHands() { HoverCursorFollower follow = GetComponent <HoverCursorFollower>(); HoverCursorDataProvider curProv = follow.CursorDataProvider; ICursorDataForInput stdFol = curProv.GetCursorDataForInput(StandardFollowCursor); ICursorDataForInput swiFol = curProv.GetCursorDataForInput(SwitchedFollowCursor); ICursorDataForInput stdInt = curProv.GetCursorDataForInput(StandardInteractionCursor); ICursorDataForInput swiInt = curProv.GetCursorDataForInput(SwitchedInteractionCursor); HovercastMirrorSwitcher mirror = GetComponent <HovercastMirrorSwitcher>(); bool isMirror = !mirror.UseMirrorLayout; if (isMirror) { mirror.UseMirrorLayout = true; follow.CursorType = SwitchedFollowCursor; swiFol.SetCapability(CursorCapabilityType.TransformOnly); swiInt.SetCapability(CursorCapabilityType.Full); stdFol.SetCapability(CursorCapabilityType.None); stdInt.SetCapability(CursorCapabilityType.None); swiFol.gameObject.SetActive(true); swiInt.gameObject.SetActive(true); stdFol.gameObject.SetActive(false); stdInt.gameObject.SetActive(false); } else { mirror.UseMirrorLayout = false; follow.CursorType = StandardFollowCursor; swiFol.SetCapability(CursorCapabilityType.None); swiInt.SetCapability(CursorCapabilityType.None); stdFol.SetCapability(CursorCapabilityType.TransformOnly); stdInt.SetCapability(CursorCapabilityType.Full); swiFol.gameObject.SetActive(false); swiInt.gameObject.SetActive(false); stdFol.gameObject.SetActive(true); stdInt.gameObject.SetActive(true); } }
/*--------------------------------------------------------------------------------------------*/ protected override void PerformAdjustments() { HoverCursorDataProvider cursProv = FindObjectOfType <HoverCursorDataProvider>(); ICursorDataForInput palL = cursProv.GetCursorDataForInput(CursorType.LeftPalm); ICursorDataForInput indR = cursProv.GetCursorDataForInput(CursorType.RightIndex); ICursorDataForInput look = cursProv.GetCursorDataForInput(CursorType.Look); HovercastInterface cast = FindObjectOfType <HovercastInterface>(); HoverCursorFollower castFollow = cast.GetComponent <HoverCursorFollower>(); HoverCursorRendererUpdater[] cursorRendUps = Resources.FindObjectsOfTypeAll <HoverCursorRendererUpdater>(); foreach (HoverCursorRendererUpdater rendUp in cursorRendUps) { CursorType ct = rendUp.GetComponent <HoverCursorFollower>().CursorType; rendUp.gameObject.SetActive(ct != CursorType.LeftPalm && ct != CursorType.RightPalm); } foreach (ICursorData cursorData in cursProv.Cursors) { ICursorDataForInput cursorDataInp = cursProv.GetCursorDataForInput(cursorData.Type); cursorDataInp.SetCapability(CursorCapabilityType.None); } palL.SetCapability(CursorCapabilityType.TransformOnly); indR.SetCapability(CursorCapabilityType.Full); look.SetCapability(CursorCapabilityType.TransformOnly); cast.transform.GetChild(0).localPosition = new Vector3(0, 0, 0.02f); //moves "TransformAdjuster" castFollow.CursorType = palL.Type; //for non-playing editor... palL.SetWorldRotation(Quaternion.Euler(0, 160, 80)); //face the camera (for editor) castFollow.Update(); //moves interface to the correct cursor transform cast.GetComponent <TreeUpdater>().Update(); //forces entire interface to update }
public void Start() { Debug.Log("RNAPanelController.Start()"); RNA_Model = RNAModel.Instance; //get the RNA Model.Rattus norvegicus key = RNA_Model.niceName["Rattus norvegicus"]; //load the default key on start. seqLength = RNA_Model.data[key][1].Length; textureY = seqLength / textureX; numRows = 12; //Load UIs RNAUI = GameObject.Find("CursorRenderers/Look/DNA_Letter_UI"); RNAUI.SetActive(false); RightIndexUI = GameObject.Find("CursorRenderers/RightIndex/DNA_Letter_UI"); RightIndexUI.SetActive(false); RightIndexSelection = GameObject.Find("CursorRenderers/RightIndex/HoverOpaqueCursorArcRenderer-Default"); //figure out where the user is looking and pointing. HoverLookCursor = Look.GetComponent <HoverCursorFollower>(); HoverRightIndexTransform = RightIndex.transform; //subscribe updateUV method to UVCoordChangedEvent. UVCoordChangedEvent += updateRightIndexUV; NiceNameChangedEvent += updateNiceNameKey; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void PerformBuild() { TreeUpdater treeUp = gameObject.AddComponent <TreeUpdater>(); HoverCursorFollower follow = gameObject.AddComponent <HoverCursorFollower>(); HovercastInterface inter = gameObject.AddComponent <HovercastInterface>(); //// var adjustGo = new GameObject("TransformAdjuster"); adjustGo.transform.SetParent(transform, false); adjustGo.transform.localPosition = new Vector3(0, 0, 0.02f); adjustGo.transform.localRotation = Quaternion.Euler(0, 180, 80); var openItemGo = new GameObject("OpenItem"); openItemGo.transform.SetParent(adjustGo.transform, false); openItemGo.transform.localPosition = new Vector3(0, -0.05f, 0); var titleItemGo = new GameObject("TitleItem"); titleItemGo.transform.SetParent(adjustGo.transform, false); var backItemGo = new GameObject("BackItem"); backItemGo.transform.SetParent(adjustGo.transform, false); var rowContGo = new GameObject("Rows"); rowContGo.transform.SetParent(adjustGo.transform, false); rowContGo.AddComponent <TreeUpdater>(); var row0Go = new GameObject("Root"); row0Go.transform.SetParent(rowContGo.transform, false); //// BuildOpenItem(openItemGo); BuildTitleItem(titleItemGo); BuildBackItem(backItemGo); BuildRow(row0Go, "Hovercast"); if (IncludeExampleRows) { BuildExampleRows(rowContGo, row0Go); } adjustGo.AddComponent <TreeUpdater>(); //after building items //// follow.CursorType = (AttachToLeftHand ? CursorType.LeftPalm : CursorType.RightPalm); follow.ObjectsToActivate = new[] { openItemGo, titleItemGo, backItemGo, rowContGo }; inter.RowContainer = rowContGo.transform; inter.ActiveRow = row0Go.GetComponent <HoverLayoutArcRow>(); inter.OpenItem = openItemGo.GetComponent <HoverItemDataSelector>(); inter.TitleItem = titleItemGo.GetComponent <HoverItemDataText>(); inter.BackItem = backItemGo.GetComponent <HoverItemDataSelector>(); HovercastOpenTransitioner openTrans = gameObject.AddComponent <HovercastOpenTransitioner>(); HovercastRowTransitioner rowTrans = gameObject.AddComponent <HovercastRowTransitioner>(); rowTrans.RowEntryTransition = HovercastRowSwitchingInfo.RowEntryType.FromInside; #if UNITY_EDITOR UnityEditor.Events.UnityEventTools.AddPersistentListener( inter.OnOpenToggledEvent, openTrans.OnOpenToggled); UnityEditor.Events.UnityEventTools.AddPersistentListener( inter.OnRowSwitchedEvent, rowTrans.OnRowSwitched); #else inter.OnOpenToggledEvent.AddListener(openTrans.OnOpenToggled); inter.OnRowSwitchedEvent.AddListener(rowTrans.OnRowSwitched); #endif gameObject.AddComponent <HovercastHighlightPreventer>(); HovercastBackCursorTrigger backTrig = gameObject.AddComponent <HovercastBackCursorTrigger>(); backTrig.BackTriggerCursorType = follow.CursorType; HovercastActiveDirection actDir = gameObject.AddComponent <HovercastActiveDirection>(); actDir.ChildForActivation = adjustGo; HovercastMirrorSwitcher mirror = gameObject.AddComponent <HovercastMirrorSwitcher>(); mirror.UseMirrorLayout = !AttachToLeftHand; gameObject.AddComponent <HovercastAlphaUpdater>(); if (AutoRotateHandToFaceCamera) { HoverCursorDataProvider curDataProv = FindObjectOfType <HoverCursorDataProvider>(); ICursorDataForInput curData = curDataProv.GetCursorDataForInput(follow.CursorType); float addRotZ = 80 * (AttachToLeftHand ? 1 : -1); actDir.TreeUpdate(); //forces search for the "facing" transform curData.transform.LookAt(actDir.ActiveWhenFacingTransform, Vector3.up); curData.transform.localRotation *= Quaternion.Euler(0, 0, addRotZ); } follow.Update(); //moves interface to the correct cursor transform treeUp.Update(); //forces entire interface to update }