import {MathConsts, Vector3D} from "@awayjs/core"; import {HoverController as AwayHoverController, DisplayObject} from "@awayjs/scene"; import {LookAtController} from "./LookAtController"; import {Object3D} from "../core/base/Object3D"; /** * Extended camera used to hover round a specified target object. * * @see away.containers.View */ export class HoverController extends LookAtController { static assetType:string = "[controller HoverController]"; public get assetType():string { return HoverController.assetType; } /** * Fractional step taken each time the hover() method is called. Defaults to 8. * * Affects the speed at which the tiltAngle and panAngle resolve to their targets. * * @see #tiltAngle * @see #panAngle */ public get steps():number { return ( this._adaptee).steps; } public set steps(val:number) { ( this._adaptee).steps = val; } /** * Rotation of the camera in degrees around the y axis. Defaults to 0. */ public get panAngle():number { return ( this._adaptee).panAngle; } public set panAngle(val:number) { ( this._adaptee).panAngle = val; } /** * Elevation angle of the camera in degrees. Defaults to 90. */ public get tiltAngle():number { return ( this._adaptee).tiltAngle; } public set tiltAngle(val:number) { ( this._adaptee).tiltAngle = val; } /** * Distance between the camera and the specified target. Defaults to 1000. */ public get distance():number { return ( this._adaptee).distance; } public set distance(val:number) { ( this._adaptee).distance = val; } /** * Minimum bounds for the panAngle. Defaults to -Infinity. * * @see #panAngle */ public get minPanAngle():number { return ( this._adaptee).minPanAngle; } public set minPanAngle(val:number) { ( this._adaptee).minPanAngle = val; } /** * Maximum bounds for the panAngle. Defaults to Infinity. * * @see #panAngle */ public get maxPanAngle():number { return ( this._adaptee).maxPanAngle; } public set maxPanAngle(val:number) { ( this._adaptee).maxPanAngle = val; } /** * Minimum bounds for the tiltAngle. Defaults to -90. * * @see #tiltAngle */ public get minTiltAngle():number { return ( this._adaptee).minTiltAngle; } public set minTiltAngle(val:number) { ( this._adaptee).minTiltAngle = val; } /** * Maximum bounds for the tiltAngle. Defaults to 90. * * @see #tiltAngle */ public get maxTiltAngle():number { return ( this._adaptee).maxTiltAngle; } public set maxTiltAngle(val:number) { ( this._adaptee).maxTiltAngle = val; } /** * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2. * * @see #distance */ public get yFactor():number { return ( this._adaptee).yFactor; } public set yFactor(val:number) { ( this._adaptee).yFactor = val; } /** * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false. */ public get wrapPanAngle():boolean { return ( this._adaptee).wrapPanAngle; } public set wrapPanAngle(val:boolean) { ( this._adaptee).wrapPanAngle = val; } /** * Creates a new HoverController object. */ constructor(targetObject: Object3D = null, lookAtObject: Object3D = null, panAngle: number = 0, tiltAngle: number = 90, distance: number = 1000, minTiltAngle: number = -90, maxTiltAngle: number = 90, minPanAngle: number = null, maxPanAngle: number = null, steps: number = 8, yFactor: number = 2, wrapPanAngle: boolean = false) { super(targetObject, lookAtObject); if (this.assetType == HoverController.assetType) this._adaptee = new AwayHoverController((targetObject)? targetObject.adaptee:null, (lookAtObject)? lookAtObject.adaptee:null, panAngle, tiltAngle, distance, minTiltAngle, maxTiltAngle, minPanAngle, maxPanAngle, steps, yFactor, wrapPanAngle); } }