// Start Up private void Awake() { // MRTK components to add manipHandler = gameObject.AddComponent <ManipulationHandler>(); manipHandler.TwoHandedManipulationType = ManipulationHandler.TwoHandedManipulation.MoveRotate; // Other components codeBlockSnap = gameObject.AddComponent <CodeBlockSnap>(); snapColliders = GetComponentInChildren <SnapColliderGroup>(); // Setup SetMyBlockInternalArg(); CodeBlockManager.instance.RegisterCodeBlock(this); // ArgListManager set up codeBlockArgumentList = gameObject.AddComponent <CodeBlockArgumentList>(); codeBlockArgumentList.SetUp(this); if (GetComponent <ManipulationLogger>() == null) { gameObject.AddComponent <ManipulationLogger>(); } UpdateText(); }
private void OnTriggerExit(Collider collision) { collisionCodeBlockSnap = GetCollidersCodeBlockSnap(collision); if (collisionCodeBlockSnap == CodeBlockSnap.CurrentlyDraggingCodeBlockSnap) { collisionCodeBlockSnap?.RemoveAsCurSnapColliderInContact(this); } }
private void OnTriggerEnter(Collider collision) { collisionCodeBlockSnap = GetCollidersCodeBlockSnap(collision); // TODO: mega hack, need to find codeblock snap of other if (collisionCodeBlockSnap == CodeBlockSnap.currentlyDraggingCBS) { collisionCodeBlockSnap?.AddSnapColliderInContact(this); } }
/// <summary> /// Evaulates what snap action to take and then resets CBS /// </summary> /// <param name="call">End manipuation event</param> void OnManipulationEnd(ManipulationEventData call) { EvaluateBestCandidateCollider(); CodeBlockManager.instance.DisableCollidersCompatibleCodeBlock(MyCodeBlock); ResetCBS(); CurrentlyDraggingCodeBlockSnap = null; enabled = false; }
/// <summary> /// Set up for finding canidate SnapColliders when user grabs CodeBlock /// </summary> /// <param name="call">Manipulation Event when user grabs block</param> void OnManipulationStart(ManipulationEventData call) { CurrentlyDraggingCodeBlockSnap = this; enabled = true; CodeBlockManager.instance.EnableCollidersCompatibleCodeBlock(MyCodeBlock); snapColliderGroup?.DisableAllCollidersAndChildrenColliders(); // run raycast StartCoroutine(ShootRayFromHandThroughSnapColliders(call.Pointer)); }
void OnManipulationEnd(ManipulationEventData call) { currentlyDraggingCBS = null; lastDraggedCBS = this; if (bestCandidateSnapCollider != null) { bestCandidateSnapCollider.DoSnapAction(bestCandidateSnapCollider.GetMyCodeBlock(), GetMyCodeBlock()); } else { // Remove when dragged away myCodeBlock.RemoveFromParentBlock(true); } mySnapColliders?.DisableAllCompatibleColliders(); GetCurSnapCollidersInContact().Clear(); AddSnapColliderInContact(null); }
void OnManipulationEnd(ManipulationEventData call) //let go of the block { currentlyDraggingCBS = null; lastDraggedCBS = this; if (bestCandidateSnapCollider != null) // within grey zone; SNAP ON { bestCandidateSnapCollider.DoSnapAction(bestCandidateSnapCollider.GetMyCodeBlock(), GetMyCodeBlock()); Block2TextConsoleManager.instance.UpdateConsoleOnSnap(); //refresh the Block2Text console when you ADD a block } else // outside of grey zone; SNAP OFF // Remove when dragged away { myCodeBlock.RemoveFromParentBlock(true); Block2TextConsoleManager.instance.UpdateConsoleOnSnap(); //refresh the Block2Text console when you REMOVE a block } mySnapColliders?.DisableAllCompatibleColliders(); GetCurSnapCollidersInContact().Clear(); AddSnapColliderInContact(null); }
private void AddSnapColliderComponents() { codeBlockSnap = gameObject.AddComponent <CodeBlockSnap>(); snapColliders = gameObject.GetComponentInChildrenOnlyDepthOne <SnapColliderGroup>(); }
void OnManipulationStart(ManipulationEventData call) { mySnapColliders?.EnableAllCompatibleColliders(); mySnapColliders?.DisableAllCollidersAndChildrenColliders(); currentlyDraggingCBS = this; }