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

190 lines
6.3 KiB
C#
Raw Normal View History

2025-10-31 11:18:23 +08:00
using System.Threading.Tasks;
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-10-31 11:18:23 +08:00
public StageType stage;
2025-05-23 18:26:47 +08:00
public string domain;
2025-10-31 11:18:23 +08:00
private FsmLoadSystem _devLoadSystem;
private FsmLoadSystem _originalityLoadSystem;
2025-09-10 15:52:11 +08:00
2025-09-04 11:43:35 +08:00
/// <summary>
/// 即将加载的domain场景
/// </summary>
public string loadDomain;
2025-05-23 18:26:47 +08:00
2026-01-05 17:58:53 +08:00
private async void Awake()
2025-05-23 18:26:47 +08:00
{
2025-09-04 11:43:35 +08:00
if (Global == null)
{
Global = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
return;
}
2025-10-31 11:18:23 +08:00
_devLoadSystem = new FsmLoadSystem();
2025-05-23 18:26:47 +08:00
// 初始化日志
2025-10-31 11:18:23 +08:00
_devLoadSystem.AddState(new ResStartState(_devLoadSystem));
_devLoadSystem.AddState(new ResEditorSimulateState(_devLoadSystem));
_devLoadSystem.AddState(new ResUpdateLocalState(_devLoadSystem));
_devLoadSystem.AddState(new HotFixState(_devLoadSystem));
_devLoadSystem.AddState(new LoadResState(_devLoadSystem));
2025-07-02 10:05:26 +08:00
//_fsmSystem.AddState(new LoadResMainState(_fsmSystem));
2026-01-05 17:58:53 +08:00
//初始化读取资源配置表
HotfixMainResDomain hotfixMainResDomain = Resources.Load<HotfixMainResDomain>("HotfixMainResDomain");
if (hotfixMainResDomain != null)
{
AppConfig.IpConfig = hotfixMainResDomain.hotfixMainResDomainEntity.ipconfig;
AppConfig.UserName = hotfixMainResDomain.hotfixMainResDomainEntity.username;
AppConfig.PassWord = hotfixMainResDomain.hotfixMainResDomainEntity.password;
AppConfig.ProductName = Application.identifier;
AppConfig.MainDomainVersion = hotfixMainResDomain.hotfixMainResDomainEntity.mainDomainVersion;
}
Debug.Log($"UnityEvo:读取资源配置表成功...{AppConfig.IpConfig}{AppConfig.UserName}{AppConfig.PassWord}");
//登录
string url = AppConfig.IpConfig + "/Authentication/login";
_devLoadSystem.IsLogin = await WebRequestSystem.Login(url, AppConfig.UserName, AppConfig.PassWord);
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-10-31 11:18:23 +08:00
if (stage == StageType.Developer)
{
AppConfig.PackageDomainName = domain;
}
else if (stage == StageType.Originality)
{
AppConfig.PackageDomainName = "Main";
}
2025-09-02 14:15:18 +08:00
2025-10-31 11:18:23 +08:00
_devLoadSystem.SetCurState(nameof(ResStartState));
2025-05-23 18:26:47 +08:00
}
2025-09-04 11:43:35 +08:00
private void Update()
{
2025-10-31 11:18:23 +08:00
if (_devLoadSystem.CurState != null)
_devLoadSystem.CurState.OnUpdate();
2025-09-04 11:43:35 +08:00
}
2025-10-31 11:18:23 +08:00
public async Task OpenDomain()
2025-05-23 18:26:47 +08:00
{
2025-05-30 14:50:46 +08:00
AppConfig.PackageDomainName = domain;
2025-10-31 11:18:23 +08:00
if (stage == StageType.Developer)
{
await _devLoadSystem.SetCurState(nameof(ResStartState));
}
else if (stage == StageType.Originality)
{
if (_originalityLoadSystem == null)
{
_originalityLoadSystem = new FsmLoadSystem();
_originalityLoadSystem.AddState(new ArtResStartState(_originalityLoadSystem));
_originalityLoadSystem.AddState(new ArtResUpdateLocalState(_originalityLoadSystem));
_originalityLoadSystem.AddState(new ArtResEditorSimulateState(_originalityLoadSystem));
}
await _originalityLoadSystem.SetCurState(nameof(ArtResStartState));
}
2025-05-23 18:26:47 +08:00
}
2025-10-31 11:18:23 +08:00
2025-12-16 17:21:46 +08:00
public async void OpenDomain(string domain, OpenDomainType openDomainType)
2025-05-23 18:26:47 +08:00
{
2025-09-04 11:43:35 +08:00
this.domain = domain;
2025-10-31 11:18:23 +08:00
_devLoadSystem.SetOpenDomainType(openDomainType);
2025-10-24 11:11:59 +08:00
if (this.domain != AppConfig.PackageDomainName)
{
AppConfig.PackageDomainName = domain;
2025-12-16 17:21:46 +08:00
await _devLoadSystem.SetCurState(nameof(ResStartState));
2025-10-24 11:11:59 +08:00
}
else
{
2025-10-31 11:18:23 +08:00
Debug.Log($"domain:{domain} 已打开, 请勿重复打开");
2025-10-24 11:11:59 +08:00
}
2025-05-23 18:26:47 +08:00
}
2025-09-10 15:52:11 +08:00
public void OpenDomain(string domain, TransformCtor transformCtor)
{
this.domain = domain;
2025-10-31 11:18:23 +08:00
_devLoadSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
_devLoadSystem.SetTransformCtor(transformCtor);
2025-10-24 11:11:59 +08:00
if (this.domain != AppConfig.PackageDomainName)
{
AppConfig.PackageDomainName = domain;
2025-10-31 11:18:23 +08:00
_devLoadSystem.SetCurState(nameof(ResStartState));
2025-10-24 11:11:59 +08:00
}
else
{
2025-10-31 11:18:23 +08:00
Debug.Log($"domain:{domain} 已打开, 请勿重复打开");
2025-10-24 11:11:59 +08:00
}
2025-09-10 15:52:11 +08:00
}
public void OpenDomain(string domain, Transform transform)
2025-09-10 10:08:35 +08:00
{
this.domain = domain;
2025-10-31 11:18:23 +08:00
_devLoadSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
_devLoadSystem.SetTransformCtor(transform);
2025-10-24 11:11:59 +08:00
if (this.domain != AppConfig.PackageDomainName)
{
AppConfig.PackageDomainName = domain;
2025-10-31 11:18:23 +08:00
_devLoadSystem.SetCurState(nameof(ResStartState));
2025-10-24 11:11:59 +08:00
}
else
{
2025-10-31 11:18:23 +08:00
Debug.Log($"domain:{domain} 已打开, 请勿重复打开");
2025-10-24 11:11:59 +08:00
}
2025-09-10 10:08:35 +08:00
}
2025-05-23 18:26:47 +08:00
public void CloseDomain()
{
2025-10-31 11:18:23 +08:00
if (_devLoadSystem != null)
_devLoadSystem.SetCurState(nameof(DefaultStateAsync));
if (_originalityLoadSystem != null)
_originalityLoadSystem.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
}
2025-10-31 11:18:23 +08:00
public enum StageType
{
/// <summary>
/// 创意阶段
/// </summary>
Originality,
/// <summary>
/// 开发者阶段
/// </summary>
Developer,
}
2025-05-23 18:26:47 +08:00
}