99.imdk_unity 上传

This commit is contained in:
2025-06-19 10:56:43 +08:00
parent d48c1f1f7b
commit 820c663ab8
651 changed files with 123674 additions and 0 deletions

View File

@@ -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;
}
}
}