Add method to apply local light render object transform

This commit is contained in:
2026-04-05 06:54:12 +02:00
parent b32c34ef47
commit 693f039171

View File

@@ -1512,6 +1512,24 @@ export class ViewportHost {
break;
}
}
applyLocalLightRenderObjectTransform(entity) {
const renderObjects = this.localLightRenderObjects.get(entity.id);
if (renderObjects === undefined) {
return;
}
switch (entity.kind) {
case "pointLight":
renderObjects.group.position.set(entity.position.x, entity.position.y, entity.position.z);
renderObjects.group.rotation.set(0, 0, 0);
renderObjects.group.quaternion.identity();
break;
case "spotLight":
this.applySpotLightGroupTransform(renderObjects.group, entity.position, entity.direction);
break;
default:
break;
}
}
applyModelInstanceRenderObjectTransform(modelInstance) {
const renderGroup = this.modelRenderObjects.get(modelInstance.id);
if (renderGroup === undefined) {
@@ -1531,6 +1549,7 @@ export class ViewportHost {
}
for (const entity of getEntityInstances(this.currentDocument.entities)) {
this.applyEntityRenderObjectTransform(entity);
this.applyLocalLightRenderObjectTransform(entity);
}
for (const modelInstance of getModelInstances(this.currentDocument.modelInstances)) {
this.applyModelInstanceRenderObjectTransform(modelInstance);
@@ -1584,6 +1603,10 @@ export class ViewportHost {
...currentEntity,
position: this.currentTransformSession.preview.position
});
this.applyLocalLightRenderObjectTransform({
...currentEntity,
position: this.currentTransformSession.preview.position
});
break;
case "spotLight":
this.applyEntityRenderObjectTransform({
@@ -1593,6 +1616,13 @@ export class ViewportHost {
? this.currentTransformSession.preview.rotation.direction
: currentEntity.direction
});
this.applyLocalLightRenderObjectTransform({
...currentEntity,
position: this.currentTransformSession.preview.position,
direction: this.currentTransformSession.preview.rotation.kind === "direction"
? this.currentTransformSession.preview.rotation.direction
: currentEntity.direction
});
break;
case "playerStart":
case "teleportTarget":
@@ -1603,6 +1633,13 @@ export class ViewportHost {
? this.currentTransformSession.preview.rotation.yawDegrees
: currentEntity.yawDegrees
});
this.applyLocalLightRenderObjectTransform({
...currentEntity,
position: this.currentTransformSession.preview.position,
yawDegrees: this.currentTransformSession.preview.rotation.kind === "yaw"
? this.currentTransformSession.preview.rotation.yawDegrees
: currentEntity.yawDegrees
});
break;
}
break;