using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using vnxbqy.UI;
|
|
public class CreateRoleBehaviour
|
{
|
public State state { get; private set; }
|
|
CreateRoleTimeLine showTimeLine = new CreateRoleTimeLine();
|
List<SFXController> sfxControllers = new List<SFXController>();
|
|
GameObject behaviour;
|
CreateRoleHeroPlatform platform;
|
|
public void Show(CreateRoleScriptableObject.RoleShowParams showParams)
|
{
|
if (behaviour == null)
|
{
|
var prefab = SceneLoader.LoadCreateRole(showParams.platformPrefabName);
|
behaviour = GameObject.Instantiate(prefab, showParams.platformPosition, Quaternion.identity);
|
behaviour.name = showParams.platformPrefabName;
|
platform = behaviour.GetComponentInChildren<CreateRoleHeroPlatform>();
|
platform.transform.localScale = showParams.platformScale;
|
var camera = behaviour.GetComponent<Camera>("CreateRoleCamera");
|
if (camera != null)
|
{
|
camera.SetActive(false);
|
}
|
}
|
|
platform.transform.localEulerAngles = new Vector3(0, 180, 0);
|
platform.ForbidSeconds(showParams.animationDuration);
|
CreateRoleManager.Instance.LoadModel(showParams.job, PlayerModelMarkConfig.Get(CreateRoleConfig.Get(showParams.job).modelMark).npcid, (bool ok, UnityEngine.Object @object) =>
|
{
|
if (ok)
|
{
|
var model = @object as GameObject;
|
model.transform.SetParentEx(platform.transform, Vector3.zero, Quaternion.identity, Vector3.one * showParams.scale);
|
|
model.SetActive(true);
|
|
ReleaseEffects();
|
state = State.RoutimeShow;
|
|
showTimeLine.ClearNode();
|
showTimeLine.AddNone(0f, () =>
|
{
|
var animator = model.GetComponent<Animator>();
|
animator.runtimeAnimatorController = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, NPCConfig.Get(PlayerModelMarkConfig.Get(CreateRoleConfig.Get(showParams.job).modelMark).npcid).MODE);
|
});
|
|
|
showTimeLine.AddNone(0f, () =>
|
{
|
WindowCenter.Instance.Open<CreateRoleWin>();
|
});
|
|
showTimeLine.OnComplete(() => { state = State.Idle; });
|
showTimeLine.Begin();
|
}
|
});
|
}
|
|
public void SetActive(bool active)
|
{
|
if (behaviour != null)
|
{
|
behaviour.transform.SetActive(active);
|
}
|
}
|
|
public void Dispose()
|
{
|
showTimeLine.Dispose();
|
ReleaseEffects();
|
|
showTimeLine = null;
|
behaviour = null;
|
platform = null;
|
}
|
|
public void ReleaseEffects()
|
{
|
for (var i = sfxControllers.Count - 1; i >= 0; i--)
|
{
|
SFXPlayUtility.Instance.Release(sfxControllers[i]);
|
}
|
|
sfxControllers.Clear();
|
}
|
|
public enum State
|
{
|
Idle,
|
EnterShow,
|
RoutimeShow,
|
}
|
|
}
|