@wonderlandengine/api
Version:
Wonderland Engine's JavaScript API.
116 lines (115 loc) • 4.63 kB
TypeScript
import { Component, ComponentConstructor } from './wonderland.js';
import { ComponentProperty } from './property.js';
/**
* Decorator for JS component properties.
*
* @param data The property description as an object literal
* @returns A decorator function modifying the `Properties` static
* attribute
*/
declare function propertyDecorator(data: ComponentProperty): (target: any, propertyKey: string) => void;
/**
* Decorator for making a getter enumerable.
*
* Usage:
*
* ```ts
* class MyClass {
* @enumerable()
* get projectionMatrix(): Float32Array { ... }
* }
* ```
*/
export declare function enumerable(): (_: any, __: string, descriptor: PropertyDescriptor) => void;
/**
* Decorator for native properties.
*
* Usage:
*
* ```ts
* class MyClass {
* @nativeProperty()
* get projectionMatrix(): Float32Array { ... }
* }
* ```
*/
export declare function nativeProperty(): (target: Component, propertyKey: string, descriptor: PropertyDescriptor) => void;
/**
* Property decorators namespace.
*
* You can use the decorators to mark a class attribute as
* a Wonderland Engine property.
*
* Usage:
*
* ```ts
* import {Mesh} from '@wonderlandengine/api';
* import {property} from '@wonderlandengine/api/decorators.js';
*
* class MyComponent extends Component {
* @property.bool(true)
* myBool!: boolean;
*
* @property.int(42)
* myInt!: number;
*
* @property.string('Hello World!')
* myString!: string;
*
* @property.mesh()
* myMesh!: Mesh;
* }
* ```
*
* For JavaScript users, please declare the properties statically.
*/
export declare const property: {
string: (defaultValue?: string | undefined) => ReturnType<typeof propertyDecorator>;
object: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
record: (definition: import("./property.js").PropertyRecord) => ReturnType<typeof propertyDecorator>;
animation: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
color: (r?: number | undefined, g?: number | undefined, b?: number | undefined, a?: number | undefined) => ReturnType<typeof propertyDecorator>;
float: (defaultValue?: number | undefined) => ReturnType<typeof propertyDecorator>;
bool: (defaultValue?: boolean | undefined) => ReturnType<typeof propertyDecorator>;
int: (defaultValue?: number | undefined) => ReturnType<typeof propertyDecorator>;
enum: (values: string[], defaultValue?: string | number | undefined) => ReturnType<typeof propertyDecorator>;
mesh: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
texture: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
material: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
skin: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
particleEffect: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
audioClip: (opts?: import("./property.js").PropertyReferenceOptions | undefined) => ReturnType<typeof propertyDecorator>;
vector2: (x?: number | undefined, y?: number | undefined) => ReturnType<typeof propertyDecorator>;
vector3: (x?: number | undefined, y?: number | undefined, z?: number | undefined) => ReturnType<typeof propertyDecorator>;
vector4: (x?: number | undefined, y?: number | undefined, z?: number | undefined, w?: number | undefined) => ReturnType<typeof propertyDecorator>;
array: (element: ComponentProperty) => ReturnType<typeof propertyDecorator>;
};
/**
* Decorator for {@link Component.UpdateBefore}.
*
* ## Examples
*
* class C extends Component {}
* class B extends Component {}
*
* @updateBefore([B, C])
* class A extends Component {}
*
* @param Classes - List of classes that should be executed **before**.
*/
export declare function updateBefore(Classes: ComponentConstructor[]): (constructor: ComponentConstructor) => void;
/**
* Decorator for {@link Component.UpdateAfter}.
*
* ## Examples
*
* class A extends Component {}
* class B extends Component {}
*
* @updateAfter([A, B])
* class C extends Component {}
*
* @param Classes - List of classes that should be executed **after**.
*/
export declare function updateAfter(Classes: ComponentConstructor[]): (constructor: ComponentConstructor) => void;
export {};