change setViewport action to set for CameraAPI
This commit is contained in:
parent
17e9c3c586
commit
7ee41bad30
@ -1,6 +1,6 @@
|
|||||||
import * as tg from "generic-type-guard";
|
import * as tg from "generic-type-guard";
|
||||||
|
|
||||||
export const isCameraSetViewportEvent = new tg.IsInterface()
|
export const isCameraSetEvent = new tg.IsInterface()
|
||||||
.withProperties({
|
.withProperties({
|
||||||
x: tg.isNumber,
|
x: tg.isNumber,
|
||||||
y: tg.isNumber,
|
y: tg.isNumber,
|
||||||
@ -13,4 +13,4 @@ export const isCameraSetViewportEvent = new tg.IsInterface()
|
|||||||
/**
|
/**
|
||||||
* A message sent from the iFrame to the game to change the camera position.
|
* A message sent from the iFrame to the game to change the camera position.
|
||||||
*/
|
*/
|
||||||
export type CameraSetViewportEvent = tg.GuardedType<typeof isCameraSetViewportEvent>;
|
export type CameraSetEvent = tg.GuardedType<typeof isCameraSetEvent>;
|
@ -31,7 +31,7 @@ import type { ChangeLayerEvent } from "./ChangeLayerEvent";
|
|||||||
import { isPlayerPosition } from "./PlayerPosition";
|
import { isPlayerPosition } from "./PlayerPosition";
|
||||||
import type { WasCameraUpdatedEvent } from "./WasCameraUpdatedEvent";
|
import type { WasCameraUpdatedEvent } from "./WasCameraUpdatedEvent";
|
||||||
import type { ChangeZoneEvent } from "./ChangeZoneEvent";
|
import type { ChangeZoneEvent } from "./ChangeZoneEvent";
|
||||||
import type { CameraSetViewportEvent } from "./CameraSetViewportEvent";
|
import type { CameraSetEvent } from "./CameraSetEvent";
|
||||||
import type { CameraFollowPlayerEvent } from "./CameraFollowPlayerEvent";
|
import type { CameraFollowPlayerEvent } from "./CameraFollowPlayerEvent";
|
||||||
import { isColorEvent } from "./ColorEvent";
|
import { isColorEvent } from "./ColorEvent";
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ export type IframeEventMap = {
|
|||||||
loadPage: LoadPageEvent;
|
loadPage: LoadPageEvent;
|
||||||
chat: ChatEvent;
|
chat: ChatEvent;
|
||||||
cameraFollowPlayer: CameraFollowPlayerEvent;
|
cameraFollowPlayer: CameraFollowPlayerEvent;
|
||||||
cameraSetViewport: CameraSetViewportEvent;
|
cameraSet: CameraSetEvent;
|
||||||
openPopup: OpenPopupEvent;
|
openPopup: OpenPopupEvent;
|
||||||
closePopup: ClosePopupEvent;
|
closePopup: ClosePopupEvent;
|
||||||
openTab: OpenTabEvent;
|
openTab: OpenTabEvent;
|
||||||
|
@ -33,7 +33,7 @@ import { handleMenuRegistrationEvent, handleMenuUnregisterEvent } from "../Store
|
|||||||
import type { ChangeLayerEvent } from "./Events/ChangeLayerEvent";
|
import type { ChangeLayerEvent } from "./Events/ChangeLayerEvent";
|
||||||
import type { WasCameraUpdatedEvent } from "./Events/WasCameraUpdatedEvent";
|
import type { WasCameraUpdatedEvent } from "./Events/WasCameraUpdatedEvent";
|
||||||
import type { ChangeZoneEvent } from "./Events/ChangeZoneEvent";
|
import type { ChangeZoneEvent } from "./Events/ChangeZoneEvent";
|
||||||
import { CameraSetViewportEvent, isCameraSetViewportEvent } from "./Events/CameraSetViewportEvent";
|
import { CameraSetEvent, isCameraSetEvent } from "./Events/CameraSetEvent";
|
||||||
import { CameraFollowPlayerEvent, isCameraFollowPlayerEvent } from "./Events/CameraFollowPlayerEvent";
|
import { CameraFollowPlayerEvent, isCameraFollowPlayerEvent } from "./Events/CameraFollowPlayerEvent";
|
||||||
|
|
||||||
type AnswererCallback<T extends keyof IframeQueryMap> = (
|
type AnswererCallback<T extends keyof IframeQueryMap> = (
|
||||||
@ -58,8 +58,8 @@ class IframeListener {
|
|||||||
private readonly _disablePlayerControlStream: Subject<void> = new Subject();
|
private readonly _disablePlayerControlStream: Subject<void> = new Subject();
|
||||||
public readonly disablePlayerControlStream = this._disablePlayerControlStream.asObservable();
|
public readonly disablePlayerControlStream = this._disablePlayerControlStream.asObservable();
|
||||||
|
|
||||||
private readonly _cameraSetViewportStream: Subject<CameraSetViewportEvent> = new Subject();
|
private readonly _cameraSetStream: Subject<CameraSetEvent> = new Subject();
|
||||||
public readonly cameraSetViewportStream = this._cameraSetViewportStream.asObservable();
|
public readonly cameraSetStream = this._cameraSetStream.asObservable();
|
||||||
|
|
||||||
private readonly _cameraFollowPlayerStream: Subject<CameraFollowPlayerEvent> = new Subject();
|
private readonly _cameraFollowPlayerStream: Subject<CameraFollowPlayerEvent> = new Subject();
|
||||||
public readonly cameraFollowPlayerStream = this._cameraFollowPlayerStream.asObservable();
|
public readonly cameraFollowPlayerStream = this._cameraFollowPlayerStream.asObservable();
|
||||||
@ -210,8 +210,8 @@ class IframeListener {
|
|||||||
this._hideLayerStream.next(payload.data);
|
this._hideLayerStream.next(payload.data);
|
||||||
} else if (payload.type === "setProperty" && isSetPropertyEvent(payload.data)) {
|
} else if (payload.type === "setProperty" && isSetPropertyEvent(payload.data)) {
|
||||||
this._setPropertyStream.next(payload.data);
|
this._setPropertyStream.next(payload.data);
|
||||||
} else if (payload.type === "cameraSetViewport" && isCameraSetViewportEvent(payload.data)) {
|
} else if (payload.type === "cameraSet" && isCameraSetEvent(payload.data)) {
|
||||||
this._cameraSetViewportStream.next(payload.data);
|
this._cameraSetStream.next(payload.data);
|
||||||
} else if (payload.type === "cameraFollowPlayer" && isCameraFollowPlayerEvent(payload.data)) {
|
} else if (payload.type === "cameraFollowPlayer" && isCameraFollowPlayerEvent(payload.data)) {
|
||||||
this._cameraFollowPlayerStream.next(payload.data);
|
this._cameraFollowPlayerStream.next(payload.data);
|
||||||
} else if (payload.type === "chat" && isChatEvent(payload.data)) {
|
} else if (payload.type === "chat" && isChatEvent(payload.data)) {
|
||||||
|
@ -17,7 +17,7 @@ export class WorkAdventureCameraCommands extends IframeApiContribution<WorkAdven
|
|||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
public setViewport(
|
public set(
|
||||||
x: number,
|
x: number,
|
||||||
y: number,
|
y: number,
|
||||||
width?: number,
|
width?: number,
|
||||||
@ -26,7 +26,7 @@ export class WorkAdventureCameraCommands extends IframeApiContribution<WorkAdven
|
|||||||
smooth: boolean = false
|
smooth: boolean = false
|
||||||
): void {
|
): void {
|
||||||
sendToWorkadventure({
|
sendToWorkadventure({
|
||||||
type: "cameraSetViewport",
|
type: "cameraSet",
|
||||||
data: { x, y, width, height, lock, smooth },
|
data: { x, y, width, height, lock, smooth },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -140,6 +140,10 @@ export class CameraManager extends Phaser.Events.EventEmitter {
|
|||||||
}
|
}
|
||||||
this.camera.pan(focusOn.x, focusOn.y, duration, Easing.SineEaseOut, true, (camera, progress, x, y) => {
|
this.camera.pan(focusOn.x, focusOn.y, duration, Easing.SineEaseOut, true, (camera, progress, x, y) => {
|
||||||
this.waScaleManager.zoomModifier = currentZoomModifier + progress * zoomModifierChange;
|
this.waScaleManager.zoomModifier = currentZoomModifier + progress * zoomModifierChange;
|
||||||
|
if (progress === 1) {
|
||||||
|
// NOTE: Making sure the last action will be centering after zoom change
|
||||||
|
this.camera.centerOn(focusOn.x, focusOn.y);
|
||||||
|
}
|
||||||
this.emit(CameraManagerEvent.CameraUpdate, this.getCameraUpdateEventData());
|
this.emit(CameraManagerEvent.CameraUpdate, this.getCameraUpdateEventData());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1125,11 +1125,11 @@ ${escapedMessage}
|
|||||||
);
|
);
|
||||||
|
|
||||||
this.iframeSubscriptionList.push(
|
this.iframeSubscriptionList.push(
|
||||||
iframeListener.cameraSetViewportStream.subscribe((cameraSetViewportEvent) => {
|
iframeListener.cameraSetStream.subscribe((cameraSetEvent) => {
|
||||||
const duration = cameraSetViewportEvent.smooth ? 1000 : 0;
|
const duration = cameraSetEvent.smooth ? 1000 : 0;
|
||||||
cameraSetViewportEvent.lock
|
cameraSetEvent.lock
|
||||||
? this.cameraManager.enterFocusMode({ ...cameraSetViewportEvent }, undefined, duration)
|
? this.cameraManager.enterFocusMode({ ...cameraSetEvent }, undefined, duration)
|
||||||
: this.cameraManager.setPosition({ ...cameraSetViewportEvent }, duration);
|
: this.cameraManager.setPosition({ ...cameraSetEvent }, duration);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
WA.camera.onCameraUpdate((worldView) => console.log(worldView));
|
WA.camera.onCameraUpdate((worldView) => console.log(worldView));
|
||||||
WA.onInit().then(() => {
|
WA.onInit().then(() => {
|
||||||
console.log('After WA init');
|
console.log('After WA init');
|
||||||
const setViewportButton = document.getElementById('setViewportButton');
|
const setCameraButton = document.getElementById('setCameraButton');
|
||||||
const followPlayerButton = document.getElementById('followPlayerButton');
|
const followPlayerButton = document.getElementById('followPlayerButton');
|
||||||
const xField = document.getElementById('x');
|
const xField = document.getElementById('x');
|
||||||
const yField = document.getElementById('y');
|
const yField = document.getElementById('y');
|
||||||
@ -17,8 +17,8 @@
|
|||||||
const smoothField = document.getElementById('smooth');
|
const smoothField = document.getElementById('smooth');
|
||||||
const lockField = document.getElementById('lock');
|
const lockField = document.getElementById('lock');
|
||||||
|
|
||||||
setViewportButton.addEventListener('click', () => {
|
setCameraButton.addEventListener('click', () => {
|
||||||
WA.camera.setViewport(
|
WA.camera.set(
|
||||||
parseInt(xField.value),
|
parseInt(xField.value),
|
||||||
parseInt(yField.value),
|
parseInt(yField.value),
|
||||||
widthField.value ? parseInt(widthField.value) : undefined,
|
widthField.value ? parseInt(widthField.value) : undefined,
|
||||||
@ -43,7 +43,7 @@ height: <input type="text" id="height" value="286" /><br/>
|
|||||||
Smooth: <input type="checkbox" id="smooth" value=1 /><br/>
|
Smooth: <input type="checkbox" id="smooth" value=1 /><br/>
|
||||||
Lock: <input type="checkbox" id="lock" value=1 /><br/>
|
Lock: <input type="checkbox" id="lock" value=1 /><br/>
|
||||||
|
|
||||||
<button id="setViewportButton">Set Viewport</button>
|
<button id="setCameraButton">Set Camera</button>
|
||||||
<button id="followPlayerButton">Follow Player</button>
|
<button id="followPlayerButton">Follow Player</button>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
Reference in New Issue
Block a user