public void Release() { _id = 0; _nextNode = null; _owner = null; _view = null; }
void DestroyNode(SnakerNodeView node) { if (node != null) { node.Unbind(); Destroy(node.gameObject); } }
SnakerNodeView CreateNode(SnakerNode node) { GameObject prefab = Resources.Load <GameObject>(node.Data["Prefab"].StringValue); GameObject go = Instantiate <GameObject>(prefab); go.name = prefab.name; go.transform.SetParent(CachedTransform); SnakerNodeView result = go.EnsureComponent <SnakerNodeView>(); result.Bind(node); return(result); }
public void Bind(Snaker model) { _model = model; _nodeList.Clear(); _head = CreateNode(_model.Head); _head.CachedTransform.SetParent(CachedTransform); _tail = CreateNode(_model.Tail); _tail.CachedTransform.SetParent(CachedTransform); SyncNodeList(); DoUpdate(0f); }
void SyncNodeList() { if (_nodeList.Count != _model.GetKeyNodeCount()) { SnakerNode node = _model.Head.NextNode; while (node != null) { if (node != _model.Tail && node.View == null && node.IsKeyNode()) { SnakerNodeView _node = CreateNode(node); _node.CachedTransform.SetParent(CachedTransform); node.View = _node; _nodeList.Add(_node); } node = node.NextNode; } } }