private void OnDevicePoseStatusChanged(TrackableBehaviour.Status arg1, TrackableBehaviour.StatusInfo arg2) { sessionInfoString = $"OnDevicePoseStatusChanged: {arg1} - {arg2}"; Logger.LogFromMethod("VuforiaSessionManager", "OnDevicePoseStatusChanged", sessionInfoString, DebugMode); if (arg1 != TrackableBehaviour.Status.NO_POSE) { if (!trackingStarted) { trackingStarted = true; Logger.LogFromMethod("VuforiaSessionManager", "OnDevicePoseStatusChanged", "Tracking Started!.", DebugMode); trackingStartedCallback?.Invoke(); } else if (currentStatus == TrackableBehaviour.Status.NO_POSE) { Logger.LogFromMethod("VuforiaSessionManager", "OnDevicePoseStatusChanged", "Tracking Restored!", DebugMode); trackingRestoredCallback?.Invoke(); } if (onAfterReset != null) { Logger.LogFromMethod("VuforiaSessionManager", "OnDevicePoseStatusChanged", "Emitting 'OnAfterReset' event.", DebugMode); onAfterReset.Invoke(); onAfterReset = null; } } else if (currentStatus != TrackableBehaviour.Status.NO_POSE) { Logger.LogFromMethod("VuforiaSessionManager", "OnDevicePoseStatusChanged", "Tracking Lost!", DebugMode); trackingLostCallback?.Invoke(); } currentStatus = arg1; }
private void HitTestHandler(HitTestResult result) { //Logger.LogFromMethod("VuforiaGroundHeight", "HitTestHandler", $"result.Position = {result.Position}"); // If the ground height is not in range, reject var height = -1.0f * result.Position.y; if (!(height > Settings.MinGroundHeight) && (height < Settings.MaxGroundHeight)) { //Logger.LogFromMethod("VuforiaGroundHeight", "HitTestHandler", $"Not in range: {result.Position.y} {height}) > {Settings.MinGroundHeight}"); return; } var distanceToObject = MathUtils.HorizontalDistance(transform.position, result.Position); // If hit to close to previous hit do nothing if (state.CurrentPlaneDistance >= 0 && distanceToObject <= Settings.MinHitDistance) { //Logger.LogFromMethod("VuforiaGroundHeight", "HitTestHandler", $"Too close :{distanceToObject}"); return; } // If there is no previous hit, or if the new hit is closes to the object, apply new // hit point. if (state.CurrentPlaneDistance < 0 || distanceToObject < state.CurrentPlaneDistance) { state.CurrentPlaneDistance = distanceToObject; state.CurrentGroundY = result.Position.y; state.NeedsUpdate = true; UpdateObjectHeight(); Logger.LogFromMethod("VuforiaGroundHeight", "HitTestHandler", $"New ground Y = {state.CurrentGroundY}"); } }