190 lines
6.3 KiB
C#
190 lines
6.3 KiB
C#
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
namespace Stary.Evo
|
|
{
|
|
public class HybridClREntrance : MonoBehaviour
|
|
{
|
|
public static HybridClREntrance Global;
|
|
public StageType stage;
|
|
public string domain;
|
|
|
|
private FsmLoadSystem _devLoadSystem;
|
|
private FsmLoadSystem _originalityLoadSystem;
|
|
|
|
|
|
/// <summary>
|
|
/// 即将加载的domain场景
|
|
/// </summary>
|
|
public string loadDomain;
|
|
|
|
private async void Awake()
|
|
{
|
|
if (Global == null)
|
|
{
|
|
Global = this;
|
|
DontDestroyOnLoad(gameObject);
|
|
}
|
|
else
|
|
{
|
|
Destroy(gameObject);
|
|
return;
|
|
}
|
|
|
|
_devLoadSystem = new FsmLoadSystem();
|
|
// 初始化日志
|
|
_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));
|
|
//_fsmSystem.AddState(new LoadResMainState(_fsmSystem));
|
|
|
|
//初始化读取资源配置表
|
|
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);
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
#if !UNITY_EDITOR
|
|
if(string.IsNullOrEmpty(domain))
|
|
domain = "Main";
|
|
#elif UNITY_EDITOR
|
|
// var immersalSDK = FindObjectOfType<ImmersalSDK>();
|
|
// immersalSDK.onPoseFound.Invoke();
|
|
#endif
|
|
if (stage == StageType.Developer)
|
|
{
|
|
AppConfig.PackageDomainName = domain;
|
|
}
|
|
else if (stage == StageType.Originality)
|
|
{
|
|
AppConfig.PackageDomainName = "Main";
|
|
}
|
|
|
|
_devLoadSystem.SetCurState(nameof(ResStartState));
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (_devLoadSystem.CurState != null)
|
|
_devLoadSystem.CurState.OnUpdate();
|
|
}
|
|
|
|
public async Task OpenDomain()
|
|
{
|
|
AppConfig.PackageDomainName = domain;
|
|
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));
|
|
}
|
|
}
|
|
|
|
|
|
public async void OpenDomain(string domain, OpenDomainType openDomainType)
|
|
{
|
|
this.domain = domain;
|
|
_devLoadSystem.SetOpenDomainType(openDomainType);
|
|
if (this.domain != AppConfig.PackageDomainName)
|
|
{
|
|
AppConfig.PackageDomainName = domain;
|
|
await _devLoadSystem.SetCurState(nameof(ResStartState));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log($"domain:{domain} 已打开, 请勿重复打开");
|
|
}
|
|
}
|
|
|
|
public void OpenDomain(string domain, TransformCtor transformCtor)
|
|
{
|
|
this.domain = domain;
|
|
_devLoadSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
|
|
_devLoadSystem.SetTransformCtor(transformCtor);
|
|
if (this.domain != AppConfig.PackageDomainName)
|
|
{
|
|
AppConfig.PackageDomainName = domain;
|
|
_devLoadSystem.SetCurState(nameof(ResStartState));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log($"domain:{domain} 已打开, 请勿重复打开");
|
|
}
|
|
}
|
|
|
|
public void OpenDomain(string domain, Transform transform)
|
|
{
|
|
this.domain = domain;
|
|
_devLoadSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
|
|
_devLoadSystem.SetTransformCtor(transform);
|
|
if (this.domain != AppConfig.PackageDomainName)
|
|
{
|
|
AppConfig.PackageDomainName = domain;
|
|
_devLoadSystem.SetCurState(nameof(ResStartState));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log($"domain:{domain} 已打开, 请勿重复打开");
|
|
}
|
|
}
|
|
|
|
public void CloseDomain()
|
|
{
|
|
if (_devLoadSystem != null)
|
|
_devLoadSystem.SetCurState(nameof(DefaultStateAsync));
|
|
if (_originalityLoadSystem != null)
|
|
_originalityLoadSystem.SetCurState(nameof(DefaultStateAsync));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打开的项目类型
|
|
/// DEFAULT:默认打开方式
|
|
/// VIOICE:语音打开方式
|
|
/// </summary>
|
|
public enum OpenDomainType
|
|
{
|
|
Editor,
|
|
PointCloud,
|
|
VIOICE,
|
|
ImageTracked
|
|
}
|
|
|
|
public enum StageType
|
|
{
|
|
/// <summary>
|
|
/// 创意阶段
|
|
/// </summary>
|
|
Originality,
|
|
|
|
/// <summary>
|
|
/// 开发者阶段
|
|
/// </summary>
|
|
Developer,
|
|
}
|
|
} |