eggcar
The banana's ride: a glossy eggplant hot rod with a green calyx, a curled stem on the nose, a sunk leather cockpit with a steering wheel, chrome moon-disc wheels (big at the back), banana-neon hub rings and violet underglow. Built procedurally with `game.shared.geo`.
eggcar
The banana's ride: a glossy eggplant hot rod with a green calyx, a curled stem on the nose, a sunk leather cockpit with a steering wheel, chrome moon-disc wheels (big at the back), banana-neon hub rings and violet underglow. Built procedurally with game.shared.geo.
E.spawn(parent, name, pos, rot) builds a drivable car: a dynamic Physics chassis (forward is local -Z), four sprung WheelColliders that pose and spin the wheel visuals, and a VehicleController that waits for takeControl(). It returns { entity, id, vc, steer, steerBase, wheels }. E.HIPS is where the driver's hips sit, E.EXIT where they step out, E.wheelPoint(angle) a grip point on the steering wheel rim, and E.setSteer(car, angle) turns the wheel.
Spawned and driven by the BananaPlayer component.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2game.player.eggcar — the banana's ride: a glossy eggplant hot rod. Built in the chassis frame VehicleController drives: forward is -Z, +X is the car's right, +Y up, the origin at the chassis box's centre. The eggplant lies along Z with its fat bulb at the back and its green calyx and curled stem on the nose. A leather cockpit is sunk into the top of the bulb with a small steering wheel; big chrome moon-disc wheels at the back, small ones up front, banana-neon rings on the hubs and violet underglow. `E.spawn(parent, name, pos, rot)` builds one: a dynamic Physics chassis, four WheelColliders that pose and spin the wheel visuals, and a VehicleController that waits for `takeControl()`.
radiusAt(y: number) → number
| arg | type | description |
|---|---|---|
| y | number |
belly(a: number) → number
the underside is a little flatter than the top
| arg | type | description |
|---|---|---|
| a | number |
lift(along: number) → number
How far the hull's axis is lifted `along` metres from the tail: the bulb sits level, the neck curves up into the calyx.
| arg | type | description |
|---|---|---|
| along | number |
at(along: number, a: number, off: number) → void
A point on the hull `along` metres from the tail, at angle `a` round the section (0 = right, pi/2 = top), pushed `off` metres out of the surface.
| arg | type | description |
|---|---|---|
| along | number | |
| a | number | |
| off | number |
topAt(x: number, z: number) → number
Height of the hull's top surface over chassis point (x, z).
| arg | type | description |
|---|---|---|
| x | number | |
| z | number |
ball(r: number, p: { number }) → any
| arg | type | description |
|---|---|---|
| r | number | |
| p | { number } |
torus(R: number, r: number, y: number, rows: number, cols: number) → any
a torus around +Y: ring radius R, tube radius r, at height y
| arg | type | description |
|---|---|---|
| R | number | |
| r | number | |
| y | number | |
| rows | number | |
| cols | number |
bodyGeo( ) → void
put(mat: string, g: any) → void
| arg | type | description |
|---|---|---|
| mat | string | |
| g | any |
radial(th: number, _t: number) → void
| arg | type | description |
|---|---|---|
| th | number | |
| _t | number |
offset(t: number) → void
| arg | type | description |
|---|---|---|
| t | number |
steerGeo( ) → void
the steering wheel, axle along local +Z (towards the driver)
wheelGeo(r: number, w: number, side: number) → void
one wheel: the tyre, a chrome moon disc, a gold cap and a neon ring, built round +Y with the outside up, then laid on its side with the outside at +X (side = 1) or -X (side = -1)
| arg | type | description |
|---|---|---|
| r | number | |
| w | number | |
| side | number |
radial(th: number, t: number) → void
| arg | type | description |
|---|---|---|
| th | number | |
| t | number |
lay(g: any) → any return G
| arg | type | description |
|---|---|---|
| g | any |
brakeGeo( ) → void
the brake lights' lit lenses, a size up over the taillights, shown only while the car brakes
meshes( ) → any
upload(set: { [string]: { any } }, prefix: string) → void
| arg | type | description |
|---|---|---|
| set | { [string]: { any } } | |
| prefix | string |
models(par: any, set: { [string]: any }, base: string) → void
| arg | type | description |
|---|---|---|
| par | any | |
| set | { [string]: any } | |
| base | string |
light(par: any, name: string, p: { number }, c: { number }, intensity: number, radius: number) → void
| arg | type | description |
|---|---|---|
| par | any | |
| name | string | |
| p | { number } | |
| c | { number } | |
| intensity | number | |
| radius | number |
wheelPoint(angle: number) → void
The hands' grip on the steering wheel rim at `angle` (0 = the car's right, pi/2 = the top), in the chassis frame.
| arg | type | description |
|---|---|---|
| angle | number |
setSteer(car: any, angle: number) → void
Spin the steering wheel: positive turns it clockwise, to the right.
| arg | type | description |
|---|---|---|
| car | any | |
| angle | number |
spawn(parent: any, name: string, pos: { number }, rot: { number }) → any
Build a car named `name` under `parent`, at world `pos` turned by `rot`.
| arg | type | description |
|---|---|---|
| parent | any | |
| name | string | |
| pos | { number } | |
| rot | { number } |
setNum(fx: any, key: string, comp: any, prop: string, v: number, eps: number) → void
| arg | type | description |
|---|---|---|
| fx | any | |
| key | string | |
| comp | any | |
| prop | string | |
| v | number | |
| eps | number |
setColor(fx: any, key: string, comp: any, c: { number }) → void
| arg | type | description |
|---|---|---|
| fx | any | |
| key | string | |
| comp | any | |
| c | { number } |
mix(a: { number }, b: { number }, t: number) → void
| arg | type | description |
|---|---|---|
| a | { number } | |
| b | { number } | |
| t | number |
ease(cur: number, want: number, rate: number, dt: number) → number
| arg | type | description |
|---|---|---|
| cur | number | |
| want | number | |
| rate | number | |
| dt | number |
setInput(fx: any, play: any, input: string, v: number, step: number) → void
Set an effect play's input when it moves to another multiple of `step`, so the particles are steered without a write every frame.
| arg | type | description |
|---|---|---|
| fx | any | |
| play | any | |
| input | string | |
| v | number | |
| step | number |
tick(car: any, dt: number, driven: boolean) → any
Run the car's lights for one frame: headlights on while `driven`, brake lights on braking or pulling against the roll, reverse white when backing, underglow breathing (faster and hotter with speed, magenta on boost). Returns the car's live state: { fwd (m/s, + forward), braking, boost, ds }.
| arg | type | description |
|---|---|---|
| car | any | |
| dt | number | |
| driven | boolean |
effect( ) → any
startFx(car: any, home: any) → void
Start the car's particles: the exhaust rides the car; the wake plays under `home` (the player's mount) so the smoke and spray it leaves stay behind. Their inputs start at zero and E.tick drives them. Stop with E.stopFx.
| arg | type | description |
|---|---|---|
| car | any | |
| home | any |
stopFx(car: any) → void
| arg | type | description |
|---|---|---|
| car | any |
sparks(home: any, pos: { number }, force: number, groundY: number) → void
One burst of ram sparks at world `pos` under `home`, `force` 0.3-3 for how hard the hit was, bouncing off the street at height `groundY`.
| arg | type | description |
|---|---|---|
| home | any | |
| pos | { number } | |
| force | number | |
| groundY | number |
Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Showing up to 3 levels deep. Open a part to see what it holds further down.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ quality × 0.35
+ performance × 0.25
± compat factor
Usability ratings
Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".
Scoped to this part · feeds back into the world's score.