public void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { AddPointerHandlerToSpatialMesh(); // A new mesh has been added. Debug.Log($"Tracking mesh {eventData.Id}"); meshUpdateData.Add(eventData.Id, 0); }
/// <inheritdoc /> public override void Initialize() { base.Initialize(); sceneEventData = new MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject>(EventSystem.current); CreateQuadFromExtents(normalizedQuadMesh, 1, 1); var accessStatus = SceneObserver.RequestAccessAsync().GetAwaiter().GetResult(); if (accessStatus == SceneObserverAccessStatus.Allowed) { IsRunning = true; observerState = ObserverState.Idle; StartUpdateTimers(); } else { Debug.LogError("Something went terribly wrong getting scene observer access!"); } if (UpdateOnceOnLoad) { observerState = ObserverState.GetScene; //doUpdateOnceOnLoad = true; } }
/// <summary> /// Performs initialization tasks for the spatial awareness system. /// </summary> private void InitializeInternal() { meshEventData = new MixedRealitySpatialAwarenessEventData(EventSystem.current); surfaceFindingEventData = new MixedRealitySpatialAwarenessEventData(EventSystem.current); // General settings StartupBehavior = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.StartupBehavior; ObservationExtents = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.ObservationExtents; IsStationaryObserver = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.IsStationaryObserver; UpdateInterval = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.UpdateInterval; // Mesh settings UseMeshSystem = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.UseMeshSystem; MeshPhysicsLayer = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshPhysicsLayer; MeshLevelOfDetail = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshLevelOfDetail; MeshTrianglesPerCubicMeter = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshTrianglesPerCubicMeter; MeshRecalculateNormals = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshRecalculateNormals; MeshDisplayOption = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshDisplayOption; MeshVisibleMaterial = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshVisibleMaterial; MeshOcclusionMaterial = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.MeshOcclusionMaterial; // Surface finding settings UseSurfaceFindingSystem = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.UseSurfaceFindingSystem; SurfacePhysicsLayer = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.SurfaceFindingPhysicsLayer; SurfaceFindingMinimumArea = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.SurfaceFindingMinimumArea; DisplayFloorSurfaces = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.DisplayFloorSurfaces; FloorSurfaceMaterial = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.FloorSurfaceMaterial; DisplayCeilingSurfaces = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.DisplayCeilingSurface; CeilingSurfaceMaterial = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.CeilingSurfaceMaterial; DisplayWallSurfaces = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.DisplayWallSurface; WallSurfaceMaterial = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.WallSurfaceMaterial; DisplayPlatformSurfaces = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.DisplayPlatformSurfaces; PlatformSurfaceMaterial = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessProfile.PlatformSurfaceMaterial; }
/// <inheritdoc /> public void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { // This method called everytime a SceneObject created by the SU observer // The eventData contains everything you need do something useful AddToData(eventData.Id); if (InstantiatePrefabs && eventData.SpatialObject.Quads.Count > 0) { var prefab = Instantiate(InstantiatedPrefab); prefab.transform.SetPositionAndRotation(eventData.SpatialObject.Position, eventData.SpatialObject.Rotation); float sx = eventData.SpatialObject.Quads[0].Extents.x; float sy = eventData.SpatialObject.Quads[0].Extents.y; prefab.transform.localScale = new Vector3(sx, sy, .1f); if (InstantiatedParent) { prefab.transform.SetParent(InstantiatedParent); } instantiatedPrefabs.Add(prefab); } else { foreach (var quad in eventData.SpatialObject.Quads) { quad.GameObject.GetComponent <Renderer>().material.color = ColorForSurfaceType(eventData.SpatialObject.SurfaceType); } } }
public void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { if (!meshDataUpdates.ContainsKey(eventData.Id)) { meshDataUpdates.Add(eventData.Id, 0); } /* * if(!meshUpdateData.ContainsKey(eventData.Id)) * { * Debug.Log($"Added mesh {eventData.Id} to observation"); * meshUpdateData.Add(eventData.Id, 0); * * var newVertices = eventData.SpatialObject.Filter.mesh.vertices; * var newUVs = eventData.SpatialObject.Filter.mesh.uv; * var newTriangles = eventData.SpatialObject.Filter.mesh.triangles; * var meshPosition = eventData.SpatialObject.Filter.transform.position; * var meshId = eventData.Id; * * * //RPCPhotonView.RPC("RecieveMeshData", RpcTarget.Others, newVertices, newUVs, newTriangles, meshPosition, meshId); * * }*/ }
public void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { // This method called everytime a SceneObject created by the SU observer // The eventData contains everything you need do something useful if (eventData.SpatialObject.SurfaceType == surfaceTypeToPlaceOn) { observedSceneObjects.Add(eventData.SpatialObject); } if (InstantiatePrefabs) { var prefab = Instantiate(InstantiatedPrefab); prefab.transform.SetPositionAndRotation(eventData.SpatialObject.Position, eventData.SpatialObject.Rotation); if (InstantiatedParent) { prefab.transform.SetParent(InstantiatedParent); } // A prefab can implement the ISpatialAwarenessSceneObjectConsumer contract // this will let the prefab author decide how it wants to "react" to the new sceneObject // In the demo scene, the prefab will scale itself to fit quad extents foreach (var x in prefab.GetComponents <ISceneUnderstandingSceneObjectConsumer>()) { x.OnSpatialAwarenessSceneObjectCreated(eventData.SpatialObject); } } }
public void OnObservationRemoved(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { if (meshDataUpdates.ContainsKey(eventData.Id)) { RPCPhotonView.RPC("RemoveMesh", RpcTarget.Others, eventData.Id); meshDataUpdates.Remove(eventData.Id); } }
public void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { if (!meshDataUpdates.ContainsKey(eventData.Id)) { //add mesh id to Dictionary, so we can count updates meshDataUpdates.Add(eventData.Id, 0); } }
/// <inheritdoc /> public void OnObservationRemoved(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { RemoveFromData(eventData.Id); foreach (var sceneObjectDict in observedSceneObjects.Values) { sceneObjectDict?.Remove(eventData.Id); } }
/// <inheritdoc /> public virtual void OnObservationRemoved(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { // A mesh has been removed. We no longer need to track the count of updates. if (meshUpdateData.ContainsKey(eventData.Id)) { Debug.Log($"No longer tracking mesh {eventData.Id}."); meshUpdateData.Remove(eventData.Id); } }
/// <inheritdoc /> public virtual void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { // A new mesh has been added. if (!meshUpdateData.ContainsKey(eventData.Id)) { Debug.Log($"Tracking mesh {eventData.Id}"); meshUpdateData.Add(eventData.Id, 0); } }
/// <inheritdoc /> public override void Initialize() { meshEventData = new MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject>(EventSystem.current); CreateObserver(); // Apply the initial observer volume settings. ConfigureObserverVolume(); }
/// <inheritdoc/> public override void Initialize() { base.Initialize(); if (Application.isPlaying) { meshEventData = new MixedRealitySpatialAwarenessEventData <SpatialMeshObject>(EventSystem.current); surfaceFindingEventData = new MixedRealitySpatialAwarenessEventData <GameObject>(EventSystem.current); } }
public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { var checkNavMeshSourceTag = eventData.SpatialObject.GameObject.GetComponent <NavMeshSourceTag>(); if (checkNavMeshSourceTag == null) { eventData.SpatialObject.GameObject.AddComponent <NavMeshSourceTag>(); Debug.Log(eventData.SpatialObject.GameObject.name + "UPDATED MF"); } }
/// <inheritdoc /> public virtual void OnMeshUpdated(MixedRealitySpatialAwarenessEventData <SpatialMeshObject> eventData) { // A mesh has been updated. Find it and increment the update count. if (meshUpdateData.TryGetValue(eventData.Id, out uint updateCount)) { // Set the new update count. meshUpdateData[eventData.Id] = ++updateCount; Debug.Log($"[DemoSpatialMeshHandler.OnMeshUpdated] Mesh {eventData.Id} has been updated {updateCount} times."); } }
/// <inheritdoc /> public virtual void OnMeshRemoved(MixedRealitySpatialAwarenessEventData eventData) { Debug.Log("DemoSpatialMeshHandler.OnMeshRemoved"); // A mesh has been removed. We no longer need to track the count of updates. if (meshUpdateData.ContainsKey(eventData.Id)) { Debug.Log($"No longer tracking mesh {eventData.Id}."); meshUpdateData.Remove(eventData.Id); } }
/// <inheritdoc /> public override void Initialize() { meshEventData = new MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject>(EventSystem.current); ReadProfile(); if (StartupBehavior == AutoStartBehavior.AutoStart) { Resume(); } }
/// <inheritdoc /> public virtual void OnMeshRemoved(MixedRealitySpatialAwarenessEventData <SpatialMeshObject> eventData) { Debug.Log($"[DemoSpatialMeshHandler.OnMeshRemoved] {eventData.EventSource.SourceName}.{eventData.SpatialObject.GameObject.name}"); // A mesh has been removed. We no longer need to track the count of updates. if (meshUpdateData.ContainsKey(eventData.Id)) { Debug.Log($"[DemoSpatialMeshHandler] No longer tracking mesh {eventData.Id}."); meshUpdateData.Remove(eventData.Id); } }
/// <inheritdoc /> public virtual void OnMeshAdded(MixedRealitySpatialAwarenessEventData eventData) { Debug.Log("DemoSpatialMeshHandler.OnMeshAdded"); // A new mesh has been added. if (!meshUpdateData.ContainsKey(eventData.Id)) { Debug.Log($"Tracking mesh {eventData.Id}"); meshUpdateData.Add(eventData.Id, 0); } }
public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { //AddPointerHandlerToSpatialMesh(); // A mesh has been updated. Find it and increment the update count. if (meshUpdateData.TryGetValue(eventData.Id, out uint updateCount)) { // Set the new update count. meshUpdateData[eventData.Id] = ++updateCount; Debug.Log($"Mesh {eventData.Id} has been updated {updateCount} times."); } }
/// <inheritdoc /> public virtual void OnMeshAdded(MixedRealitySpatialAwarenessEventData <SpatialMeshObject> eventData) { Debug.Log($"[DemoSpatialMeshHandler.OnMeshAdded] {eventData.EventSource.SourceName}.{eventData.SpatialObject.GameObject.name}"); // A new mesh has been added. if (!meshUpdateData.ContainsKey(eventData.Id)) { Debug.Log($"[DemoSpatialMeshHandler] Started Tracking mesh {eventData.Id}."); meshUpdateData.Add(eventData.Id, 0); } }
/// <inheritdoc /> public override void Initialize() { meshEventData = new MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject>(EventSystem.current); CreateObserver(); // Apply the initial observer volume settings. ConfigureObserverVolume(); #if UNITY_EDITOR && UNITY_WSA Toolkit.Utilities.Editor.UWPCapabilityUtility.RequireCapability( UnityEditor.PlayerSettings.WSACapability.SpatialPerception, this.GetType()); #endif }
/// <inheritdoc /> public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { UpdateData(eventData.Id); if (observedSceneObjects.TryGetValue(eventData.SpatialObject.SurfaceType, out Dictionary <int, SpatialAwarenessSceneObject> sceneObjectDict)) { observedSceneObjects[eventData.SpatialObject.SurfaceType][eventData.Id] = eventData.SpatialObject; } else { observedSceneObjects.Add(eventData.SpatialObject.SurfaceType, new Dictionary <int, SpatialAwarenessSceneObject> { { eventData.Id, eventData.SpatialObject } }); } }
public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { int updateCount = 0; //if mesh was added to observation... if (meshDataUpdates.TryGetValue(eventData.Id, out updateCount)) { //...update the count meshDataUpdates[eventData.Id] = ++updateCount; //for every third update... if ((updateCount % 3) == 0) { //...send vertices, triangles and uvs to reciever app via RPC RPCPhotonView.RPC("RecieveMeshData", RpcTarget.Others, eventData.SpatialObject.Filter.mesh.vertices, eventData.SpatialObject.Filter.mesh.triangles, eventData.SpatialObject.Filter.mesh.uv, eventData.SpatialObject.Id); } } }
public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { int updateCount = 0; if (meshDataUpdates.TryGetValue(eventData.Id, out updateCount)) { meshDataUpdates[eventData.Id] = ++updateCount; if ((updateCount % 6) == 0) { RPCPhotonView.RPC("RecieveMeshData", RpcTarget.Others, eventData.SpatialObject.Filter.mesh.vertices, eventData.SpatialObject.Filter.mesh.triangles, eventData.SpatialObject.Filter.mesh.uv, eventData.SpatialObject.Id); } } /* var newVertices = eventData.SpatialObject.Filter.mesh.vertices; * var newUVs = eventData.SpatialObject.Filter.mesh.uv; * var newTriangles = eventData.SpatialObject.Filter.mesh.triangles; * var meshId = eventData.SpatialObject.Id; * * RPCPhotonView.RPC("UpdateMesh", RpcTarget.Others, newVertices, newUVs, newTriangles, meshId); */ }
/// <inheritdoc /> public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { UpdateData(eventData.Id); }
public void OnObservationRemoved(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { // This is never called by the SU observer by design throw new System.NotImplementedException(); }
/// <inheritdoc /> public virtual void OnObservationAdded(MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject> eventData) { AddToData(eventData.Id); }
/// <inheritdoc /> public void OnObservationRemoved(MixedRealitySpatialAwarenessEventData <SpatialAwarenessSceneObject> eventData) { RemoveFromData(eventData.Id); }
/// <summary> /// Performs initialization tasks for the spatial awareness system. /// </summary> private void InitializeInternal() { meshEventData = new MixedRealitySpatialAwarenessEventData <SpatialAwarenessMeshObject>(EventSystem.current); }