-
- {activeSubTool == "cursor" && (
-
{
- setActiveTool("cursor");
- }}
- >
-
cursor (v)
-
-
- )}
- {activeSubTool == "free-hand" && (
-
{
- setActiveTool("free-hand");
- }}
- >
-
free hand (h)
-
-
- )}
- {activeSubTool == "delete" && (
-
{
- setActiveTool("delete");
- }}
- >
-
delete (x)
-
-
- )}
- {activeModule !== "visualization" && (
-
{
- setOpenDrop(!openDrop);
- }}
- >
-
- {openDrop && (
-
-
{
- setOpenDrop(false);
- setActiveTool("cursor");
- setActiveSubTool("cursor");
- }}
- >
-
- {activeSubTool === "cursor" && }
-
-
-
Cursor
-
-
{
- setOpenDrop(false);
- setActiveTool("free-hand");
- setActiveSubTool("free-hand");
- }}
- >
-
- {activeSubTool === "free-hand" && }
-
-
-
Free Hand
-
-
{
- setOpenDrop(false);
- setActiveTool("delete");
- setActiveSubTool("delete");
- }}
- >
-
- {activeSubTool === "delete" && }
-
-
-
Delete
-
+
+
+ {/* Tool Picker (cursor, delete, etc.) */}
+ {["cursor", "free-hand", "delete"].map(
+ (tool) =>
+ activeSubTool === tool && (
+
setActiveTool(tool)}
+ />
+ )
+ )}
+ {/* Dropdown Menu */}
+ {activeModule !== "visualization" && (
+
-
- {!toggleThreeD && activeModule === "builder" && (
- <>
-
-
-
{
- setActiveTool("draw-wall");
- }}
- >
-
draw wall (q)
-
-
-
{
- setActiveTool("draw-zone");
- }}
- >
-
draw zone (e)
-
-
-
{
- setActiveTool("draw-aisle");
- }}
- >
-
draw asile (r)
-
-
-
{
- setActiveTool("draw-floor");
- }}
- >
-
draw floor (t)
-
-
-
- >
- )}
- {activeModule === "builder" && (
- <>
-
-
-
{
- setActiveTool("measure");
- }}
- >
-
measure scale (m)
-
-
-
- >
- )}
- {activeModule === "simulation" && (
- <>
-
-
-
{
- setActiveTool("pen");
- }}
- >
-
pen
-
-
-
- >
- )}
- {activeModule === "visualization" && (
- <>
-
-
-
{
- handleSaveTemplate({
- addTemplate,
- floatingWidget,
- widgets3D,
- selectedZone,
- templates,
- visualizationSocket,
- });
- }}
- >
-
save template
-
-
-
- >
- )}
-
-
-
{
- setActiveTool("comment");
- }}
- >
-
comment
-
-
- {toggleThreeD && (
-
{
- setIsPlaying(!isPlaying);
- }}
- >
-
play (ctrl + p)
-
+ {getIconComponent(option)}
+
{option}
+
+ ))}
)}
-
- {activeModule === "builder" && (
- <>
-
-
-
toggle view (tab)
-
- 2d
-
-
- 3d
-
-
- >
- )}
-
- ) : (
+
+ )}
+
+
+
+ {activeModule === "builder" && renderBuilderTools()}
+ {activeModule === "simulation" && renderSimulationTools()}
+ {activeModule === "visualization" && renderVisualizationTools()}
+
+
+
+ setActiveTool("comment")}
+ />
+ {toggleThreeD && (
+ setIsPlaying(!isPlaying)}
+ />
+ )}
+
+
+ {activeModule === "builder" && (
<>
- {activeModule !== "simulation" && (
-
setIsPlaying(false)}>
- X
-
- )}
+
+ {renderModeSwitcher()}
>
)}
- >
+
);
};
+// Extracted common store logic
+const useStoreHooks = () => {
+ return {
+ ...useActiveTool(),
+ ...useToolMode(),
+ ...useDeleteTool(),
+ ...useAddAction(),
+ ...useTransformMode(),
+ ...useDeletePointOrLine(),
+ ...useRefTextUpdate(),
+ };
+};
+
export default Tools;
diff --git a/app/src/modules/builder/builder.tsx b/app/src/modules/builder/builder.tsx
index dfae129..4c8b1d7 100644
--- a/app/src/modules/builder/builder.tsx
+++ b/app/src/modules/builder/builder.tsx
@@ -11,9 +11,9 @@ import ReferenceDistanceText from "./geomentries/lines/distanceText/referenceDis
////////// Assests Imports //////////
-import arch from "../../assets/gltf-glb/arch.glb";
-import door from "../../assets/gltf-glb/door.glb";
-import Window from "../../assets/gltf-glb/window.glb";
+// import arch from "../../assets/gltf-glb/arch.glb";
+// import door from "../../assets/gltf-glb/door.glb";
+// import Window from "../../assets/gltf-glb/window.glb";
////////// Zustand State Imports //////////
@@ -129,30 +129,30 @@ export default function Builder() {
////////// Assest Configuration Values //////////
const AssetConfigurations: Types.AssetConfigurations = {
- arch: {
- modelUrl: arch,
- scale: [0.75, 0.75, 0.75],
- csgscale: [2, 4, 0.5],
- csgposition: [0, 2, 0],
- positionY: () => 0,
- type: "Fixed-Move",
- },
- door: {
- modelUrl: door,
- scale: [0.75, 0.75, 0.75],
- csgscale: [2, 4, 0.5],
- csgposition: [0, 2, 0],
- positionY: () => 0,
- type: "Fixed-Move",
- },
- window: {
- modelUrl: Window,
- scale: [0.75, 0.75, 0.75],
- csgscale: [5, 3, 0.5],
- csgposition: [0, 1.5, 0],
- positionY: (intersectionPoint) => intersectionPoint.point.y,
- type: "Free-Move",
- },
+ // arch: {
+ // modelUrl: arch,
+ // scale: [0.75, 0.75, 0.75],
+ // csgscale: [2, 4, 0.5],
+ // csgposition: [0, 2, 0],
+ // positionY: () => 0,
+ // type: "Fixed-Move",
+ // },
+ // door: {
+ // modelUrl: door,
+ // scale: [0.75, 0.75, 0.75],
+ // csgscale: [2, 4, 0.5],
+ // csgposition: [0, 2, 0],
+ // positionY: () => 0,
+ // type: "Fixed-Move",
+ // },
+ // window: {
+ // modelUrl: Window,
+ // scale: [0.75, 0.75, 0.75],
+ // csgscale: [5, 3, 0.5],
+ // csgposition: [0, 1.5, 0],
+ // positionY: (intersectionPoint) => intersectionPoint.point.y,
+ // type: "Free-Move",
+ // },
};
////////// All Toggle's //////////
diff --git a/app/src/modules/market/AssetPreview.tsx b/app/src/modules/market/AssetPreview.tsx
index a53a60d..aa037e2 100644
--- a/app/src/modules/market/AssetPreview.tsx
+++ b/app/src/modules/market/AssetPreview.tsx
@@ -1,7 +1,6 @@
-import React, { Suspense, useEffect } from "react";
-import assetImage from "../../assets/image/image.png";
+import React, { Suspense } from "react";
import { FilledStarsIconSmall } from "../../components/icons/marketPlaceIcons";
-import { Canvas, useThree } from "@react-three/fiber";
+import { Canvas } from "@react-three/fiber";
import { ContactShadows, OrbitControls, Text } from "@react-three/drei";
import GltfLoader from "./GltfLoader";
import * as THREE from "three";
@@ -14,17 +13,26 @@ interface SelectedCard {
rating: number;
views: number;
description: string;
+ AssetID: string;
}
// Define the props type for AssetPreview
interface AssetPreviewProps {
selectedCard: SelectedCard;
+ modelUrl: string;
setSelectedCard: React.Dispatch
>; // Type for setter function
}
+const savedTheme: string | null = localStorage.getItem("theme");
+
function Ui() {
return (
-
+
Loading preview...
);
@@ -33,16 +41,8 @@ function Ui() {
const AssetPreview: React.FC = ({
selectedCard,
setSelectedCard,
+ modelUrl,
}) => {
- // Ensure rating is a valid number between 0 and 5
- const rating = Math.max(
- 0,
- Math.min(5, isNaN(selectedCard.rating) ? 0 : selectedCard.rating)
- );
-
- // Ensure that the rating is a valid positive integer for array length
- const starsArray = Array.from({ length: rating }, (_, index) => index);
-
return (
@@ -53,18 +53,19 @@ const AssetPreview: React.FC
= ({
{/* close button */}
-
setSelectedCard(null)}>
+ setSelectedCard(null)}>
{`<-back`}
-
+