mirror of
https://github.com/yeslayla/golang-game-framework.git
synced 2025-07-07 11:13:47 +02:00
Work towards deletion system
This commit is contained in:
@ -15,4 +15,5 @@ type INode interface {
|
||||
IsProcessing() bool
|
||||
GetProcessMode() ProcessMode
|
||||
SetProcessMode(ProcessMode)
|
||||
Free() error
|
||||
}
|
||||
|
21
node/node.go
21
node/node.go
@ -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
|
||||
|
Reference in New Issue
Block a user