This commit is contained in:
2025-10-29 18:01:43 +02:00
parent 127f71f345
commit 40fe3b998c
2 changed files with 16 additions and 10 deletions
+7 -9
View File
@@ -1,5 +1,4 @@
import { MeshBasicMaterial, TextureLoader, LinearFilter, import { MeshBasicMaterial, TextureLoader, LinearFilter,
sRGBEncoding,
Mesh, Mesh,
OrthographicCamera, OrthographicCamera,
PlaneGeometry, PlaneGeometry,
@@ -11,24 +10,23 @@ import { Text } from 'troika-three-text';
class DashBoard { class DashBoard {
constructor(renderer, width, height) { constructor(renderer, width, height) {
var _camera = new OrthographicCamera(width / -2, width / 2, height / 2, height / -2, 0, 1); let _camera = new OrthographicCamera(width / -2, width / 2, height / 2, height / -2, 0, 1);
var _scene = new Scene(); let _scene = new Scene();
var _params = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat, stencilBuffer: true }; //let _params = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat, stencilBuffer: true };
this.points = 0; this.points = 0;
var _texture = new TextureLoader().load('./assets/maze/x.png'); let _texture = new TextureLoader().load('./assets/maze/x.png');
_texture.encoding = sRGBEncoding;
var _material = new MeshBasicMaterial({ let _material = new MeshBasicMaterial({
map: _texture, map: _texture,
alphaTest: .5 alphaTest: .5
}); });
// _mesh = new Mesh( new PlaneGeometry( width * 0.015, width * 0.015 ), _material ); // _mesh = new Mesh( new PlaneGeometry( width * 0.015, width * 0.015 ), _material );
var _text = new Text(); let _text = new Text();
_text.font = './assets/fonts/MonomakhUnicode.otf'; _text.font = '/static/fonts/Montserrat-Regular.ttf';
_text.text = 'Точки: 0'; _text.text = 'Точки: 0';
_text.anchorX = 'right'; _text.anchorX = 'right';
_text.anchorY = 'top'; _text.anchorY = 'top';
+9 -1
View File
@@ -16,6 +16,7 @@ import { XRButton } from 'three/addons/webxr/XRButton.js';
import { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js'; import { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js';
import { Physics } from './Physics.js'; import { Physics } from './Physics.js';
import { Clickable } from './Clickable.js'; import { Clickable } from './Clickable.js';
import { DashBoard } from './Dashboard.js';
class GameEngine extends THREE.EventDispatcher{ class GameEngine extends THREE.EventDispatcher{
async init(domNode, opts = {}) { async init(domNode, opts = {}) {
@@ -74,7 +75,7 @@ class GameEngine extends THREE.EventDispatcher{
const renderer = new THREE.WebGLRenderer({ const renderer = new THREE.WebGLRenderer({
antialias: true, antialias: true,
// alpha: true, alpha: false,
preserveDrawingBuffer: true, //this is important for screenshots capturing preserveDrawingBuffer: true, //this is important for screenshots capturing
powerPreference: "high-performance", powerPreference: "high-performance",
}); });
@@ -90,6 +91,7 @@ class GameEngine extends THREE.EventDispatcher{
renderer.setSize(this.w, this.h); renderer.setSize(this.w, this.h);
renderer.setViewport(0, 0, this.w, this.h); renderer.setViewport(0, 0, this.w, this.h);
renderer.autoClear = true; renderer.autoClear = true;
renderer.alpha = true
this.anaglyph = new AnaglyphEffect(renderer); this.anaglyph = new AnaglyphEffect(renderer);
this.anaglyph.setSize(this.w, this.h); this.anaglyph.setSize(this.w, this.h);
@@ -97,6 +99,9 @@ class GameEngine extends THREE.EventDispatcher{
this.stereo = new StereoEffect(renderer); this.stereo = new StereoEffect(renderer);
this.stereo.setSize(this.w, this.h); this.stereo.setSize(this.w, this.h);
const dashboard = new DashBoard(renderer, this.w, this.h);
this.dashboard = dashboard;
this.activeObjects = new THREE.Group(); this.activeObjects = new THREE.Group();
scene.add(this.activeObjects); scene.add(this.activeObjects);
@@ -131,6 +136,9 @@ class GameEngine extends THREE.EventDispatcher{
if (!renderer.xr.isPresenting) { if (!renderer.xr.isPresenting) {
gameEngine.gizmo?.render(); gameEngine.gizmo?.render();
} }
renderer.autoClear = false;
dashboard.render();
renderer.autoClear = true;
} }
renderer.setAnimationLoop(animate); renderer.setAnimationLoop(animate);