Files
aego/asset/preset.go
T
sanspie 5eb1832907
ci-platforms / darwin amd64 smoke (push) Skipped
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 15m28s
ci / release (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
ci-platforms / darwin arm64 smoke (push) Skipped
ci / checks (push) Successful in 7m47s
Complete Stage 12 for v0.12.0
2026-11-05 11:46:53 +03:00

29 lines
697 B
Go

package asset
import (
"errors"
"aego/format/aetext"
)
func PresetComponent(n *aetext.Node, name string) (*aetext.Node, error) {
var component *aetext.Node
if n != nil && n.Head == "prefab" && len(n.Blocks) == 1 && n.Blocks[0].Head == "node" {
for _, b := range n.Blocks[0].Blocks {
switch b.Head {
case "node":
return nil, errors.New("component preset contains a child node")
case "component":
if component != nil {
return nil, errors.New("expected a single preset component")
}
component = b
}
}
}
if component == nil || component.Label != name {
return nil, errors.New("preset does not match the requested component")
}
return component, nil
}