fix add method

This commit is contained in:
Mikhail 2023-06-19 09:43:45 +08:00
parent d9bedb4d8b
commit b7b2e1dd79

View File

@ -52,26 +52,16 @@ namespace DCFApixels.DragonECS.Relations.Utils
/// <returns> new node index</returns> /// <returns> new node index</returns>
public int InsertAfter(int nodeIndex, int value) public int InsertAfter(int nodeIndex, int value)
{ {
int newNodeIndex; _count++;
if (_recycledNodesCount > 0) int newNodeIndex = _recycledNodesCount > 0 ? _recycledNodes[--_recycledNodesCount] : _count;
{
newNodeIndex = _recycledNodes[--_recycledNodesCount];
_count++;
}
else
{
newNodeIndex = ++_count;
}
ref Node prevNode = ref _nodes[nodeIndex]; ref Node prevNode = ref _nodes[nodeIndex];
ref Node nextNode = ref _nodes[prevNode.next]; ref Node nextNode = ref _nodes[prevNode.next];
_nodes[newNodeIndex].Set(value, nextNode.prev, prevNode.next); _nodes[newNodeIndex].Set(value, nextNode.prev, prevNode.next);
prevNode.next = newNodeIndex; prevNode.next = newNodeIndex;
nextNode.prev = newNodeIndex; nextNode.prev = newNodeIndex;
if(prevNode.next == 0)
_lastNodeIndex = newNodeIndex; _lastNodeIndex = newNodeIndex;
return newNodeIndex; return newNodeIndex;
} }
//public int InsertBefore(int nodeIndex, int value) { } //public int InsertBefore(int nodeIndex, int value) { }
@ -84,8 +74,6 @@ namespace DCFApixels.DragonECS.Relations.Utils
_nodes[node.next].prev = node.prev; _nodes[node.next].prev = node.prev;
_nodes[node.prev].next = node.next; _nodes[node.prev].next = node.next;
// node = Node.Empty;
if (_recycledNodesCount >= _recycledNodes.Length) if (_recycledNodesCount >= _recycledNodes.Length)
Array.Resize(ref _recycledNodes, _recycledNodes.Length << 1); Array.Resize(ref _recycledNodes, _recycledNodes.Length << 1);
_recycledNodes[_recycledNodesCount++] = nodeIndex; _recycledNodes[_recycledNodesCount++] = nodeIndex;