{
{
editState.merge({
objName: name
})
obj3d.name = name
}}
/>
{
editState.merge({
position: nuPosition.clone()
})
EditorControlFunctions.positionObject([obj3d.uuid], [nuPosition])
//obj3d.position.set(nuPosition.x, nuPosition.y, nuPosition.z)
}}
onRelease={() => {
dispatchAction(EditorAction.sceneModified({ modified: true }))
dispatchAction(EditorHistoryAction.createSnapshot({ modify: true }))
}}
/>
{
editState.merge({
rotation: nuEulers.clone()
})
const actualEuler = new Euler(...nuEulers.clone().multiplyScalar(Deg2Rad).toArray())
EditorControlFunctions.rotateObject([obj3d.uuid], [actualEuler])
//obj3d.rotation.setFromVector3(nuEulers.multiplyScalar(Deg2Rad))
}}
onRelease={() => {
dispatchAction(EditorAction.sceneModified({ modified: true }))
dispatchAction(EditorHistoryAction.createSnapshot({ modify: true }))
}}
/>
{
editState.merge({
scale: nuScale.clone()
})
EditorControlFunctions.scaleObject([obj3d.uuid], [nuScale], TransformSpace.Local, true)
//obj3d.scale.copy(nuScale)
}}
onRelease={() => {
dispatchAction(EditorAction.sceneModified({ modified: true }))
dispatchAction(EditorHistoryAction.createSnapshot({ modify: true }))
}}
/>
{updateObj3d('visible', 'Visible')}
{updateObj3d('frustrumCulled', 'Frustrum Culled')}
{updateObj3d('castShadow', 'Cast Shadow')}
{updateObj3d('receiveShadow', 'Receive Shadow')}
}
{/* animations */}
{isMesh && (
<>
{materialIds.value?.length > 0 && (
<>
{
currentMaterialId.set(materialIds.value.findIndex(({ value }) => value === nuVal))
}}
/>
{
if (!!materialLibrary.materials[nuId].value) {
if (Array.isArray(mesh.material)) {
mesh.material[currentMaterialId.value] = materialFromId(nuId).material
} else {
mesh.material = materialFromId(nuId).material
mesh.material.needsUpdate = true
}
}
}}
/>
>
)}
>
)}
{isInstancedMesh && (
{instancedMesh?.count > 0 && (
{
let transform = new Matrix4()
instancedMesh.getMatrixAt(i, transform)
let position = new Vector3()
let rotation = new Quaternion()
let scale = new Vector3()
transform.decompose(position, rotation, scale)
const euler = new Euler()
euler.setFromQuaternion(rotation)
return (
)
}}
/>
)}
)}
userData
{
EditorControlFunctions.modifyObject3d(
selectionState.value.selectedEntities.filter((val) => typeof val === 'string') as string[],
[{ userData: edit.updated_src }]
)
obj3d.userData = edit.updated_src
}}
onAdd={(add) => {
obj3d.userData = add.updated_src
}}
onDelete={(_delete) => {
obj3d.userData = _delete.updated_src
}}
onSelect={() => {}}
theme="monokai"
src={obj3d.userData}
/>
)
}
Object3DNodeEditor.iconComponent = AxisIcon
export default Object3DNodeEditor