feat: camera scaling
This commit is contained in:
parent
bcd5b36e77
commit
484a4ae7ea
|
@ -23,6 +23,7 @@ const Component = PixiComponent('RoomView', {
|
|||
const [roomView] = container.children;
|
||||
if (roomView) {
|
||||
[roomView.x, roomView.y] = Vector.scale(newProps.offset, -1);
|
||||
[roomView.scaleX, roomView.scaleY] = newProps.scale;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -39,6 +40,7 @@ const RoomViewComponent = () => {
|
|||
}, [app]);
|
||||
const selfEntity = useSelfEntity();
|
||||
const [offset, setOffset] = useState([0, 0]);
|
||||
const [scale, setScale] = useState([1, 1]);
|
||||
const room = useRoom();
|
||||
useEffect(() => {
|
||||
if (!room || !selfEntity) {
|
||||
|
@ -48,12 +50,18 @@ const RoomViewComponent = () => {
|
|||
const onCameraRealOffsetChanged = () => {
|
||||
setOffset(selfEntity.camera.realOffset);
|
||||
};
|
||||
const onCameraScaleChanged = () => {
|
||||
setScale(selfEntity.camera.scale);
|
||||
};
|
||||
onCameraRealOffsetChanged();
|
||||
onCameraScaleChanged();
|
||||
selfEntity.camera.on('realOffsetChanged', onCameraRealOffsetChanged);
|
||||
selfEntity.camera.on('scaleChanged', onCameraScaleChanged);
|
||||
return () => {
|
||||
const {camera} = selfEntity || {};
|
||||
if (camera) {
|
||||
camera.off('realOffsetChanged', onCameraRealOffsetChanged);
|
||||
camera.off('scaleChanged', onCameraScaleChanged);
|
||||
}
|
||||
};
|
||||
}, [room, selfEntity]);
|
||||
|
@ -69,7 +77,7 @@ const RoomViewComponent = () => {
|
|||
destroyLoop(handle);
|
||||
};
|
||||
}, [room]);
|
||||
return <Component renderer={renderer} room={room} offset={offset} />;
|
||||
return <Component renderer={renderer} room={room} offset={offset} scale={scale} />;
|
||||
};
|
||||
|
||||
export default RoomViewComponent;
|
||||
|
|
Loading…
Reference in New Issue
Block a user