mirror of
https://github.com/duckietm/Nitro-V3.git
synced 2026-06-19 23:16:21 +00:00
fix: polish furniture widgets and area hide toggle
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { FurnitureMultiStateComposer, GetRoomEngine, RoomAreaSelectionManager, RoomEngineAreaHideStateEvent, RoomEngineTriggerWidgetEvent, RoomObjectVariable, SetObjectDataMessageComposer } from '@nitrots/nitro-renderer';
|
||||
import { GetRoomEngine, RoomAreaSelectionManager, RoomEngineAreaHideStateEvent, RoomEngineTriggerWidgetEvent, RoomObjectVariable, SetObjectDataMessageComposer } from '@nitrots/nitro-renderer';
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { CanManipulateFurniture, SendMessageComposer } from '../../../../api';
|
||||
import { useNitroEvent } from '../../../events';
|
||||
@@ -38,9 +38,10 @@ const useFurnitureAreaHideWidgetState = () =>
|
||||
{
|
||||
if(objectId === -1) return;
|
||||
|
||||
const nextState = (isOn ? 0 : 1);
|
||||
const data = new Map<string, string>();
|
||||
|
||||
data.set('state', isOn ? '1' : '0');
|
||||
data.set('state', nextState.toString());
|
||||
data.set('rootX', rootX.toString());
|
||||
data.set('rootY', rootY.toString());
|
||||
data.set('width', width.toString());
|
||||
@@ -50,7 +51,6 @@ const useFurnitureAreaHideWidgetState = () =>
|
||||
data.set('invert', inverted ? '1' : '0');
|
||||
|
||||
SendMessageComposer(new SetObjectDataMessageComposer(objectId, data));
|
||||
SendMessageComposer(new FurnitureMultiStateComposer(objectId, isOn ? 0 : 1));
|
||||
|
||||
onClose();
|
||||
}, [ objectId, isOn, rootX, rootY, width, length, invisibility, wallItems, inverted ]);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ApplyTonerComposer, ColorConverter, GetRoomEngine, RoomEngineTriggerWidgetEvent, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
||||
import { ApplyTonerComposer, GetRoomEngine, RoomEngineTriggerWidgetEvent, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { CanManipulateFurniture, ColorUtils, DispatchUiEvent, RoomWidgetUpdateBackgroundColorPreviewEvent, SendMessageComposer } from '../../../../api';
|
||||
import { CanManipulateFurniture, DispatchUiEvent, RoomWidgetUpdateBackgroundColorPreviewEvent, SendMessageComposer } from '../../../../api';
|
||||
import { useNitroEvent } from '../../../events';
|
||||
import { useFurniRemovedEvent } from '../../engine';
|
||||
import { useRoom } from '../../useRoom';
|
||||
@@ -9,15 +9,12 @@ const useFurnitureBackgroundColorWidgetState = () =>
|
||||
{
|
||||
const [ objectId, setObjectId ] = useState(-1);
|
||||
const [ category, setCategory ] = useState(-1);
|
||||
const [ color, setColor ] = useState(0);
|
||||
const [ hue, setHue ] = useState(0);
|
||||
const [ saturation, setSaturation ] = useState(0);
|
||||
const [ lightness, setLightness ] = useState(0);
|
||||
const { roomSession = null } = useRoom();
|
||||
|
||||
const applyToner = () =>
|
||||
{
|
||||
const hsl = ColorConverter.rgbToHSL(color);
|
||||
const [ _, hue, saturation, lightness ] = ColorUtils.int_to_8BitVals(hsl);
|
||||
SendMessageComposer(new ApplyTonerComposer(objectId, hue, saturation, lightness));
|
||||
};
|
||||
const applyToner = () => SendMessageComposer(new ApplyTonerComposer(objectId, hue, saturation, lightness));
|
||||
|
||||
const toggleToner = () => roomSession.useMultistateItem(objectId);
|
||||
|
||||
@@ -27,7 +24,9 @@ const useFurnitureBackgroundColorWidgetState = () =>
|
||||
|
||||
setObjectId(-1);
|
||||
setCategory(-1);
|
||||
setColor(0);
|
||||
setHue(0);
|
||||
setSaturation(0);
|
||||
setLightness(0);
|
||||
};
|
||||
|
||||
useNitroEvent<RoomEngineTriggerWidgetEvent>(RoomEngineTriggerWidgetEvent.REQUEST_BACKGROUND_COLOR, event =>
|
||||
@@ -39,14 +38,9 @@ const useFurnitureBackgroundColorWidgetState = () =>
|
||||
|
||||
setObjectId(event.objectId);
|
||||
setCategory(event.category);
|
||||
const hue = parseInt(model.getValue<string>(RoomObjectVariable.FURNITURE_ROOM_BACKGROUND_COLOR_HUE));
|
||||
const saturation = parseInt(model.getValue<string>(RoomObjectVariable.FURNITURE_ROOM_BACKGROUND_COLOR_SATURATION));
|
||||
const light = parseInt(model.getValue<string>(RoomObjectVariable.FURNITURE_ROOM_BACKGROUND_COLOR_LIGHTNESS));
|
||||
|
||||
const hsl = ColorUtils.eight_bitVals_to_int(0, hue,saturation,light);
|
||||
|
||||
const rgbColor = ColorConverter.hslToRGB(hsl);
|
||||
setColor(rgbColor);
|
||||
setHue(parseInt(model.getValue<string>(RoomObjectVariable.FURNITURE_ROOM_BACKGROUND_COLOR_HUE)) || 0);
|
||||
setSaturation(parseInt(model.getValue<string>(RoomObjectVariable.FURNITURE_ROOM_BACKGROUND_COLOR_SATURATION)) || 0);
|
||||
setLightness(parseInt(model.getValue<string>(RoomObjectVariable.FURNITURE_ROOM_BACKGROUND_COLOR_LIGHTNESS)) || 0);
|
||||
});
|
||||
|
||||
useFurniRemovedEvent(((objectId !== -1) && (category !== -1)), event =>
|
||||
@@ -60,12 +54,10 @@ const useFurnitureBackgroundColorWidgetState = () =>
|
||||
{
|
||||
if((objectId === -1) || (category === -1)) return;
|
||||
|
||||
const hls = ColorConverter.rgbToHSL(color);
|
||||
const [ _, hue, saturation, lightness ] = ColorUtils.int_to_8BitVals(hls);
|
||||
DispatchUiEvent(new RoomWidgetUpdateBackgroundColorPreviewEvent(RoomWidgetUpdateBackgroundColorPreviewEvent.PREVIEW, hue, saturation, lightness));
|
||||
}, [ objectId, category, color ]);
|
||||
}, [ objectId, category, hue, saturation, lightness ]);
|
||||
|
||||
return { objectId, color, setColor, applyToner, toggleToner, onClose };
|
||||
return { objectId, hue, saturation, lightness, setHue, setSaturation, setLightness, applyToner, toggleToner, onClose };
|
||||
};
|
||||
|
||||
export const useFurnitureBackgroundColorWidget = useFurnitureBackgroundColorWidgetState;
|
||||
|
||||
@@ -5,6 +5,7 @@ import { useMessageEvent, useNitroEvent } from '../../../events';
|
||||
import { useFurniRemovedEvent } from '../../engine';
|
||||
|
||||
const MAX_HEIGHT: number = 40;
|
||||
const WALK_HEIGHT_HELPER_MODEL_KEY = 'furniture_is_walk_height_helper';
|
||||
|
||||
const useFurnitureStackHeightWidgetState = () =>
|
||||
{
|
||||
@@ -12,6 +13,7 @@ const useFurnitureStackHeightWidgetState = () =>
|
||||
const [ category, setCategory ] = useState(-1);
|
||||
const [ height, setHeight ] = useState(0);
|
||||
const [ pendingHeight, setPendingHeight ] = useState(-1);
|
||||
const [ isWalkHeightHelper, setIsWalkHeightHelper ] = useState(false);
|
||||
|
||||
const onClose = () =>
|
||||
{
|
||||
@@ -19,6 +21,7 @@ const useFurnitureStackHeightWidgetState = () =>
|
||||
setCategory(-1);
|
||||
setHeight(0);
|
||||
setPendingHeight(-1);
|
||||
setIsWalkHeightHelper(false);
|
||||
};
|
||||
|
||||
const updateHeight = (height: number, server: boolean = false) =>
|
||||
@@ -55,6 +58,7 @@ const useFurnitureStackHeightWidgetState = () =>
|
||||
setCategory(event.category);
|
||||
setHeight(roomObject.getLocation().z);
|
||||
setPendingHeight(-1);
|
||||
setIsWalkHeightHelper(roomObject.model?.getValue<number>(WALK_HEIGHT_HELPER_MODEL_KEY) > 0);
|
||||
});
|
||||
|
||||
useFurniRemovedEvent(((objectId !== -1) && (category !== -1)), event =>
|
||||
@@ -73,7 +77,7 @@ const useFurnitureStackHeightWidgetState = () =>
|
||||
return () => clearTimeout(timeout);
|
||||
}, [ objectId, pendingHeight ]);
|
||||
|
||||
return { objectId, height, maxHeight: MAX_HEIGHT, onClose, updateHeight };
|
||||
return { objectId, height, maxHeight: MAX_HEIGHT, isWalkHeightHelper, onClose, updateHeight };
|
||||
};
|
||||
|
||||
export const useFurnitureStackHeightWidget = useFurnitureStackHeightWidgetState;
|
||||
|
||||
Reference in New Issue
Block a user