feat: camera scaling

This commit is contained in:
cha0s 2021-03-14 05:50:30 -05:00
parent bcd5b36e77
commit 484a4ae7ea

View File

@ -23,6 +23,7 @@ const Component = PixiComponent('RoomView', {
const [roomView] = container.children; const [roomView] = container.children;
if (roomView) { if (roomView) {
[roomView.x, roomView.y] = Vector.scale(newProps.offset, -1); [roomView.x, roomView.y] = Vector.scale(newProps.offset, -1);
[roomView.scaleX, roomView.scaleY] = newProps.scale;
} }
}, },
}); });
@ -39,6 +40,7 @@ const RoomViewComponent = () => {
}, [app]); }, [app]);
const selfEntity = useSelfEntity(); const selfEntity = useSelfEntity();
const [offset, setOffset] = useState([0, 0]); const [offset, setOffset] = useState([0, 0]);
const [scale, setScale] = useState([1, 1]);
const room = useRoom(); const room = useRoom();
useEffect(() => { useEffect(() => {
if (!room || !selfEntity) { if (!room || !selfEntity) {
@ -48,12 +50,18 @@ const RoomViewComponent = () => {
const onCameraRealOffsetChanged = () => { const onCameraRealOffsetChanged = () => {
setOffset(selfEntity.camera.realOffset); setOffset(selfEntity.camera.realOffset);
}; };
const onCameraScaleChanged = () => {
setScale(selfEntity.camera.scale);
};
onCameraRealOffsetChanged(); onCameraRealOffsetChanged();
onCameraScaleChanged();
selfEntity.camera.on('realOffsetChanged', onCameraRealOffsetChanged); selfEntity.camera.on('realOffsetChanged', onCameraRealOffsetChanged);
selfEntity.camera.on('scaleChanged', onCameraScaleChanged);
return () => { return () => {
const {camera} = selfEntity || {}; const {camera} = selfEntity || {};
if (camera) { if (camera) {
camera.off('realOffsetChanged', onCameraRealOffsetChanged); camera.off('realOffsetChanged', onCameraRealOffsetChanged);
camera.off('scaleChanged', onCameraScaleChanged);
} }
}; };
}, [room, selfEntity]); }, [room, selfEntity]);
@ -69,7 +77,7 @@ const RoomViewComponent = () => {
destroyLoop(handle); destroyLoop(handle);
}; };
}, [room]); }, [room]);
return <Component renderer={renderer} room={room} offset={offset} />; return <Component renderer={renderer} room={room} offset={offset} scale={scale} />;
}; };
export default RoomViewComponent; export default RoomViewComponent;