private NodeHandle Allocate(PoolObjectFeature featureKey, Node node) { if (_free.TryGetValue(featureKey, out Stack <NodeHandle> pool) && pool.Count > 0) { var res = pool.Pop(); res.node = node; // init res.gameObject.SetActive(true); res.gameObject.hideFlags = HideFlags.None; return(res); } var go = new GameObject(); var nh = go.AddComponent <NodeHandle>(); nh.node = node; nh.featureKey = featureKey; return(nh); }
private NodeHandle CreateNodeHandle(Node node, PoolObjectFeature feature) { var nodeHandle = Allocate(feature, node); nodeHandle.name = node.GetName(); if (string.IsNullOrEmpty(nodeHandle.name)) { nodeHandle.name = node.GetType().Name; } return(nodeHandle); }