public void HandleInteractiveHitTest(HitTestResult result) { if (result == null) { Debug.LogError("Invalid hit test result!"); return; } if (!m_GroundPlaneUI.IsCanvasButtonPressed()) { Debug.Log("HandleInteractiveHitTest() called."); // If the PlaneFinderBehaviour's Mode is Automatic, then the Interactive HitTestResult will be centered. // PlaneMode.Ground and PlaneMode.Placement both use PlaneFinder's ContentPositioningBehaviour m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>(); m_ContentPositioningBehaviour.DuplicateStage = false; // Place object based on Ground Plane mode switch (planeMode) { case PlaneMode.GROUND: m_ContentPositioningBehaviour.AnchorStage = m_PlaneAnchor; m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result); UtilityHelperRes.EnableRendererColliderCanvas(m_PlaneAugmentation, true); // Astronaut should rotate toward camera with each placement m_PlaneAugmentation.transform.localPosition = Vector3.zero; UtilityHelperRes.RotateTowardCamera(m_PlaneAugmentation); AstronautIsPlaced = true; break; case PlaneMode.PLACEMENT: if (!m_ProductPlacement.IsPlaced || TouchHandlerRes.DoubleTap) { m_ContentPositioningBehaviour.AnchorStage = m_PlacementAnchor; m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result); UtilityHelperRes.EnableRendererColliderCanvas(m_PlacementAugmentation, true); } if (!m_ProductPlacement.IsPlaced) { m_ProductPlacement.SetProductAnchor(m_PlacementAnchor.transform); m_TouchHandler.enableRotation = true; } break; } } }
public void PlaceObjectInMidAir(Transform midAirTransform) { if (planeMode == PlaneMode.MIDAIR) { Debug.Log("PlaceObjectInMidAir() called."); m_ContentPositioningBehaviour.AnchorStage = m_MidAirAnchor; m_ContentPositioningBehaviour.PositionContentAtMidAirAnchor(midAirTransform); UtilityHelperRes.EnableRendererColliderCanvas(m_MidAirAugmentation, true); m_MidAirAugmentation.transform.localPosition = Vector3.zero; UtilityHelperRes.RotateTowardCamera(m_MidAirAugmentation); } }
public void SetProductAnchor(Transform transform) { if (transform) { IsPlaced = true; gameObject.transform.SetParent(transform); gameObject.transform.localPosition = Vector3.zero; UtilityHelperRes.RotateTowardCamera(gameObject); } else { IsPlaced = false; gameObject.transform.SetParent(null); } }
void Update() { if (PlaneManagerRes.planeMode == PlaneManagerRes.PlaneMode.PLACEMENT) { shadowRenderer.enabled = chairRenderer.enabled = (IsPlaced || PlaneManagerRes.GroundPlaneHitReceived); EnablePreviewModeTransparency(!IsPlaced); if (!IsPlaced) { UtilityHelperRes.RotateTowardCamera(gameObject); } } else { shadowRenderer.enabled = chairRenderer.enabled = IsPlaced; } if (PlaneManagerRes.planeMode == PlaneManagerRes.PlaneMode.PLACEMENT && IsPlaced) { m_RotationIndicator.SetActive(Input.touchCount == 2); m_TranslationIndicator.SetActive( (TouchHandlerRes.IsSingleFingerDragging || TouchHandlerRes.IsSingleFingerStationary) && !m_GroundPlaneUI.IsCanvasButtonPressed()); if (TouchHandlerRes.IsSingleFingerDragging || (VuforiaRuntimeUtilities.IsPlayMode() && Input.GetMouseButton(0))) { if (!m_GroundPlaneUI.IsCanvasButtonPressed()) { cameraToPlaneRay = mainCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(cameraToPlaneRay, out cameraToPlaneHit)) { if (cameraToPlaneHit.collider.gameObject.name == (VuforiaRuntimeUtilities.IsPlayMode() ? EmulatorGroundPlane : Floor.name)) { gameObject.PositionAt(cameraToPlaneHit.point); } } } } } else { m_RotationIndicator.SetActive(false); m_TranslationIndicator.SetActive(false); } }
static bool anchorExists; // backs public AnchorExists property #endregion // PRIVATE_MEMBERS #region MONOBEHAVIOUR_METHODS void Start() { VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted); VuforiaARController.Instance.RegisterOnPauseCallback(OnVuforiaPaused); DeviceTrackerARController.Instance.RegisterTrackerStartedCallback(OnTrackerStarted); DeviceTrackerARController.Instance.RegisterDevicePoseStatusChangedCallback(OnDevicePoseStatusChanged); m_PlaneFinder.HitTestMode = HitTestMode.AUTOMATIC; m_ProductPlacement = FindObjectOfType <ProductPlacementRes>(); m_TouchHandler = FindObjectOfType <TouchHandlerRes>(); m_GroundPlaneUI = FindObjectOfType <GroundPlaneUIRes>(); m_PlaneAnchor = m_PlaneAugmentation.GetComponentInParent <AnchorBehaviour>(); m_MidAirAnchor = m_MidAirAugmentation.GetComponentInParent <AnchorBehaviour>(); m_PlacementAnchor = m_PlacementAugmentation.GetComponentInParent <AnchorBehaviour>(); UtilityHelperRes.EnableRendererColliderCanvas(m_PlaneAugmentation, false); UtilityHelperRes.EnableRendererColliderCanvas(m_MidAirAugmentation, false); UtilityHelperRes.EnableRendererColliderCanvas(m_PlacementAugmentation, false); }
public void ResetScene() { Debug.Log("ResetScene() called."); // reset augmentations m_PlaneAugmentation.transform.position = Vector3.zero; m_PlaneAugmentation.transform.localEulerAngles = Vector3.zero; UtilityHelperRes.EnableRendererColliderCanvas(m_PlaneAugmentation, false); m_MidAirAugmentation.transform.position = Vector3.zero; m_MidAirAugmentation.transform.localEulerAngles = Vector3.zero; UtilityHelperRes.EnableRendererColliderCanvas(m_MidAirAugmentation, false); m_ProductPlacement.Reset(); UtilityHelperRes.EnableRendererColliderCanvas(m_PlacementAugmentation, false); DeleteAnchors(); m_ProductPlacement.SetProductAnchor(null); AstronautIsPlaced = false; m_GroundPlaneUI.Reset(); m_TouchHandler.enableRotation = false; }