using AppGame; using DG.Tweening; using Game.JNGFrame.Logic.Entity; using Game.JNGState.Logic.Data; using JNGame.Math; using JNGame.Sync.System; using JNGame.Sync.View; using Service; using UnityEngine; namespace Game.JNGFrame.View.Entity { public class VDNodes : VDEntityBasis { public GameObject VWorld => App.Resource.VWorld; public GameObject Player => App.Resource.Player; public VDNodes(SViewSystem root) : base(root) { Register((int)GDataValueCode.Position, OnUpdatePosition); } /// /// 更新位置 /// private void OnUpdatePosition((GameObject View, EDNodeData Data) tuple) { var (view, data) = tuple; if (data.Value.Position != null) { view.transform.DOMove(data.Value.Position.ToVector3(), 0.5f); } } public override GameObject NewView(EDNodeData data) { var view = Object.Instantiate(Player, VWorld.transform); view.name = $"Node_{data.Id}"; return view; } public override EDNodeData[] GetData() { return GetService().Datas; } public override void ViewRemove(GameObject view) { view.transform.DOKill(); Object.Destroy(view); } } }