import { NamedAssetBase } from "../../library/assets/NamedAssetBase"; import { Vector3D, Matrix3D, IAssetAdapter } from "@awayjs/core"; import { DisplayObject } from "@awayjs/scene"; /** * Dispatched when the position of the 3d object changes. * * @eventType away3d.events.Object3DEvent [Event(name="positionChanged", type="away3d.events.Object3DEvent")] * Dispatched when the scale of the 3d object changes. * * @eventType away3d.events.Object3DEvent [Event(name="scaleChanged", type="away3d.events.Object3DEvent")] * Dispatched when the rotation of the 3d object changes. * * @eventType away3d.events.Object3DEvent [Event(name="rotationChanged", type="away3d.events.Object3DEvent")] * Object3D provides a base class for any 3D object that has a (local) transformation.

* * Standard Transform: * * * To affect Scale: * * * To affect Pivot: * * * To affect Rotate: * * * To affect Translate (post-rotate translate): * * */ export declare class Object3D extends NamedAssetBase implements IAssetAdapter { /** * An object that can contain any extra data. */ extra: any; /** * Defines the x coordinate of the 3d object relative to the local coordinates of the parent ObjectContainer3D. */ x: number; /** * Defines the y coordinate of the 3d object relative to the local coordinates of the parent ObjectContainer3D. */ y: number; /** * Defines the z coordinate of the 3d object relative to the local coordinates of the parent ObjectContainer3D. */ z: number; /** * Defines the euler angle of rotation of the 3d object around the x-axis, relative to the local coordinates of the parent ObjectContainer3D. */ rotationX: number; /** * Defines the euler angle of rotation of the 3d object around the y-axis, relative to the local coordinates of the parent ObjectContainer3D. */ rotationY: number; /** * Defines the euler angle of rotation of the 3d object around the z-axis, relative to the local coordinates of the parent ObjectContainer3D. */ rotationZ: number; /** * Defines the scale of the 3d object along the x-axis, relative to local coordinates. */ scaleX: number; /** * Defines the scale of the 3d object along the y-axis, relative to local coordinates. */ scaleY: number; /** * Defines the scale of the 3d object along the z-axis, relative to local coordinates. */ scaleZ: number; /** * Defines the rotation of the 3d object as a Vector3D object containing euler angles for rotation around x, y and z axis. */ eulers: Vector3D; /** * The transformation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D. */ transform: Matrix3D; /** * Defines the local point around which the object rotates. */ pivotPoint: Vector3D; /** * Defines the position of the 3d object, relative to the local coordinates of the parent ObjectContainer3D. */ position: Vector3D; /** * Defines the position of the 3d object, relative to the local coordinates of the parent ObjectContainer3D. * @param v the destination Vector3D * @return */ getPosition(v?: Vector3D): Vector3D; /** * */ readonly forwardVector: Vector3D; /** * */ readonly rightVector: Vector3D; /** * */ readonly upVector: Vector3D; /** * */ readonly backVector: Vector3D; /** * */ readonly leftVector: Vector3D; /** * */ readonly downVector: Vector3D; /** * Creates an Object3D object. */ constructor(adaptee?: DisplayObject); /** * Appends a uniform scale to the current transformation. * @param value The amount by which to scale. */ scale(value: number): void; /** * Moves the 3d object forwards along it's local z axis * * @param distance The length of the movement */ moveForward(distance: number): void; /** * Moves the 3d object backwards along it's local z axis * * @param distance The length of the movement */ moveBackward(distance: number): void; /** * Moves the 3d object backwards along it's local x axis * * @param distance The length of the movement */ moveLeft(distance: number): void; /** * Moves the 3d object forwards along it's local x axis * * @param distance The length of the movement */ moveRight(distance: number): void; /** * Moves the 3d object forwards along it's local y axis * * @param distance The length of the movement */ moveUp(distance: number): void; /** * Moves the 3d object backwards along it's local y axis * * @param distance The length of the movement */ moveDown(distance: number): void; /** * Moves the 3d object directly to a point in space * * @param dx The amount of movement along the local x axis. * @param dy The amount of movement along the local y axis. * @param dz The amount of movement along the local z axis. */ moveTo(dx: number, dy: number, dz: number): void; /** * Moves the local point around which the object rotates. * * @param dx The amount of movement along the local x axis. * @param dy The amount of movement along the local y axis. * @param dz The amount of movement along the local z axis. */ movePivot(dx: number, dy: number, dz: number): void; /** * Moves the 3d object along a vector by a defined length * * @param axis The vector defining the axis of movement * @param distance The length of the movement */ translate(axis: Vector3D, distance: number): void; /** * Moves the 3d object along a vector by a defined length * * @param axis The vector defining the axis of movement * @param distance The length of the movement */ translateLocal(axis: Vector3D, distance: number): void; /** * Rotates the 3d object around it's local x-axis * * @param angle The amount of rotation in degrees */ pitch(angle: number): void; /** * Rotates the 3d object around it's local y-axis * * @param angle The amount of rotation in degrees */ yaw(angle: number): void; /** * Rotates the 3d object around it's local z-axis * * @param angle The amount of rotation in degrees */ roll(angle: number): void; clone(): Object3D; /** * Rotates the 3d object directly to a euler angle * * @param ax The angle in degrees of the rotation around the x axis. * @param ay The angle in degrees of the rotation around the y axis. * @param az The angle in degrees of the rotation around the z axis. */ rotateTo(ax: number, ay: number, az: number): void; /** * Rotates the 3d object around an axis by a defined angle * * @param axis The vector defining the axis of rotation * @param angle The amount of rotation in degrees */ rotate(axis: Vector3D, angle: number): void; /** * Rotates the 3d object around to face a point defined relative to the local coordinates of the parent ObjectContainer3D. * * @param target The vector defining the point to be looked at * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred */ lookAt(target: Vector3D, upAxis?: Vector3D): void; /** * @inheritDoc */ disposeAsset(): void; zOffset: number; }