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;
|
|
|
|
|
|
2026-04-12 16:48:41 +08:00
|
|
|
private IFsmSystemAsync _loadSystem;
|
2025-10-31 11:18:23 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-13 17:59:04 +08:00
|
|
|
_loadSystem = new FSMISystemJustEnterAsync();
|
2025-05-23 18:26:47 +08:00
|
|
|
// 初始化日志
|
2026-01-07 18:20:13 +08:00
|
|
|
_loadSystem.AddState(new HotFixStartState(_loadSystem));
|
|
|
|
|
_loadSystem.AddState(new ResEditorSimulateState(_loadSystem));
|
|
|
|
|
_loadSystem.AddState(new HotFixDllState(_loadSystem));
|
|
|
|
|
_loadSystem.AddState(new ResStartState(_loadSystem));
|
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;
|
2026-04-17 15:23:47 +08:00
|
|
|
AppConfig.ProductName =$"com.{Application.companyName}.{Application.productName}";
|
2026-01-05 17:58:53 +08:00
|
|
|
AppConfig.MainDomainVersion = hotfixMainResDomain.hotfixMainResDomainEntity.mainDomainVersion;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Debug.Log($"UnityEvo:读取资源配置表成功...{AppConfig.IpConfig}{AppConfig.UserName}{AppConfig.PassWord}");
|
|
|
|
|
//登录
|
|
|
|
|
string url = AppConfig.IpConfig + "/Authentication/login";
|
2026-04-12 16:48:41 +08:00
|
|
|
AppConfig.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
|
|
|
|
2026-01-07 18:20:13 +08:00
|
|
|
_loadSystem.SetCurState(nameof(HotFixStartState));
|
2025-05-23 18:26:47 +08:00
|
|
|
}
|
|
|
|
|
|
2025-09-04 11:43:35 +08:00
|
|
|
private void Update()
|
|
|
|
|
{
|
2026-01-07 18:20:13 +08:00
|
|
|
if (_loadSystem.CurState != null)
|
|
|
|
|
_loadSystem.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;
|
2026-01-07 18:20:13 +08:00
|
|
|
await _loadSystem.SetCurState(nameof(HotFixStartState));
|
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;
|
2026-04-12 16:48:41 +08:00
|
|
|
DomainAssetSystem.SetOpenDomainType(openDomainType);
|
2025-10-24 11:11:59 +08:00
|
|
|
if (this.domain != AppConfig.PackageDomainName)
|
|
|
|
|
{
|
|
|
|
|
AppConfig.PackageDomainName = domain;
|
2026-01-07 18:20:13 +08:00
|
|
|
await _loadSystem.SetCurState(nameof(HotFixStartState));
|
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;
|
2026-04-12 16:48:41 +08:00
|
|
|
DomainAssetSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
|
|
|
|
|
DomainAssetSystem.SetTransformCtor(transformCtor);
|
2025-10-24 11:11:59 +08:00
|
|
|
if (this.domain != AppConfig.PackageDomainName)
|
|
|
|
|
{
|
|
|
|
|
AppConfig.PackageDomainName = domain;
|
2026-01-07 18:20:13 +08:00
|
|
|
_loadSystem.SetCurState(nameof(HotFixStartState));
|
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;
|
2026-04-12 16:48:41 +08:00
|
|
|
DomainAssetSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
|
|
|
|
|
DomainAssetSystem.SetTransformCtor(transform);
|
2025-10-24 11:11:59 +08:00
|
|
|
if (this.domain != AppConfig.PackageDomainName)
|
|
|
|
|
{
|
|
|
|
|
AppConfig.PackageDomainName = domain;
|
2026-01-07 18:20:13 +08:00
|
|
|
_loadSystem.SetCurState(nameof(HotFixStartState));
|
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()
|
|
|
|
|
{
|
2026-01-07 18:20:13 +08:00
|
|
|
if (_loadSystem != null)
|
|
|
|
|
_loadSystem.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
|
|
|
}
|