65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package integration
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"aego/app/assembly"
|
|
"aego/app/assembly/builtin"
|
|
"aego/core/mathx"
|
|
"aego/modules/physics/components"
|
|
"aego/scene"
|
|
"aego/scene/sceneio"
|
|
"aego/script/bind"
|
|
)
|
|
|
|
func TestMissingFieldsTakeDefaults(t *testing.T) {
|
|
types, err := assembly.NewTypes()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := builtin.Default().Load(types, bind.New(), assembly.Options{Seed: 1}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := types.Schema().Freeze(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
src := `scene version=1 {
|
|
node "d0000000000000000000000000000001" name="Box" enabled=true layers=1 {
|
|
component "physics.Body2D" version=1 {
|
|
}
|
|
component "physics.BoxCollider2D" version=1 {
|
|
size=[2, 3]
|
|
}
|
|
}
|
|
}
|
|
`
|
|
s, _, err := sceneio.Load([]byte(src), "hand.aescene", types, nil, sceneio.LoadOptions{KeepIDs: true})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
h := s.Find(s.Root(), "Box")
|
|
b, _ := scene.Get[components.Body2D](s, h)
|
|
if b.Type != components.Dynamic || b.GravityScale != 1 || b.Mask != -1 || !b.AllowSleep {
|
|
t.Fatalf("body %+v", *b)
|
|
}
|
|
c, _ := scene.Get[components.BoxCollider2D](s, h)
|
|
if c.Size != (mathx.Vec2{X: 2, Y: 3}) || c.Density != 1 || c.Friction != 0.6 {
|
|
t.Fatalf("box %+v", *c)
|
|
}
|
|
}
|
|
|
|
func TestScriptVectorDefaultPublished(t *testing.T) {
|
|
pf := openPlatformer(t)
|
|
td, ok := pf.app.Types.Schema().ByName(playerType)
|
|
if !ok {
|
|
t.Fatal("PlayerController is not published")
|
|
}
|
|
fd, ok := td.Field("JumpImpulse")
|
|
if !ok || !fd.HasDefault || fd.Default.V != (mathx.Vec2{Y: -5}) {
|
|
t.Fatalf("JumpImpulse default %+v", fd)
|
|
}
|
|
if v := pf.field("JumpImpulse"); v.Lane(1) != -5 {
|
|
t.Fatalf("instance JumpImpulse lane y = %v", v.Lane(1))
|
|
}
|
|
}
|