using CoreGame; using Entitas; using UnityEngine; namespace CoreGame.Render { public class BornSystem: IExecuteSystem { private readonly IGroup m_BornGroup; public BornSystem(CombatContext contexts) { m_BornGroup = contexts.GetGroup(CombatMatcher.Born); } public void Execute(float deltaTime) { m_BornGroup.GetEntities(Contexts.s_CacheEntities); for (int i = 0; i < Contexts.s_CacheEntities.Count; i++) { var ent = Contexts.s_CacheEntities[i]; Born(ent, deltaTime); } } private void Born(CombatEntity ent, float dt) { var bronComponent = ent.born; bronComponent.delayCreateTime -= dt; if (bronComponent.delayCreateTime <= 0) { ent.RemoveBorn(); RPCCaller.Call_SpawnEntity(ent); return; } if (bronComponent.bornEffect == null) { bronComponent.bornEffect = GoPoolDic.GetPool(bronComponent.bornEffectPath).GetNewGo(BornEffect, ent.creationIndex); } } private static void BornEffect(ReuseGoData goData) { var entity = Contexts.Combat.GetEntity(goData.interlockInd); if (entity.IsValid() == false) { return; } var blackboard = entity.blackboard; goData.go.transform.localRotation = Quaternion.identity; goData.go.transform.position = blackboard.GetBornPos(); var propDesc = MonsterPropDescMgr.Instance.GetConfig(blackboard.unitCfgId); goData.go.transform.localScale = Vector3.one * (propDesc.VFXsize * BattleConst.TenThousandReverse).AsFloat; goData.go.SetActiveWrap(true); } } }