Add method to apply local light render object transform

This commit is contained in:
2026-04-05 06:53:35 +02:00
parent 892e142caa
commit b32c34ef47

View File

@@ -2063,6 +2063,27 @@ export class ViewportHost {
}
}
private applyLocalLightRenderObjectTransform(entity: EntityInstance) {
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;
}
}
private applyModelInstanceRenderObjectTransform(modelInstance: ModelInstance) {
const renderGroup = this.modelRenderObjects.get(modelInstance.id);
@@ -2091,6 +2112,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)) {
@@ -2157,6 +2179,10 @@ export class ViewportHost {
...currentEntity,
position: this.currentTransformSession.preview.position
});
this.applyLocalLightRenderObjectTransform({
...currentEntity,
position: this.currentTransformSession.preview.position
});
break;
case "spotLight":
this.applyEntityRenderObjectTransform({
@@ -2167,6 +2193,14 @@ 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":
@@ -2178,6 +2212,14 @@ 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;