// /*===============================================================================
// Copyright (C) 2020 PhantomsXR Ltd. All Rights Reserved.
//
// This file is part of the AR-MOD SDK.
//
// The AR-MOD SDK cannot be copied, distributed, or made available to
// third-parties for commercial purposes without written permission of PhantomsXR Ltd.
//
// Contact info@phantomsxr.com for licensing requests.
// ===============================================================================*/
using Phantom.XRMOD.ActionNotification.Runtime;
using UnityEngine;
using UnityEngine.XR.ARSubsystems;
namespace Phantom.XRMOD.XRMODPackageTools.Editor
{
public class Configures : ScriptableObject
{
public SDKDeviceType SDKDeviceType = SDKDeviceType.HandheldAR;
public float ARWorldScale = 1.0f;
public string Version = "2.0.0";
public AlgorithmType Algorithm = AlgorithmType.None;
public bool AlgorithmAutoStart = true;
public PlaneDetectionMode PlaneDetectionMode = PlaneDetectionMode.None;
public string ProjectName;
//script
public string MainEntry;
public string DomainName;
public ProgrammableType ProgrammableType;
public string MainVisualScripting;
public bool DebugModel;
public JITFlags JitFlag = 0;
//visualizer
public string CustomPointCloudVisualizerName;
public string CustomPlaneVisualizerName;
public string CustomMeshVisualizerName;
//2d features
public int MaxMovingOfTracking;
//features
public bool EnvironmentProbe;
/// With automatic environment probe placement, the device
/// automatically selects suitable locations for environment probes and creates them.
/// Environment probes can be created in any orientation. However, Unity's reflection probes,
/// which consume the environment probe data, only support axis-aligned orientations.
/// This means the orientation you specify (or your application selected automatically) might not be fully respected
public bool AutoPlacementOfEnvironmentProbe;
public bool UseEnvironmentHDRTexture;
public bool LightEstimation;
public bool LightEstimationHDR;
public float LightShadowStrength = 0.7f;
public bool CoachingOverlay;
public bool PostProcessing;
public bool CanInteraction;
//face mesh
public int MaximumFaceCount = 1;
//immersal
public string DeveloperToken;
public float LocalizationInterval;
public bool UseServerLocalizer;
public bool AutoStart = true;
public bool UseFiltering = true;
public bool BurstMode = true;
public bool StopLocalizedAfterSuccess = false;
public bool ResetOnMapChange = false;
//Occlusion
public bool AROcclusion;
public bool TemporalSmoothing;
public EnvironmentDepthMode EnvironmentDepthMode;
public HumanSegmentationDepthMode HumanSegmentationDepthMode;
public HumanSegmentationStencilMode HumanSegmentationStencilMode;
public OcclusionPreferenceMode OcclusionPreferenceMode;
//Multiplayer
public bool Multiplayer;
public bool DisplayPing;
public bool Discovery;
//Graphics
public int QualityLevel = 1;
//Recording
public bool UseMediaRecorder = false;
public bool UseMicrophone = true;
public MediaResolution MediaResolution = MediaResolution.Normal;
//Pico
public bool MixedReality = false;
public SpaceType SpaceType = SpaceType.ExclusiveSpace;
public BoundResizeMode BoundResizeMode = BoundResizeMode.None;
public Vector3 Dimensions = Vector3.one;
public Vector3 Position = new Vector3(0, 0.5f, 0);
public LayerMask CullingMask = 1;
// Vision Pro
public bool Passthrough;
}
public enum RenderMode : int
{
DoNotRender,
EditorOnly,
EditorAndRuntime
}
public enum AlgorithmType
{
#if HANDHELD_ARMODULE_INSTALL
FocusSlam = 0,
#endif
Anchor = 1,
#if HANDHELD_ARMODULE_INSTALL
Gyro = 2,
Fixed = 3,
#endif
#if HANDHELD_ARMODULE_INSTALL || VISIONOS_INSTALL || ROKID_INSTALL || XREAL_INSTALL
ImageTracker = 4,
#endif
#if HANDHELD_ARMODULE_INSTALL || ROKID_INSTALL || QUEST_INSTALL
Immersal = 5,
#endif
#if HANDHELD_ARMODULE_INSTALL
FaceMesh = 6,
#endif
#if HANDHELD_ARMODULE_INSTALL || QUEST_INSTALL || VISIONOS_INSTALL
Meshing = 7,
#endif
#if HANDHELD_ARMODULE_INSTALL
Classic3D = 8,
#endif
None = 9,
}
public enum ImageLostMode
{
Hiding,
Destroy,
OnScreen,
Custom
}
public enum ProgrammableType
{
CSharp,
VisualScripting
}
public enum JITFlags : int
{
None = 0,
///
/// Method will be JIT when method is called multiple time
///
JITOnDemand = 1,
///
/// Method will be JIT immediately when called, instead of progressively warm up
///
JITImmediately = 2,
///
/// Method will not be JIT when called
///
NoJIT = 4,
///
/// Method will always be inlined when called
///
ForceInline = 8,
}
public enum MediaResolution : uint
{
Normal,
HD
}
public enum SDKDeviceType : int
{
VisionOS,
HandheldAR,
Hololens,
Pico,
Quest,
Rokid,
XReal,
WebAR,
WebVR,
Classic3D,
Web3D
}
}