Work towards deletion system

This commit is contained in:
2022-07-17 22:12:46 -04:00
parent 994f9a06c8
commit 987ef9502f
3 changed files with 47 additions and 4 deletions

View File

@ -15,4 +15,5 @@ type INode interface {
IsProcessing() bool
GetProcessMode() ProcessMode
SetProcessMode(ProcessMode)
Free() error
}

View File

@ -1,6 +1,7 @@
package node
import (
"fmt"
"log"
"github.com/manleydev/golang-game-framework/rendering"
@ -112,6 +113,26 @@ func (node *Node) GetName() string {
return node.Name
}
func (node *Node) Free() error {
var parent *Node = node.parent.(*Node)
if err := parent.removeChild(node); err != nil {
return err
}
node.parent = nil
return nil
}
func (node *Node) removeChild(target *Node) error {
for i, child := range node.children {
if child == target {
node.children = append(node.children[:i], node.children[i+1:]...)
return nil
}
}
return fmt.Errorf("Could not remove child '%s', child not found on parent!", target.Name)
}
func (node *Node) GetChild(index int) INode {
if index < len(node.children) {
return nil