playcanvas
Version:
PlayCanvas WebGL game engine
136 lines (135 loc) • 4.5 kB
TypeScript
/**
* A ScreenComponent enables the Entity to render child {@link ElementComponent}s using anchors and
* positions in the ScreenComponent's space.
*
* @hideconstructor
* @category User Interface
*/
export class ScreenComponent extends Component {
/**
* Create a new ScreenComponent.
*
* @param {ScreenComponentSystem} system - The ComponentSystem that created this Component.
* @param {Entity} entity - The Entity that this Component is attached to.
*/
constructor(system: ScreenComponentSystem, entity: Entity);
_resolution: Vec2;
_referenceResolution: Vec2;
_scaleMode: string;
scale: number;
_scaleBlend: number;
_priority: number;
_screenSpace: boolean;
/**
* If true, then elements inside this screen will be not be rendered when outside of the
* screen (only valid when screenSpace is true).
*
* @type {boolean}
*/
cull: boolean;
_screenMatrix: Mat4;
_elements: Set<any>;
/**
* Set the drawOrder of each child {@link ElementComponent} so that ElementComponents which are
* last in the hierarchy are rendered on top. Draw Order sync is queued and will be updated by
* the next update loop.
*/
syncDrawOrder(): void;
_recurseDrawOrderSync(e: any, i: any): any;
_processDrawOrderSync(): void;
_calcProjectionMatrix(): void;
_updateScale(): void;
_calcScale(resolution: any, referenceResolution: any): number;
_onResize(width: any, height: any): void;
/**
* Sets the width and height of the ScreenComponent. When screenSpace is true the resolution will
* always be equal to {@link GraphicsDevice#width} x {@link GraphicsDevice#height}.
*
* @type {Vec2}
*/
set resolution(value: Vec2);
/**
* Gets the width and height of the ScreenComponent.
*
* @type {Vec2}
*/
get resolution(): Vec2;
_bindElement(element: any): void;
_unbindElement(element: any): void;
onRemove(): void;
/**
* Sets the resolution that the ScreenComponent is designed for. This is only taken into
* account when screenSpace is true and scaleMode is {@link SCALEMODE_BLEND}. If the actual
* resolution is different then the ScreenComponent will be scaled according to the scaleBlend
* value.
*
* @type {Vec2}
*/
set referenceResolution(value: Vec2);
/**
* Gets the resolution that the ScreenComponent is designed for.
*
* @type {Vec2}
*/
get referenceResolution(): Vec2;
/**
* Sets whether the ScreenComponent will render its child {@link ElementComponent}s in screen
* space instead of world space. Enable this to create 2D user interfaces.
*
* @type {boolean}
*/
set screenSpace(value: boolean);
/**
* Gets whether the ScreenComponent will render its child {@link ElementComponent}s in screen
* space instead of world space.
*
* @type {boolean}
*/
get screenSpace(): boolean;
/**
* Sets the scale mode. Can either be {@link SCALEMODE_NONE} or {@link SCALEMODE_BLEND}. See
* the description of referenceResolution for more information.
*
* @type {string}
*/
set scaleMode(value: string);
/**
* Gets the scale mode.
*
* @type {string}
*/
get scaleMode(): string;
/**
* Sets the scale blend. This is a value between 0 and 1 that is used when scaleMode is equal
* to {@link SCALEMODE_BLEND}. Scales the ScreenComponent with width as a reference (when value
* is 0), the height as a reference (when value is 1) or anything in between.
*
* @type {number}
*/
set scaleBlend(value: number);
/**
* Gets the scale blend.
*
* @type {number}
*/
get scaleBlend(): number;
/**
* Sets the priority. Priority determines the order in which Screen components in the same
* layer are rendered. Number must be an integer between 0 and 255. Priority is set into the
* top 8 bits of the drawOrder property in an element.
*
* @type {number}
*/
set priority(value: number);
/**
* Gets the priority.
*
* @type {number}
*/
get priority(): number;
}
import { Component } from '../component.js';
import { Vec2 } from '../../../core/math/vec2.js';
import { Mat4 } from '../../../core/math/mat4.js';
import type { ScreenComponentSystem } from './system.js';
import { Entity } from '../../entity.js';