using UnityEngine; namespace Stary.Evo { public class HybridClREntrance : MonoBehaviour { public static HybridClREntrance Global; public string domain; private FsmLoadSystem _fsmSystem; /// /// 即将加载的domain场景 /// public string loadDomain; private void Awake() { if (Global == null) { Global = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); return; } _fsmSystem = new FsmLoadSystem(); // 初始化日志 _fsmSystem.AddState(new ResStartState(_fsmSystem)); _fsmSystem.AddState(new ResUpdateServerState(_fsmSystem)); _fsmSystem.AddState(new ResUpdateLocalState(_fsmSystem)); _fsmSystem.AddState(new HotFixState(_fsmSystem)); _fsmSystem.AddState(new LoadResState(_fsmSystem)); //_fsmSystem.AddState(new LoadResMainState(_fsmSystem)); } private void Start() { #if !UNITY_EDITOR if(string.IsNullOrEmpty(domain)) domain = "Main"; #elif UNITY_EDITOR // var immersalSDK = FindObjectOfType(); // immersalSDK.onPoseFound.Invoke(); #endif AppConfig.PackageDomainName = domain; _fsmSystem.SetCurState(nameof(ResStartState)); } private void Update() { if (_fsmSystem.CurState != null) _fsmSystem.CurState.OnUpdate(); } public void OpenDomain() { AppConfig.PackageDomainName = domain; _fsmSystem.SetCurState(nameof(ResStartState)); } public void OpenDomain(string domain, OpenDomainType openDomainType) { this.domain = domain; _fsmSystem.SetOpenDomainType(openDomainType); AppConfig.PackageDomainName = domain; _fsmSystem.SetCurState(nameof(ResStartState)); } public void OpenDomain(string domain, TransformCtor transformCtor) { this.domain = domain; _fsmSystem.SetOpenDomainType(OpenDomainType.ImageTracked); _fsmSystem.SetTransformCtor(transformCtor); AppConfig.PackageDomainName = domain; _fsmSystem.SetCurState(nameof(ResStartState)); } public void OpenDomain(string domain, Transform transform) { this.domain = domain; _fsmSystem.SetOpenDomainType(OpenDomainType.ImageTracked); _fsmSystem.SetTransformCtor(transform); AppConfig.PackageDomainName = domain; _fsmSystem.SetCurState(nameof(ResStartState)); } public void CloseDomain() { _fsmSystem.SetCurState(nameof(DefaultStateAsync)); } } /// /// 打开的项目类型 /// DEFAULT:默认打开方式 /// VIOICE:语音打开方式 /// public enum OpenDomainType { Editor, PointCloud, VIOICE, ImageTracked } }