Skip to content

Interface: IVideoRenderer ​

Video-on-a-quad capability. assetId references a video previously loaded by IAssetLoader.

The draw half mirrors ISpriteRenderer — a video is a textured quad and gets the same anchor/size/tint treatment. The transport half is here rather than in a separate audio-style backend tier because a video's texture and its playback are the same underlying object; splitting them would force two abstractions to share one element.

Every query returns a scalar on purpose: VideoRenderSystem polls them once per entity per frame, and returning a state object would allocate in a render loop.

Methods ​

ConsumeVideoEnded() ​

ts
ConsumeVideoEnded(handle): boolean;

Consume-once completion latch: true exactly once per playthrough that reaches the end, cleared by the read. A latch rather than a callback so there's no subscription to keep alive across renderer swaps or component removal.

Parameters ​

ParameterType
handlenumber

Returns ​

boolean


CreateVideo() ​

ts
CreateVideo(assetId): number;

Parameters ​

ParameterType
assetIdstring

Returns ​

number


DestroyVideo() ​

ts
DestroyVideo(handle): void;

Parameters ​

ParameterType
handlenumber

Returns ​

void


GetVideoDuration() ​

ts
GetVideoDuration(handle): number;

Parameters ​

ParameterType
handlenumber

Returns ​

number


GetVideoNaturalSize() ​

ts
GetVideoNaturalSize(handle): 
  | {
  height: number;
  width: number;
}
  | null;

Parameters ​

ParameterType
handlenumber

Returns ​

| { height: number; width: number; } | null


GetVideoTime() ​

ts
GetVideoTime(handle): number;

Parameters ​

ParameterType
handlenumber

Returns ​

number


IsVideoPlaying() ​

ts
IsVideoPlaying(handle): boolean;

Parameters ​

ParameterType
handlenumber

Returns ​

boolean


IsVideoReady() ​

ts
IsVideoReady(handle): boolean;

Parameters ​

ParameterType
handlenumber

Returns ​

boolean


PauseVideo() ​

ts
PauseVideo(handle): void;

Parameters ​

ParameterType
handlenumber

Returns ​

void


PlayVideo() ​

ts
PlayVideo(handle): void;

Transport. Play() on a backend that still needs a user gesture must not throw or silently drop — defer and start on the first gesture instead.

Parameters ​

ParameterType
handlenumber

Returns ​

void


SeekVideo() ​

ts
SeekVideo(handle, seconds): void;

Parameters ​

ParameterType
handlenumber
secondsnumber

Returns ​

void


SetVideoAnchor() ​

ts
SetVideoAnchor(
   handle, 
   anchorX, 
   anchorY
): void;

Parameters ​

ParameterType
handlenumber
anchorXnumber
anchorYnumber

Returns ​

void


SetVideoAsset() ​

ts
SetVideoAsset(handle, assetId): void;

Parameters ​

ParameterType
handlenumber
assetIdstring

Returns ​

void


SetVideoLoop() ​

ts
SetVideoLoop(handle, loop): void;

Parameters ​

ParameterType
handlenumber
loopboolean

Returns ​

void


SetVideoMuted() ​

ts
SetVideoMuted(handle, muted): void;

Parameters ​

ParameterType
handlenumber
mutedboolean

Returns ​

void


SetVideoSize() ​

ts
SetVideoSize(
   handle, 
   width, 
   height
): void;

Parameters ​

ParameterType
handlenumber
widthnumber
heightnumber

Returns ​

void


SetVideoTint() ​

ts
SetVideoTint(handle, tint): void;

Parameters ​

ParameterType
handlenumber
tintnumber

Returns ​

void


SetVideoVolume() ​

ts
SetVideoVolume(handle, volume): void;

Parameters ​

ParameterType
handlenumber
volumenumber

Returns ​

void


StopVideo() ​

ts
StopVideo(handle): void;

Parameters ​

ParameterType
handlenumber

Returns ​

void

© 2026 PlayAdGentic