1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import XrFrame from 'XrFrame';
- const xrFrameSystem = wx.getXrFrameSystem();
- interface IXrTeamCameraAnimtionData {
- targets: {
- hikari: XrFrame.Vector3;
- roam: XrFrame.Vector3;
- xinyi: XrFrame.Vector3;
- final: XrFrame.Vector3;
- [key: string]: XrFrame.Vector3;
- },
- startY: number;
- finalY: number;
- }
- interface IXrTeamCameraAnimationOptions {
- }
- export default class XrTeamCameraAnimation extends xrFrameSystem.Animation<
- IXrTeamCameraAnimtionData,
- IXrTeamCameraAnimationOptions
- > {
- private _camera: XrFrame.Transform | undefined;
- private _target: XrFrame.Transform | undefined;
- private _targets: IXrTeamCameraAnimtionData['targets'] | undefined;
- private _startY: number | undefined;
- private _finalY: number | undefined;
- private _startC: XrFrame.Vector3 = new xrFrameSystem.Vector3();
- private _endC: XrFrame.Vector3 = new xrFrameSystem.Vector3();
- private _startT: XrFrame.Vector3 = new xrFrameSystem.Vector3();
- private _endT: XrFrame.Vector3 = new xrFrameSystem.Vector3();
- public onInit(data: IXrTeamCameraAnimtionData) {
- console.log('anim data', data);
- this._targets = data.targets;
- this._startY = data.startY;
- this._finalY = data.finalY;
- this.clipNames = [
- 'hikari',
- 'roam',
- 'xinyi',
- 'final'
- ];
- }
- public onPlay(el: XrFrame.Element, clipName: string, options: IXrTeamCameraAnimationOptions): {
- duration: number,
- loop?: number,
- delay?: number,
- direction?: XrFrame.TDirection
- } {
- const isFinal = clipName === 'final';
- this._camera = this._camera || el.getComponent(xrFrameSystem.Transform);
- this._target = el.getComponent(xrFrameSystem.Camera).target;
- this._startT.set(this._target.position);
- this._endT.setValue(this._targets![clipName].x, isFinal ? this._finalY! : this._startY!, this._targets![clipName].z);
- this._startC.set(this._camera.position);
- this._endC.set(this._endT);
- this._endC.z += isFinal ? 3 : 1;
- return {duration: isFinal ? 4 : 2};
- }
- /**
- * @param progress 0~1
- */
- public onUpdate(el: XrFrame.Element, progress: number, reverse: boolean) {
- progress = xrFrameSystem.noneParamsEaseFuncs['ease-in-out'](progress);
- this._startT?.lerp(this._endT, progress, this._target?.position);
- this._startC?.lerp(this._endC, progress, this._camera?.position);
- }
- public onPause(el: XrFrame.Element) {
- }
- public onResume(el: XrFrame.Element) {
- }
- public onStop(el: XrFrame.Element) {
- }
- }
|