2021-11-23 16:51:39 +01:00
|
|
|
import { IframeApiContribution, sendToWorkadventure } from "./IframeApiContribution";
|
|
|
|
import { Subject } from "rxjs";
|
2021-12-30 15:50:52 +01:00
|
|
|
import type { WasCameraUpdatedEvent } from "../Events/WasCameraUpdatedEvent";
|
2021-11-23 16:51:39 +01:00
|
|
|
import { apiCallback } from "./registeredCallbacks";
|
2021-11-23 17:39:45 +01:00
|
|
|
import { isWasCameraUpdatedEvent } from "../Events/WasCameraUpdatedEvent";
|
2021-11-23 16:51:39 +01:00
|
|
|
|
2021-11-23 17:39:45 +01:00
|
|
|
const moveStream = new Subject<WasCameraUpdatedEvent>();
|
2021-11-23 16:51:39 +01:00
|
|
|
|
|
|
|
export class WorkAdventureCameraCommands extends IframeApiContribution<WorkAdventureCameraCommands> {
|
|
|
|
callbacks = [
|
|
|
|
apiCallback({
|
2021-11-23 17:39:45 +01:00
|
|
|
type: "wasCameraUpdated",
|
|
|
|
typeChecker: isWasCameraUpdatedEvent,
|
2021-11-23 16:51:39 +01:00
|
|
|
callback: (payloadData) => {
|
|
|
|
moveStream.next(payloadData);
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
];
|
|
|
|
|
2022-01-14 11:41:37 +01:00
|
|
|
public set(
|
2022-01-13 16:08:16 +01:00
|
|
|
x: number,
|
|
|
|
y: number,
|
2022-01-13 16:43:58 +01:00
|
|
|
width?: number,
|
|
|
|
height?: number,
|
2022-01-13 16:08:16 +01:00
|
|
|
lock: boolean = false,
|
|
|
|
smooth: boolean = false
|
|
|
|
): void {
|
2021-12-16 13:41:28 +01:00
|
|
|
sendToWorkadventure({
|
2022-01-14 11:41:37 +01:00
|
|
|
type: "cameraSet",
|
2022-01-13 16:08:16 +01:00
|
|
|
data: { x, y, width, height, lock, smooth },
|
2021-12-16 13:41:28 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public followPlayer(smooth: boolean = false): void {
|
|
|
|
sendToWorkadventure({
|
|
|
|
type: "cameraFollowPlayer",
|
|
|
|
data: { smooth },
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2021-12-30 15:50:52 +01:00
|
|
|
onCameraUpdate(): Subject<WasCameraUpdatedEvent> {
|
2021-11-23 16:51:39 +01:00
|
|
|
sendToWorkadventure({
|
2021-11-23 17:39:45 +01:00
|
|
|
type: "onCameraUpdate",
|
2021-11-23 16:51:39 +01:00
|
|
|
data: null,
|
|
|
|
});
|
2021-12-30 15:50:52 +01:00
|
|
|
return moveStream;
|
2021-11-23 16:51:39 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default new WorkAdventureCameraCommands();
|