12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using CommonAI.ZoneClient;
- using Sirenix.Utilities;
- using UnityEngine;
- namespace ET.Client
- {
- [Event(SceneType.Current)]
- public class OnNewZoneObjectHandler : AEvent<EventType.OnNewZoneObject>
- {
- protected override async ETTask Run(Scene scene, EventType.OnNewZoneObject args)
- {
- var obj = UnitMgr.Instance.GetUnit(args.ObjectId);
- if(obj is BattleUnit)
- {
- await CreatUnitModel(obj as BattleUnit);
- }
- else if(obj is BattleSpell)
- {
-
- await CreateSpellModel(obj as BattleSpell);
- }
- else
- {
- Log.Error("unknow new object");
- }
- }
- private static CommonLang.Geometry.Vector3 vecTemp = new();
- private async ETTask CreatUnitModel(BattleUnit unit)
- {
- var zu = unit.ZUnit;
- var go = await GameObjectPool.Instance.Acquire($"Unit_{zu.Info.FileName}");
- go.SetActive(true);
- if (!UnitMgr.Instance.HasUnit(zu.ObjectID))
- {
-
- Log.Debug($"ignore dead unit: {zu}@{zu.ObjectID}");
- return;
- }
- ModelViewComponent.Instance.AddChildWithId<UnitRenderComponet, GameObject>(unit.Id, go, true);
- go.transform.parent = GlobalViewComponent.Instance.Unit;
- vecTemp.Set(zu.X, zu.Y, zu.Z);
- go.transform.position = RenderUtils.UnityPosFromBattle(vecTemp);
- go.transform.rotation = RenderUtils.UnityRotationFromBattle(zu.Direction);
- if (unit is BattleActor)
- {
- CameraMgr.FollowMe(go.transform.position);
- }
- Log.Debug($"unitRender({zu.ObjectID}),pos({zu.X},{zu.Y},{zu.Z}) ok.");
-
- }
- private async ETTask CreateSpellModel(BattleSpell spell)
- {
- var zs = spell.ZoneObject as ZoneSpell;
- var res = zs.Info.FileName;
- if(res.IsNullOrWhitespace())
- {
- Log.Debug($"spell({zs.Info.ID}) not config fileName");
- return;
- }
- if (!UnitMgr.Instance.HasUnit(zs.ObjectID) || (zs.Sender != null && !UnitMgr.Instance.HasUnit(zs.Sender.ObjectID)))
- {
-
- Log.Debug($"ignore dead unit's spell: {zs.ObjectID}@{zs.Sender.ObjectID}");
- return;
- }
- GameObject go = await GameObjectPool.Instance.Acquire($"Effect_{res}");
- go.transform.parent = GlobalViewComponent.Instance.Unit;
- go.SetActive(true);
- go.transform.localScale = Vector3.one * zs.Info.FileBodyScale;
- vecTemp.Set(zs.X, zs.Y, zs.Z + zs.LaunchHeight);
- go.transform.position = RenderUtils.UnityPosFromBattle(vecTemp);
- go.transform.rotation = RenderUtils.UnityRotationFromBattle(zs.Direction);
- ModelViewComponent.Instance.AddChildWithId<UnitRenderComponet, GameObject>(zs.ObjectID, go, true);
- var et = go.GetComponent<EffectTime>();
- if (et != null)
- {
- et.speed = zs.Info.EffectAddSpeed;
-
-
- }
- }
- }
- }
|