This commit is contained in:
2026-03-11 17:00:34 +02:00
parent 9b9deb2bf0
commit ffeb9466a6
6 changed files with 226 additions and 104 deletions
+29 -1
View File
@@ -100,7 +100,7 @@ class GameEngine extends EventManager{
renderer.setSize(this.w, this.h);
renderer.setViewport(0, 0, this.w, this.h);
renderer.autoClear = true;
renderer.alpha = true
//renderer.alpha = true
this.renderer = renderer;
this.anaglyph = new AnaglyphEffect(renderer);
@@ -163,6 +163,7 @@ class GameEngine extends EventManager{
gameEngine.hero?.update(delta);
gameEngine.mixers.forEach(m => m.update(delta));
gameEngine.dispatchEvent({type: 'beforeRender'})
gameEngine.processHideIfFar();
this.motionQueue.update(delta);
gameEngine.render(scene, gameEngine.camera);
@@ -454,6 +455,13 @@ class GameEngine extends EventManager{
if (object.material.map) {
object.material.map.colorSpace = THREE.SRGBColorSpace;
}
if (object.userData){
if (object.userData['re.renderOrder'] !== undefined){
object.renderOrder = object.userData['re.renderOrder'];
//object.material.alphaTest = true;
}
}
}
object.frustumCulled = false;
object.castShadow = true;
@@ -604,6 +612,26 @@ class GameEngine extends EventManager{
this.stats?.update()
}
farArray = [];
hideIfFar(object, distance){
object.visible = false;
this.farArray.push({object, distance})
}
processHideIfFar(){
let v = new THREE.Vector3();
this.farArray.forEach(e=>{
e.object.getWorldPosition(v);
let dst = this.cameraWorld.position.distanceTo(v);
if (dst <= e.distance && !e.object.visible) {
e.object.visible = true;
}else if (dst > e.distance && e.object.visible){
e.object.visible = false;
}
})
}
clearScene(){
this.hero?.destroy();
this.dashboard?.reset();