refactor: tidy

This commit is contained in:
cha0s 2021-03-26 09:30:56 -05:00
parent b243522f4b
commit db223e6d23

View File

@ -11,51 +11,55 @@ import {createLoop, destroyLoop} from '@avocado/timing';
import {RoomView} from '@avocado/topdown';
import {useRoom, useSelfEntity} from '@humus/core';
const renderer = new Renderer();
const ticker = () => {};
const RoomStage = () => {
const selfEntity = useSelfEntity();
const [container] = useState(new Container());
const [VIEWPORT] = useState([320, 180]);
const halfViewport = Vector.scale(VIEWPORT, 0.5);
const [renderer] = useState(new Renderer(VIEWPORT));
const [viewport] = useState([320, 180]);
const room = useRoom();
useEffect(() => {
container.removeAllChildren();
if (renderer && room) {
const roomView = new RoomView(room, renderer);
container.addChild(roomView);
[container.x, container.y] = halfViewport;
}
}, [container, halfViewport, renderer, room]);
[container.x, container.y] = Vector.scale(viewport, 0.5);
}, [container, viewport]);
useEffect(() => {
if (!room || !selfEntity) {
if (!room) {
return undefined;
}
selfEntity.camera.realPosition = selfEntity.camera.position;
const roomView = new RoomView(room, renderer);
container.addChild(roomView);
return () => {
container.removeChild(roomView);
};
}, [container, room]);
useEffect(() => {
if (!room || !selfEntity || !selfEntity.camera) {
return undefined;
}
const {camera} = selfEntity;
const halfViewport = Vector.scale(viewport, 0.5);
camera.realPosition = camera.position;
const onCameraRealOffsetChanged = () => {
container.pivot = Vector.sub(halfViewport, Vector.scale(selfEntity.camera.realOffset, -1));
container.pivot = Vector.sub(halfViewport, Vector.scale(camera.realOffset, -1));
};
const onCameraRotationChanged = () => {
container.rotation = selfEntity.camera.rotation;
container.rotation = camera.rotation;
};
const onCameraScaleChanged = () => {
[container.scaleX, container.scaleY] = selfEntity.camera.scale;
[container.scaleX, container.scaleY] = camera.scale;
};
onCameraRealOffsetChanged();
onCameraRotationChanged();
onCameraScaleChanged();
selfEntity.camera.on('realOffsetChanged', onCameraRealOffsetChanged);
selfEntity.camera.on('rotationChanged', onCameraRotationChanged);
selfEntity.camera.on('scaleChanged', onCameraScaleChanged);
camera.on('realOffsetChanged', onCameraRealOffsetChanged);
camera.on('rotationChanged', onCameraRotationChanged);
camera.on('scaleChanged', onCameraScaleChanged);
return () => {
const {camera} = selfEntity || {};
if (camera) {
camera.off('realOffsetChanged', onCameraRealOffsetChanged);
camera.off('scaleChanged', onCameraScaleChanged);
}
camera.off('realOffsetChanged', onCameraRealOffsetChanged);
camera.off('rotationChanged', onCameraRotationChanged);
camera.off('scaleChanged', onCameraScaleChanged);
};
}, [container, halfViewport, room, selfEntity]);
}, [container, room, selfEntity, viewport]);
useEffect(() => {
if (!room) {
return undefined;
@ -74,7 +78,7 @@ const RoomStage = () => {
scalable={false}
renderer={renderer}
renderable={container}
size={VIEWPORT}
size={viewport}
ticker={ticker}
/>
);