goo3d 0.2.0
goo3d: ^0.2.0 copied to clipboard
The 3D renderer for the good game engine: decomposed transforms with quaternion rotation, composed world transforms and the camera, on top of the good kernel, which it re-exports.
0.2.0 #
First published release, and it starts at 0.2.0 rather than 0.1.0 so the
engine packages carry one version between them - good create --3d writes a
single constraint for both dimensions, and a goo3d a minor behind it would
not resolve.
The first landing of the 3D engine, on the same
good kernel goo2d uses:
Transform3D— position, scale and a quaternion rotation, as ten decomposed columns.setEuler,lookAt,yaw/pitch/rolland the forward/right/up basis getters hang offentity<Transform3D>(), and none of them allocate.WorldTransform3DandWorldTransform3DSystem— parent composed into child once per fixed tick, top-down, with per-subtree change detection. Opt-in, so an entity that is never parented pays nothing for it.Camera3D—fieldOfView,near,farandview, stored as row defaults a prefab can move in its owndescribeStruct.- Audio assets load. A 3D project could not load anything at all:
goo3dnamed no payload type, sogood create --3dtyped every generated keyObject?.AudioClipmoved into the kernel, which this package re-exports, so a sound declared in a 3D game loads and its generated key is typed. It is bytes and a container name — nothing plays them yet.
Not here: the renderer. There are no meshes, materials, lights or draw path, and nothing in this release stands in for them — which is also why textures are the one asset kind a 3D project still cannot load. A texture is an image behind a handle, and there is nothing here that could draw one.