import React, { useState } from "react"; import InputToggle from "../../../ui/inputs/InputToggle"; import InputWithDropDown from "../../../ui/inputs/InputWithDropDown"; import { RemoveIcon } from "../../../icons/ExportCommonIcons"; import PositionInput from "../customInput/PositionInputs"; import RotationInput from "../customInput/RotationInput"; import { useSelectedFloorItem, useObjectPosition, useObjectRotation } from "../../../../store/builder/store"; import { useSceneContext } from "../../../../modules/scene/sceneContext"; interface UserData { id: number; // Unique identifier for the user data label: string; // Label of the user data field value: string; // Value of the user data field } const AssetProperties: React.FC = () => { const [userData, setUserData] = useState([]); // State to track user data const [nextId, setNextId] = useState(1); // Unique ID for new entries const { selectedFloorItem } = useSelectedFloorItem(); const { objectPosition } = useObjectPosition(); const { objectRotation } = useObjectRotation(); const { assetStore } = useSceneContext(); const { assets, setCurrentAnimation } = assetStore() const [hoveredIndex, setHoveredIndex] = useState(null); const [isPlaying, setIsplaying] = useState(false); // Function to handle adding new user data const handleAddUserData = () => { const newUserData: UserData = { id: nextId, label: `Property ${nextId}`, value: "", }; setUserData([...userData, newUserData]); setNextId(nextId + 1); // Increment the ID for the next entry }; // Function to update the value of a user data entry const handleUserDataChange = (id: number, newValue: string) => { setUserData((prevUserData) => prevUserData.map((data) => data.id === id ? { ...data, value: newValue } : data ) ); }; // Remove user data const handleRemoveUserData = (id: number) => { setUserData((prevUserData) => prevUserData.filter((data) => data.id !== id) ); }; const handleAnimationClick = (animation: string) => { if (selectedFloorItem) { setCurrentAnimation(selectedFloorItem.uuid, animation, true); } } if (!selectedFloorItem) return null; return (
{/* Name */}
{selectedFloorItem.userData.modelName}
{objectPosition.x && objectPosition.z && { }} value1={parseFloat(objectPosition.x.toFixed(5))} value2={parseFloat(objectPosition.z.toFixed(5))} /> } {objectRotation.y && { }} value={parseFloat(objectRotation.y.toFixed(5))} /> }
Render settings
User Data
{userData.map((data) => (
handleUserDataChange(data.id, newValue)} // Pass the change handler />
handleRemoveUserData(data.id)} >
))} {/* Add new user data */}
+ Add
{selectedFloorItem.uuid &&
Animations
} {assets.map((asset) => (
{asset.modelUuid === selectedFloorItem.uuid && asset.animations && asset.animations.length > 0 && asset.animations.map((animation, index) => (
handleAnimationClick(animation)} onMouseEnter={() => setHoveredIndex(index)} onMouseLeave={() => setHoveredIndex(null)} style={{ height: "20px", width: "100%", borderRadius: "5px", background: hoveredIndex === index ? "#7b4cd3" : "transparent", }} > {animation.charAt(0).toUpperCase() + animation.slice(1).toLowerCase()}
))}
))}
); }; export default AssetProperties;