Stable identity for this component, unique within a session. Auto-generated for runtime-created components; the editor overwrites it with a persistent id when projecting a saved document so references survive save / load / undo.
Whether this component participates in simulation and rendering. When false,
the GameObject skips its update/updateRender and the scene's
render collectors (mesh renderers, camera, lights, …) ignore it — the
component stays attached and keeps its state, like Unity's Behaviour.enabled
/ Renderer.enabled. Defaults to true.
The owning GameObject; assigned by addComponent before onAttach runs.
True between onAttach and onDetach — i.e. while this component sits on a GameObject that is part of a live Scene. Managed by GameObject. Internal — do not set directly.
Texture/video the projector samples. Null = nothing is projected.
Frustum shape. See ProjectorShape.
Vertical field of view in degrees, used when focalLength is null
and shape is 'perspective'.
Physical focal length in millimeters. When set (non-null), it overrides
fovY: the vertical FOV is derived from it and sensorHeight
as 2·atan(sensorHeight / (2·focalLength)) — matching a real camera lens.
Sensor height in millimeters used with focalLength (default 24mm, full-frame).
Width/height aspect ratio of the projected image.
World-space width of the ortho frustum when shape is 'rect'.
World-space height of the ortho frustum when shape is 'rect'.
Near plane of the projection frustum.
Far plane; surfaces beyond this receive nothing.
Linear RGB tint multiplied into the sampled color.
Overall strength in [0,1], folded into the blend per ProjectorBlend.
How the projected color combines with the target.
When false (default) the projector composites after deferred lighting as a flat unlit image. When true it instead writes the G-buffer albedo before lighting, so the projected texture receives scene light and shadow like a painted-on surface.
Sub-rectangle of the source image to project, as
[offsetX, offsetY, scaleX, scaleY] in [0,1]. Composed with any atlas
packing rect. [0,0,1,1] projects the whole image.
Fraction of the frustum edge [0,1] over which the image fades to zero,
softening the hard rectangular/cone boundary. 0 = hard edge.
Optional id selecting a registered custom projection program (e.g. a depth-aware per-texel reprojection). Null uses the built-in projection.
The simulation clock of the scene this component belongs to. Read inside
update (or any time after the GameObject is added to a scene) for
absolute time, frame count, FPS, and timeScale-aware delta — e.g.
this.time.elapsed, this.time.delta, this.time.frameCount.
this.time.delta equals the dt argument passed to update, so
components can ignore that argument entirely and pull everything from here.
Connect to a Signal with automatic disconnect when this component is removed from its GameObject — the safe default for cross-object listening, so a destroyed component never leaks into (or gets called by) a signal it once observed. Typically called from onAttach:
onAttach(): void {
const health = this.gameObject.getComponent(Health)!;
this.listen(health.died, () => this.playDeathEffect());
}
The signal to connect to.
Listener, forwarded to Signal.connect.
Optionalopts: SignalConnectOptionsSee SignalConnectOptions.
The unsubscribe function, for listeners that also want to disconnect early; calling it is optional and idempotent.
Disconnect every signal connection made through listen. Called by GameObject.removeComponent after onDetach (so it runs even when a subclass overrides onDetach without calling super). Internal — do not call directly.
Called when the component joins a live scene — from addComponent when the
GameObject is already in a scene, otherwise when the GameObject is added to
one. this.gameObject.scene (and scene.engine) is always set here.
Override to acquire references to siblings/children or initialize resources.
Called when the component leaves the scene — removed via GameObject.removeComponent, or its GameObject removed from the scene. Override to release resources or unsubscribe from events.
Called every frame by the GameObject's update traversal.
Frame delta time in seconds.
Called when this component's GameObject begins touching another body, with the GameObject it collided with. Dispatched by the physics system after each world step (only while playing), so handlers may freely mutate the scene. Requires a physics body (RigidBody / CharacterBody) on the object.
The other GameObject involved in the contact.
Called every frame by the GameObject's render traversal, after update and any input/controller mutations to the transform. Override to refresh per-frame state that render passes consume (e.g. Camera recomputes its cached view/projection matrices here).
Active render context (provides canvas width/height etc.).
Vertical field of view in radians for the perspective frustum, derived from focalLength+sensorHeight when a focal length is set, otherwise from fovY.
World-space position of the projector (GameObject origin).
World-space forward direction (GameObject local -Z, normalized).
Right-handed view matrix from the projector's position looking down its forward axis.
Combined projection·view matrix that maps a world position into the
projector's clip space. A point is inside the frustum when, after the
perspective divide, its xy lie in [-1,1] and z in [0,1].
Projects a texture (or video) onto scene surfaces from this GameObject's transform — the unlit, shape-controlled counterpart to a textured spotlight.
The GameObject's world transform supplies the projector's position and forward (-Z) direction; the shape/focalLength/range fields define the frustum the image is cast through. The projector pass reconstructs each shaded pixel's world position from the G-buffer depth, transforms it by projectionViewProj, and — when the pixel lands inside the frustum — samples source and blends it per blend.
Unlike SpotLight's cookie (which only modulates lit radiance on a cone), a projector composites its texture directly, so it can show as a flat unlit image, supports rectangular or perspective frusta, alpha transparency, and cropping.