Creating Game Components
Quick Steps
- •Create
component/<name>.go:
go
package component
import "github.com/TheLazyLemur/engine/engine/math"
type <Name>Data struct {
Field1 float32 `inspector:"Label,min:0,max:100"`
Field2 math.Vector3 `inspector:"Label,type:vector3"`
Timer float32 `json:"-"` // Runtime only
}
func New<Name>() <Name>Data {
return <Name>Data{
Field1: 10.0,
Field2: math.Vector3Zero(),
}
}
- •Register in
component/components.go:
go
var (
<Name> = donburi.NewComponentType[<Name>Data]()
)
- •Register in
components.go:
go
engine.RegisterComponent(eng, "<Name>", gameComponent.<Name>)
Inspector Tags
| Tag | Effect |
|---|---|
inspector:"Label" | Show with label |
min:X,max:Y | Slider range |
type:vector3 | 3D editor |
type:euler | Rotation editor |
| `type:dropdown,options:A | B |
registry:mesh | Mesh picker |
json:"-" | Don't serialize |
Patterns
Timer: Elapsed float32 json:"-" **State**: `State int `inspector:"...,type:dropdown"
Reference: TargetID uint64