99.imdk_unity 上传
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface ICameraData
|
||||
{
|
||||
IImageData GetImageData();
|
||||
byte[] GetBytes();
|
||||
CameraData Copy(IImageData imageData);
|
||||
public void ReleaseReference();
|
||||
public void CheckReferences();
|
||||
int Width { get; }
|
||||
int Height { get; }
|
||||
int Channels { get; }
|
||||
CameraDataFormat Format { get; }
|
||||
Vector4 Intrinsics { get; }
|
||||
Vector3 CameraPositionOnCapture { get; }
|
||||
Quaternion CameraRotationOnCapture { get; }
|
||||
double[] Distortion { get; }
|
||||
Quaternion Orientation { get; }
|
||||
}
|
||||
|
||||
public class CameraData : ICameraData
|
||||
{
|
||||
public int Width { get; set; }
|
||||
public int Height { get; set; }
|
||||
public int Channels { get; set; }
|
||||
public CameraDataFormat Format { get; set; }
|
||||
public Vector4 Intrinsics { get; set; } // x = principal point x, y = principal point y, z = focal length x, w = focal length y
|
||||
public Vector3 CameraPositionOnCapture { get; set; }
|
||||
public Quaternion CameraRotationOnCapture { get; set; }
|
||||
public double[] Distortion { get; set; } // not yet used
|
||||
public Quaternion Orientation { get; set; }
|
||||
|
||||
private readonly IImageData m_ImageData;
|
||||
private int m_ReferenceCount;
|
||||
private bool m_IsDisposed;
|
||||
|
||||
public CameraData(IImageData imageData)
|
||||
{
|
||||
m_ImageData = imageData;
|
||||
m_ImageData.SetCameraDataReference(this);
|
||||
}
|
||||
|
||||
public IImageData GetImageData()
|
||||
{
|
||||
if (m_IsDisposed) throw new ObjectDisposedException("Immersal.XR.CameraData");
|
||||
Interlocked.Increment(ref m_ReferenceCount);
|
||||
return m_ImageData;
|
||||
}
|
||||
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
if (m_IsDisposed) throw new ObjectDisposedException("Immersal.XR.CameraData");
|
||||
return m_ImageData.ManagedBytes;
|
||||
}
|
||||
|
||||
public void ReleaseReference()
|
||||
{
|
||||
Interlocked.Decrement(ref m_ReferenceCount);
|
||||
CheckReferences();
|
||||
}
|
||||
|
||||
public void CheckReferences()
|
||||
{
|
||||
if (m_ReferenceCount <= 0)
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void Dispose()
|
||||
{
|
||||
if (m_IsDisposed)
|
||||
{
|
||||
ImmersalLogger.LogWarning("Attempting to dispose already disposed CameraData");
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_ImageData != null)
|
||||
{
|
||||
m_ImageData.DisposeData();
|
||||
}
|
||||
else
|
||||
{
|
||||
ImmersalLogger.LogWarning("Attempting to dispose null ImageData");
|
||||
}
|
||||
|
||||
m_IsDisposed = true;
|
||||
}
|
||||
|
||||
public CameraData Copy(IImageData imageData)
|
||||
{
|
||||
CameraData data = new CameraData(imageData)
|
||||
{
|
||||
Width = this.Width,
|
||||
Height = this.Height,
|
||||
Intrinsics = this.Intrinsics,
|
||||
Format = this.Format,
|
||||
Channels = this.Channels,
|
||||
CameraPositionOnCapture = this.CameraPositionOnCapture,
|
||||
CameraRotationOnCapture = this.CameraRotationOnCapture,
|
||||
Orientation = this.Orientation,
|
||||
Distortion = this.Distortion
|
||||
};
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
public interface IImageData : IDisposable
|
||||
{
|
||||
public IntPtr UnmanagedDataPointer { get; }
|
||||
public byte[] ManagedBytes { get; }
|
||||
|
||||
void SetCameraDataReference(ICameraData cameraData);
|
||||
void DisposeData();
|
||||
}
|
||||
|
||||
public abstract class ImageData: IImageData
|
||||
{
|
||||
public abstract IntPtr UnmanagedDataPointer { get; }
|
||||
public abstract byte[] ManagedBytes { get; }
|
||||
|
||||
public abstract void DisposeData();
|
||||
|
||||
private ICameraData m_CameraData;
|
||||
private bool m_CameraDataReferenceSet = false;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (m_CameraData == null)
|
||||
{
|
||||
ImmersalLogger.LogWarning("Disposing ImageData with no CameraData reference.");
|
||||
DisposeData();
|
||||
return;
|
||||
}
|
||||
m_CameraData.ReleaseReference();
|
||||
}
|
||||
|
||||
public void SetCameraDataReference(ICameraData cameraData)
|
||||
{
|
||||
if (m_CameraDataReferenceSet)
|
||||
{
|
||||
ImmersalLogger.LogError("CameraData reference already set.");
|
||||
return;
|
||||
}
|
||||
m_CameraData = cameraData;
|
||||
m_CameraDataReferenceSet = true;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class SimpleImageData : ImageData
|
||||
{
|
||||
public override IntPtr UnmanagedDataPointer => m_UnmanagedDataPointer;
|
||||
public override byte[] ManagedBytes { get; }
|
||||
|
||||
private IntPtr m_UnmanagedDataPointer;
|
||||
private GCHandle m_managedDataHandle;
|
||||
|
||||
public SimpleImageData(byte[] bytes)
|
||||
{
|
||||
ManagedBytes = bytes;
|
||||
m_managedDataHandle = GCHandle.Alloc(ManagedBytes, GCHandleType.Pinned);
|
||||
m_UnmanagedDataPointer = m_managedDataHandle.AddrOfPinnedObject();
|
||||
}
|
||||
|
||||
public override void DisposeData()
|
||||
{
|
||||
m_managedDataHandle.Free();
|
||||
m_UnmanagedDataPointer = IntPtr.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 03a98a5ff49164b08addce88bff9bfed
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,25 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface IDataProcessingChain<T>
|
||||
{
|
||||
public Task ProcessNewData(T inputData);
|
||||
public Task UpdateChain();
|
||||
public T GetCurrentData();
|
||||
public Task ResetProcessors();
|
||||
public void AddProcessor(IDataProcessor<T> processor);
|
||||
public void RemoveProcessor(IDataProcessor<T> processor);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52c0b4f597e8a4721a94e07ba8c7719a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,25 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
public interface IImmersalSession
|
||||
{
|
||||
void PauseSession();
|
||||
void ResumeSession();
|
||||
Task ResetSession();
|
||||
Task StopSession(bool cancelRunningTask = true);
|
||||
void StartSession();
|
||||
Task LocalizeOnce();
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ffba8fb68d0ca444ca8e3a96cb3d32bf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,71 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Immersal.REST;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface ILocalizationResult
|
||||
{
|
||||
bool Success { get; }
|
||||
int MapId { get; }
|
||||
LocalizeInfo LocalizeInfo { get; }
|
||||
}
|
||||
|
||||
public interface ILocalizationMethodConfiguration
|
||||
{
|
||||
XRMap[] MapsToAdd { get; }
|
||||
XRMap[] MapsToRemove { get; }
|
||||
SolverType? SolverType { get; }
|
||||
int? PriorNNCountMin { get; }
|
||||
int? PriorNNCountMax { get; }
|
||||
Vector3? PriorScale { get; }
|
||||
float? PriorRadius { get; }
|
||||
}
|
||||
|
||||
public enum ConfigurationMode
|
||||
{
|
||||
WhenNecessary,
|
||||
Always
|
||||
}
|
||||
|
||||
public interface ILocalizationMethod : IHasNullOrDeadCheck
|
||||
{
|
||||
ConfigurationMode ConfigurationMode { get; }
|
||||
IMapOption[] MapOptions { get; }
|
||||
Task<bool> Configure(ILocalizationMethodConfiguration configuration);
|
||||
Task<ILocalizationResult> Localize(ICameraData cameraData, CancellationToken cancellationToken);
|
||||
Task StopAndCleanUp();
|
||||
Task OnMapRegistered(XRMap map);
|
||||
}
|
||||
|
||||
// Utility interface and extension method for checking if an interface is null.
|
||||
// Directly comparing an interface to null sidesteps the custom null-checks used with Unity objects.
|
||||
// This means the interface reference might not be null in the C# sense, even if the object it is
|
||||
// referencing has been destroyed in the Unity context.
|
||||
// This is only an issue if the class implementing the interface is inheriting from Unity objects.
|
||||
public interface IHasNullOrDeadCheck {}
|
||||
|
||||
public static class NullOrDeadCheckExtension
|
||||
{
|
||||
public static bool IsNullOrDead(this IHasNullOrDeadCheck obj)
|
||||
{
|
||||
// Casting to UnityEngine.Object will force the check to utilize Unity's custom null-checking
|
||||
if (obj is UnityEngine.Object o)
|
||||
return o == null;
|
||||
return obj == null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 138bfe17044ec4f6e95318d640e0c4c8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,60 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Immersal.REST;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface ILocalizationResults
|
||||
{
|
||||
ILocalizationResult[] Results { get; }
|
||||
}
|
||||
|
||||
public interface ILocalizerConfiguration
|
||||
{
|
||||
Dictionary<ILocalizationMethod, XRMap[]> ConfigurationsToAdd { get; }
|
||||
Dictionary<ILocalizationMethod, XRMap[]> ConfigurationsToRemove { get; }
|
||||
bool StopRunningTasks { get; }
|
||||
}
|
||||
|
||||
public interface ILocalizerConfigurationResult
|
||||
{
|
||||
bool Success { get; set; }
|
||||
}
|
||||
|
||||
public interface ILocalizer
|
||||
{
|
||||
ILocalizationMethod[] AvailableLocalizationMethods { get; }
|
||||
Task<ILocalizerConfigurationResult> ConfigureLocalizer(ILocalizerConfiguration configuration);
|
||||
Task<ILocalizationResults> Localize(ICameraData cameraData);
|
||||
Task<List<LocalizationTask>> CreateLocalizationTasks(ICameraData cameraData);
|
||||
Task<ILocalizationResults> LocalizeAllMethods(ICameraData cameraData);
|
||||
Task StopAndCleanUp();
|
||||
Task StopLocalizationForMethod(ILocalizationMethod localizationMethod);
|
||||
bool TryGetLocalizationTask(ILocalizationMethod localizationMethod, out LocalizationTask task);
|
||||
}
|
||||
|
||||
public class LocalizationTask
|
||||
{
|
||||
public Task<ILocalizationResult> LocalizationMethodTask { get; private set; }
|
||||
public CancellationTokenSource CancellationTokenSource { get; private set; }
|
||||
|
||||
public LocalizationTask(Task<ILocalizationResult> task, CancellationTokenSource cancellationTokenSource)
|
||||
{
|
||||
LocalizationMethodTask = task;
|
||||
CancellationTokenSource = cancellationTokenSource;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17af27cd6aa4e429186d011bbb43b70f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,76 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface IMapOption
|
||||
{
|
||||
string Name { get; }
|
||||
void DrawEditorGUI(XRMap map);
|
||||
}
|
||||
|
||||
// Example IMapOption implementation
|
||||
[Serializable]
|
||||
public class IntOption : IMapOption
|
||||
{
|
||||
public string Name { get; private set; }
|
||||
|
||||
[SerializeField]
|
||||
public int Value;
|
||||
|
||||
public IntOption(string name, int initialValue)
|
||||
{
|
||||
Name = name;
|
||||
Value = initialValue;
|
||||
}
|
||||
|
||||
public void DrawEditorGUI(XRMap map)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
Value = EditorGUILayout.IntField(Name, Value);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SerializableMapOption
|
||||
{
|
||||
public string TypeName;
|
||||
public string Data;
|
||||
|
||||
// Serialize an IMapOption instance
|
||||
public static SerializableMapOption Serialize(IMapOption option)
|
||||
{
|
||||
var serializableOption = new SerializableMapOption
|
||||
{
|
||||
TypeName = option.GetType().AssemblyQualifiedName,
|
||||
Data = JsonUtility.ToJson(option)
|
||||
};
|
||||
return serializableOption;
|
||||
}
|
||||
|
||||
// Deserialize into an IMapOption instance
|
||||
public IMapOption Deserialize()
|
||||
{
|
||||
var type = Type.GetType(TypeName);
|
||||
if (type != null)
|
||||
{
|
||||
return (IMapOption)JsonUtility.FromJson(Data, type);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6a4ee57b73bcb4fe5bf2d6c043df6930
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,80 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface IPlatformUpdateResult
|
||||
{
|
||||
bool Success { get; }
|
||||
IPlatformStatus Status { get; }
|
||||
ICameraData CameraData { get; }
|
||||
}
|
||||
|
||||
public interface IPlatformStatus
|
||||
{
|
||||
int TrackingQuality { get; }
|
||||
}
|
||||
|
||||
public enum CameraDataFormat
|
||||
{
|
||||
SingleChannel,
|
||||
RGB
|
||||
}
|
||||
|
||||
public interface IPlatformConfigureResult
|
||||
{
|
||||
bool Success { get; }
|
||||
}
|
||||
|
||||
public interface IPlatformSupport
|
||||
{
|
||||
Task<IPlatformUpdateResult> UpdatePlatform();
|
||||
Task<IPlatformUpdateResult> UpdatePlatform(IPlatformConfiguration oneShotConfiguration);
|
||||
Task<IPlatformConfigureResult> ConfigurePlatform();
|
||||
Task<IPlatformConfigureResult> ConfigurePlatform(IPlatformConfiguration configuration);
|
||||
Task StopAndCleanUp();
|
||||
}
|
||||
|
||||
public interface IPlatformConfiguration
|
||||
{
|
||||
CameraDataFormat CameraDataFormat { get; }
|
||||
}
|
||||
|
||||
#region Simple implementations
|
||||
|
||||
public struct SimplePlatformConfigureResult : IPlatformConfigureResult
|
||||
{
|
||||
public bool Success { get; set; }
|
||||
}
|
||||
|
||||
public struct SimplePlatformUpdateResult : IPlatformUpdateResult
|
||||
{
|
||||
public bool Success { get; set; }
|
||||
public IPlatformStatus Status { get; set; }
|
||||
public ICameraData CameraData { get; set; }
|
||||
}
|
||||
|
||||
public struct SimplePlatformStatus : IPlatformStatus
|
||||
{
|
||||
public int TrackingQuality { get; set; }
|
||||
}
|
||||
|
||||
public struct PlatformConfiguration : IPlatformConfiguration
|
||||
{
|
||||
public CameraDataFormat CameraDataFormat { get; set; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb89d50895fb74e67a68ee7887a68478
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sdk@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface ISceneUpdateable
|
||||
{
|
||||
Task SceneUpdate(SceneUpdateData data);
|
||||
Transform GetTransform();
|
||||
Task ResetScene();
|
||||
}
|
||||
|
||||
public static class SceneUpdateableExtensions
|
||||
{
|
||||
public static Matrix4x4 ToMapSpace(this ISceneUpdateable sceneUpdateable, Vector3 pos, Quaternion rot)
|
||||
{
|
||||
Transform spaceTransform = sceneUpdateable.GetTransform();
|
||||
Matrix4x4 pose = Matrix4x4.TRS(pos, rot, Vector3.one);
|
||||
Matrix4x4 spacePose = Matrix4x4.TRS(spaceTransform.position, spaceTransform.rotation, Vector3.one);
|
||||
return spacePose.inverse * pose;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1470387a4d318459a91c6a30cb5ef9b5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,20 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface ISceneUpdater
|
||||
{
|
||||
Task UpdateScene(MapEntry entry, ICameraData cameraData, ILocalizationResult localizationResult);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 39b89922d087d4f66824b1389aa59801
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,27 @@
|
||||
/*===============================================================================
|
||||
Copyright (C) 2024 Immersal - Part of Hexagon. All Rights Reserved.
|
||||
|
||||
This file is part of the Immersal SDK.
|
||||
|
||||
The Immersal SDK cannot be copied, distributed, or made available to
|
||||
third-parties for commercial purposes without written permission of Immersal Ltd.
|
||||
|
||||
Contact sales@immersal.com for licensing requests.
|
||||
===============================================================================*/
|
||||
|
||||
namespace Immersal.XR
|
||||
{
|
||||
public interface ITrackingStatus
|
||||
{
|
||||
int LocalizationAttemptCount { get; }
|
||||
int LocalizationSuccessCount { get; }
|
||||
int TrackingQuality { get; }
|
||||
}
|
||||
|
||||
public interface ITrackingAnalyzer
|
||||
{
|
||||
ITrackingStatus TrackingStatus { get; }
|
||||
void Analyze(IPlatformStatus platformStatus, ILocalizationResults localizationResults);
|
||||
void Reset();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fea0f6762065741059e6568ded85996f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user