Files
plugin-library/Assets/00.StaryEvoTools/Runtime/HybridLoad/HybridClREntrance.cs

99 lines
2.8 KiB
C#
Raw Normal View History

2025-05-23 18:26:47 +08:00
using UnityEngine;
namespace Stary.Evo
{
public class HybridClREntrance : MonoBehaviour
{
2025-09-04 11:43:35 +08:00
public static HybridClREntrance Global;
2025-05-23 18:26:47 +08:00
public string domain;
2025-09-04 11:43:35 +08:00
private FsmLoadSystem _fsmSystem;
/// <summary>
/// 即将加载的domain场景
/// </summary>
public string loadDomain;
2025-05-23 18:26:47 +08:00
private void Awake()
{
2025-09-04 11:43:35 +08:00
if (Global == null)
{
Global = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
return;
}
2025-05-23 18:26:47 +08:00
_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));
2025-07-02 10:05:26 +08:00
//_fsmSystem.AddState(new LoadResMainState(_fsmSystem));
2025-05-23 18:26:47 +08:00
}
private void Start()
{
#if !UNITY_EDITOR
2025-09-04 11:43:35 +08:00
if(string.IsNullOrEmpty(domain))
2025-05-23 18:26:47 +08:00
domain = "Main";
2025-09-02 14:15:18 +08:00
#elif UNITY_EDITOR
2025-09-04 11:43:35 +08:00
// var immersalSDK = FindObjectOfType<ImmersalSDK>();
// immersalSDK.onPoseFound.Invoke();
2025-05-23 18:26:47 +08:00
#endif
2025-09-02 14:15:18 +08:00
2025-05-30 14:50:46 +08:00
AppConfig.PackageDomainName = domain;
2025-05-23 18:26:47 +08:00
_fsmSystem.SetCurState(nameof(ResStartState));
}
2025-09-04 11:43:35 +08:00
private void Update()
{
if (_fsmSystem.CurState != null)
_fsmSystem.CurState.OnUpdate();
}
2025-05-23 18:26:47 +08:00
public void OpenDomain()
{
2025-05-30 14:50:46 +08:00
AppConfig.PackageDomainName = domain;
2025-05-23 18:26:47 +08:00
_fsmSystem.SetCurState(nameof(ResStartState));
}
public void OpenDomain(string domain, OpenDomainType openDomainType)
{
2025-09-04 11:43:35 +08:00
this.domain = domain;
2025-05-23 18:26:47 +08:00
_fsmSystem.SetOpenDomainType(openDomainType);
2025-05-30 14:50:46 +08:00
AppConfig.PackageDomainName = domain;
2025-05-23 18:26:47 +08:00
_fsmSystem.SetCurState(nameof(ResStartState));
}
2025-09-10 10:08:35 +08:00
public void OpenDomain(string domain, Vector3 position)
{
this.domain = domain;
_fsmSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
_fsmSystem.SetPosition(position);
AppConfig.PackageDomainName = domain;
_fsmSystem.SetCurState(nameof(ResStartState));
}
2025-05-23 18:26:47 +08:00
public void CloseDomain()
{
2025-09-02 14:15:18 +08:00
_fsmSystem.SetCurState(nameof(DefaultStateAsync));
2025-05-23 18:26:47 +08:00
}
}
/// <summary>
2025-09-04 11:43:35 +08:00
/// 打开的项目类型
/// DEFAULT:默认打开方式
/// VIOICE:语音打开方式
2025-05-23 18:26:47 +08:00
/// </summary>
public enum OpenDomainType
{
2025-09-04 11:43:35 +08:00
Editor,
2025-09-02 14:15:18 +08:00
PointCloud,
VIOICE,
2025-09-04 11:43:35 +08:00
ImageTracked
2025-05-23 18:26:47 +08:00
}
}