diff --git a/app/src/components/layout/sidebarLeft/Outline.tsx b/app/src/components/layout/sidebarLeft/Outline.tsx
index cb148d2..f755e04 100644
--- a/app/src/components/layout/sidebarLeft/Outline.tsx
+++ b/app/src/components/layout/sidebarLeft/Outline.tsx
@@ -96,25 +96,10 @@ const Outline: React.FC = () => {
) : (
{/*
- setIsLayersOpen((prev) => !prev)}
- showKebabMenu={false}
- showFocusIcon={true}
- remove
- />
- */}
+ setIsLayersOpen((prev) => !prev)} showKebabMenu={false} showFocusIcon={true} remove />
+ */}
- {/* setIsBuildingsOpen((prev) => !prev)}
- showKebabMenu={false}
- showAddIcon={false}
- /> */}
+ {/* setIsBuildingsOpen((prev) => !prev)} showKebabMenu={false} showAddIcon={false} /> */}
setIsZonesOpen((prev) => !prev)} showKebabMenu={false} showAddIcon={false} />
diff --git a/app/src/components/ui/list/DropDownList.tsx b/app/src/components/ui/list/DropDownList.tsx
index ba5acdd..b6bef8a 100644
--- a/app/src/components/ui/list/DropDownList.tsx
+++ b/app/src/components/ui/list/DropDownList.tsx
@@ -4,70 +4,65 @@ import KebabMenuListMultiSelect from "./KebebMenuListMultiSelect";
import List from "./OutlineList/ListNew";
interface DropDownListProps {
- value?: string;
- items?: { id: string; name: string }[];
- showFocusIcon?: boolean;
- showAddIcon?: boolean;
- showKebabMenu?: boolean;
- kebabMenuItems?: { id: string; name: string }[];
- remove?: boolean;
- isOpen: boolean;
- onToggle: () => void;
+ value?: string;
+ items?: { id: string; name: string }[];
+ showFocusIcon?: boolean;
+ showAddIcon?: boolean;
+ showKebabMenu?: boolean;
+ kebabMenuItems?: { id: string; name: string }[];
+ remove?: boolean;
+ isOpen: boolean;
+ onToggle: () => void;
}
const DropDownList: React.FC = ({
- value = "Dropdown",
- items = [],
- showFocusIcon = false,
- showAddIcon = true,
- showKebabMenu = true,
- kebabMenuItems = [
- { id: "Buildings", name: "Buildings" },
- { id: "Paths", name: "Paths" },
- { id: "Zones", name: "Zones" },
- ],
- remove,
- isOpen,
- onToggle,
+ value = "Dropdown",
+ items = [],
+ showFocusIcon = false,
+ showAddIcon = true,
+ showKebabMenu = true,
+ kebabMenuItems = [
+ { id: "Buildings", name: "Buildings" },
+ { id: "Paths", name: "Paths" },
+ { id: "Zones", name: "Zones" },
+ ],
+ remove,
+ isOpen,
+ onToggle,
}) => {
- return (
-
-
-
{value}
-
- {showFocusIcon && (
-
-
+ return (
+
+
+
{value}
+
+ {showFocusIcon && (
+
+
+
+ )}
+ {showAddIcon && (
+
+ )}
+ {showKebabMenu && (
+
+
+
+ )}
+
+
- )}
- {showAddIcon && (
-
- )}
- {showKebabMenu && (
-
-
-
- )}
-
-
-
- {isOpen && (
-
-
+ {isOpen && (
+
+
+
+ )}
- )}
-
- );
+ );
};
export default DropDownList;
diff --git a/app/src/components/ui/list/OutlineList/ListNew.tsx b/app/src/components/ui/list/OutlineList/ListNew.tsx
index 674ea37..65c3e6d 100644
--- a/app/src/components/ui/list/OutlineList/ListNew.tsx
+++ b/app/src/components/ui/list/OutlineList/ListNew.tsx
@@ -6,44 +6,39 @@ import { useZoneAssetHandlers } from "../../../../functions/outlineHelpers/useZo
import { useZonesExpansion } from "../../../../functions/outlineHelpers/useZonesExpansion";
const List: React.FC
= ({ items = [], remove }) => {
- const { selectedZone } = useSelectedZoneStore();
- const { zoneAssetId } = useZoneAssetId();
- const { expandedZones, toggleZoneExpansion } = useZonesExpansion(items);
+ const { selectedZone } = useSelectedZoneStore();
+ const { zoneAssetId } = useZoneAssetId();
+ const { expandedZones, toggleZoneExpansion } = useZonesExpansion(items);
- const {
- handleSelectZone,
- handleZoneNameChange,
- handleAssetClick,
- handleZoneAssetName,
- } = useZoneAssetHandlers();
+ const { handleSelectZone, handleZoneNameChange, handleAssetClick, handleZoneAssetName } = useZoneAssetHandlers();
+
+ if (items.length === 0) {
+ return (
+
+ );
+ }
- if (items.length === 0) {
return (
-
+
+ {items.map((item) => (
+
+ ))}
+
);
- }
-
- return (
-
- {items.map((item) => (
-
- ))}
-
- );
};
export default List;
diff --git a/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx b/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx
index c5d2c5f..0b68c97 100644
--- a/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx
+++ b/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx
@@ -5,6 +5,7 @@ import { useBuilderStore } from "../../../../../store/builder/useBuilderStore";
import { useToggleView } from "../../../../../store/builder/store";
import * as Constants from "../../../../../types/world/worldConstants";
+import ExtrudePolygon from "../../../wrappers/geomentry/extrudePolygon";
import DecalInstance from "../../../Decal/decalInstance/decalInstance";
import texturePath from "../../../../../assets/textures/floor/white.png";
@@ -26,7 +27,6 @@ import material4Map from "../../../../../assets/textures/floor/tex3/metal_plate_
import material4RoughnessMap from "../../../../../assets/textures/floor/tex3/metal_plate_rough_1k.png";
import material4MetalicMap from "../../../../../assets/textures/floor/tex3/metal_plate_metal_1k.png";
import material4NormalMap from "../../../../../assets/textures/floor/tex3/metal_plate_nor_gl_1k.png";
-import ExtrudePolygon from "../../../wrappers/geomentry/extrudePolygon";
function FloorInstance({ floor }: { readonly floor: Floor }) {
const { toggleView } = useToggleView();
diff --git a/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx b/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx
index aa730c0..b453493 100644
--- a/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx
+++ b/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx
@@ -1,14 +1,37 @@
-import { Vector3 } from "three";
-import ZoneCornerReference from "./zoneCornerReference";
+import { useRef } from "react";
+import { Group, Vector3 } from "three";
+import useModuleStore from "../../../../../store/ui/useModuleStore";
+import { useToggleView } from "../../../../../store/builder/store";
+import { useBuilderStore } from "../../../../../store/builder/useBuilderStore";
import ExtrudePolygon from "../../../wrappers/geomentry/extrudePolygon";
import PlaneMaterial from "../../../wrappers/materials/planeMaterial";
import PolygonMaterial from "../../../wrappers/materials/polygonMaterial";
+import ZoneCornerReference from "./zoneCornerReference";
function ZoneInstance({ zone }: { readonly zone: Zone }) {
+ const { toggleView } = useToggleView();
+ const { activeModule } = useModuleStore();
+ const { selectedZone, setSelectedZone } = useBuilderStore();
+ const groupRef = useRef(null);
const zoneLayer = zone.points[0].layer;
return (
-
+ {
+ if (!toggleView && activeModule === "builder") {
+ e.stopPropagation();
+ setSelectedZone({ zoneData: zone, zoneMesh: groupRef.current });
+ }
+ }}
+ onPointerMissed={() => {
+ if (selectedZone && selectedZone.zoneMesh?.userData.zoneUuid === zone.zoneUuid) {
+ setSelectedZone(null);
+ }
+ }}
+ >
@@ -56,6 +56,11 @@ function OutlineInstances() {
selection={selectedFloor?.floorMesh ? [selectedFloor.floorMesh] : null}
color={CONSTANTS.outlineConfig.assetSelectColor}
/>
+
{/* Decals */}
void;
// Setters - Zone
- setSelectedZone: (zone: Object3D | null) => void;
+ setSelectedZone: (zone: { zoneMesh: Object3D | null; zoneData: Zone } | null) => void;
setZoneHeight: (height: number) => void;
setZoneColor: (color: string) => void;
@@ -292,7 +292,7 @@ export const useBuilderStore = create()(
// === Setters: Zone ===
- setSelectedZone: (zone: Object3D | null) => {
+ setSelectedZone: (zone: { zoneMesh: Object3D | null; zoneData: Zone } | null) => {
set((state) => {
state.selectedZone = zone;
});