@awayjs/scene
Version:
AwayJS scene classes
149 lines • 5.56 kB
TypeScript
import { PickingCollision, PickEntity, _Pick_PickableBase, IEntity } from '@awayjs/view';
import { RenderableEvent, IMaterial, StyleEvent } from '@awayjs/renderer';
import { Rectangle, Matrix3D, Box, Vector3D, Sphere } from '@awayjs/core';
import { ImageSampler, Image2D } from '@awayjs/stage';
import { DisplayObjectContainer } from './DisplayObjectContainer';
/**
* The Billboard class represents display objects that represent bitmap images.
* These can be images that you load with the <code>flash.Assets</code> or
* <code>flash.display.Loader</code> classes, or they can be images that you
* create with the <code>Billboard()</code> constructor.
*
* <p>The <code>Billboard()</code> constructor allows you to create a Billboard
* object that contains a reference to a Image2D object. After you create a
* Billboard object, use the <code>addChild()</code> or <code>addChildAt()</code>
* method of the parent DisplayObjectContainer instance to place the bitmap on
* the display list.</p>
*
* <p>A Billboard object can share its Image2D reference among several Billboard
* objects, independent of translation or rotation properties. Because you can
* create multiple Billboard objects that reference the same Image2D object,
* multiple display objects can use the same complex Image2D object without
* incurring the memory overhead of a Image2D object for each display
* object instance.</p>
*
* <p>A Image2D object can be drawn to the screen by a Billboard object in one
* of two ways: by using the default hardware renderer with a single hardware surface,
* or by using the slower software renderer when 3D acceleration is not available.</p>
*
* <p>If you would prefer to perform a batch rendering command, rather than using a
* single surface for each Billboard object, you can also draw to the screen using the
* <code>drawTiles()</code> or <code>drawTriangles()</code> methods which are
* available to <code>flash.display.Tilesheet</code> and <code>flash.display.Graphics
* objects.</code></p>
*
* <p><b>Note:</b> The Billboard class is not a subclass of the InteractiveObject
* class, so it cannot dispatch mouse events. However, you can use the
* <code>addEventListener()</code> method of the display object container that
* contains the Billboard object.</p>
*/
/**
* @todo billboard needed to extend on DisplayObjectContainer in order
* for as3web/away3d adapters to compile without errors
* (in away3d Sprite3D extends on ObjectContainer3D)
*/
export declare class Billboard extends DisplayObjectContainer {
private static _billboards;
static assetType: string;
private _width;
private _height;
private _billboardWidth;
private _billboardHeight;
private _billboardRect;
private _sampler;
private _onInvalidateTextureDelegate;
static getNewBillboard(material: IMaterial, pixelSnapping?: string, smoothing?: boolean): Billboard;
preserveDimensions: boolean;
/**
*
*/
get assetType(): string;
/**
*
*/
get billboardRect(): Rectangle;
/**
*
*/
get billboardHeight(): number;
/**
*
*/
get billboardWidth(): number;
/**
*
*/
get material(): IMaterial;
set material(value: IMaterial);
get sampler(): ImageSampler;
/**
*
*/
get width(): number;
set width(val: number);
/**
*
*/
get height(): number;
set height(val: number);
constructor(material: IMaterial, _pixelSnapping?: string, smoothing?: boolean);
advanceFrame(): void;
getEntity(): IEntity;
/**
* @inheritDoc
*/
dispose(): void;
clone(): Billboard;
_acceptTraverser(traverser: IEntityTraverser): void;
get image(): Image2D;
private _updateDimensions;
protected _onInvalidateProperties(event?: StyleEvent): void;
/**
* @private
*/
private _onInvalidateTexture;
}
import { AssetEvent } from '@awayjs/core';
import { _Stage_ElementsBase, _Render_MaterialBase, _Render_RenderableBase, Style } from '@awayjs/renderer';
import { IEntityTraverser } from '@awayjs/view';
/**
* @class away.pool.RenderableListItem
*/
export declare class _Render_Billboard extends _Render_RenderableBase {
private static _samplerElements;
_id: string;
/**
* //TODO
*
* @returns {away.base.TriangleElements}
*/
protected _getStageElements(): _Stage_ElementsBase;
executeRender(enableDepthAndStencil?: boolean, surfaceSelector?: number, mipmapSelector?: number, maskConfig?: number): void;
protected _getRenderMaterial(): _Render_MaterialBase;
protected _getStyle(): Style;
}
/**
* @class away.pool._Render_Shape
*/
export declare class _Pick_Billboard extends _Pick_PickableBase {
private _billboardBox;
private _billboardBoxDirty;
private _onInvalidateElementsDelegate;
constructor();
/**
* //TODO
*
* @param renderEntity
* @param shape
* @param level
* @param indexOffset
*/
init(billboard: Billboard, pickEntity: PickEntity): void;
_onInvalidateElements(event: RenderableEvent): void;
onClear(event: AssetEvent): void;
hitTestPoint(x: number, y: number, z: number): boolean;
getBoxBounds(matrix3D?: Matrix3D, strokeFlag?: boolean, cache?: Box, target?: Box): Box;
getSphereBounds(center: Vector3D, matrix3D?: Matrix3D, strokeFlag?: boolean, cache?: Sphere, target?: Sphere): Sphere;
testCollision(collision: PickingCollision, closestFlag: boolean): boolean;
}
//# sourceMappingURL=Billboard.d.ts.map