Documentation
¶
Overview ¶
Package worldsource defines the high-level, separately versioned room and prefab schema consumed by public world compilers. It intentionally has no YAML implementation dependency; tags describe the stable field vocabulary.
Index ¶
Constants ¶
const ( Version = uint16(1) MaxRooms = 1024 MaxPrefabs = 256 MaxInstances = 4096 MaxConnections = 8192 MaxPorts = 4096 MaxEdges = 8192 MaxEdgesPerRoom = 256 MaxContents = 4096 MaxMaterialOverrides = 256 MaxIdentifierBytes = 128 MaxCoordinate = 1_000_000.0 MinEdgeLength = 1e-6 MinClearance = 1e-6 )
Variables ¶
var ( ErrVersion = errors.New("world source version is unsupported") ErrBounds = errors.New("world source exceeds a declared bound") ErrIdentity = errors.New("world source identity is invalid") ErrGeometry = errors.New("world source geometry is invalid") ErrReference = errors.New("world source reference is invalid") ErrConnection = errors.New("world source connection is invalid") ErrContent = errors.New("world source content is invalid") ErrPrefabCycle = errors.New("world source prefab cycle is invalid") )
Functions ¶
Types ¶
type Connection ¶
type Connection struct {
ID string `json:"id" yaml:"id"`
A Endpoint `json:"a" yaml:"a"`
B Endpoint `json:"b" yaml:"b"`
}
Connection joins two aperture endpoints once; reciprocal duplicate records are neither needed nor accepted.
type Document ¶
type Document struct {
Version uint16 `json:"version" yaml:"version"`
Rooms []Room `json:"rooms" yaml:"rooms"`
Prefabs []Prefab `json:"prefabs" yaml:"prefabs"`
Instances []Instance `json:"instances" yaml:"instances"`
Connections []Connection `json:"connections" yaml:"connections"`
}
type Edge ¶
type Edge struct {
ID string `json:"id" yaml:"id"`
Start Vec2 `json:"start" yaml:"start"`
End Vec2 `json:"end" yaml:"end"`
Material string `json:"material" yaml:"material"`
}
Edge is one named, directed CCW boundary edge.
type Endpoint ¶
type Endpoint struct {
Room string `json:"room" yaml:"room"`
Edge string `json:"edge" yaml:"edge"`
Instance string `json:"instance" yaml:"instance"`
Port string `json:"port" yaml:"port"`
}
Endpoint selects either a room edge in the current scope or a named port on an instance in that scope. Exactly one pair must be populated.
type Instance ¶
type Instance struct {
ID string `json:"id" yaml:"id"`
Prefab string `json:"prefab" yaml:"prefab"`
Transform Transform `json:"transform" yaml:"transform"`
Materials []MaterialOverride `json:"materials" yaml:"materials"`
}
type MaterialOverride ¶
type Plane ¶
type Plane struct {
A float64 `json:"a" yaml:"a"`
B float64 `json:"b" yaml:"b"`
C float64 `json:"c" yaml:"c"`
}
Plane describes elevation z=A*x+B*y+C in source coordinates.
type Port ¶
type Port struct {
ID string `json:"id" yaml:"id"`
Endpoint Endpoint `json:"endpoint" yaml:"endpoint"`
}
Port exposes one otherwise unconnected prefab endpoint to its instances.
type Prefab ¶
type Prefab struct {
ID string `json:"id" yaml:"id"`
Rooms []Room `json:"rooms" yaml:"rooms"`
Instances []Instance `json:"instances" yaml:"instances"`
Connections []Connection `json:"connections" yaml:"connections"`
Ports []Port `json:"ports" yaml:"ports"`
}
type Room ¶
type Room struct {
ID string `json:"id" yaml:"id"`
Boundary []Edge `json:"boundary" yaml:"boundary"`
Floor Plane `json:"floor" yaml:"floor"`
Ceiling Plane `json:"ceiling" yaml:"ceiling"`
FloorMaterial string `json:"floor_material" yaml:"floor_material"`
CeilingMaterial string `json:"ceiling_material" yaml:"ceiling_material"`
Contents []Content `json:"contents" yaml:"contents"`
}
Room may be concave. The compiler decomposes it into convex sectors after prefab expansion and connection resolution.
type Transform ¶
type Transform struct {
Translation Vec3 `json:"translation" yaml:"translation"`
YawDegrees float64 `json:"yaw_degrees" yaml:"yaw_degrees"`
Scale float64 `json:"scale" yaml:"scale"`
}
Transform applies uniform scale, Z-axis yaw in degrees and translation. Scale zero means the schema default of one.