fixing 3D

This commit is contained in:
Kbz-8 2024-05-07 18:31:14 +02:00
parent 16bcf88544
commit c2aafe9a42
2 changed files with 26 additions and 31 deletions

View File

@ -23,12 +23,6 @@ function renderCube(ctx, x, y, z, angle = 0, sx = 1, sy = 1, sz = 1)
[sx, sy, sz] [sx, sy, sz]
); );
mat4.translate(
modelMatrix,
modelMatrix,
[-1, 0, 0] // wtf, this works ?
);
const normalMatrix = mat4.create(); const normalMatrix = mat4.create();
mat4.invert(normalMatrix, modelMatrix); mat4.invert(normalMatrix, modelMatrix);
mat4.transpose(normalMatrix, normalMatrix); mat4.transpose(normalMatrix, normalMatrix);

View File

@ -2,6 +2,7 @@ import AbstractAuthenticatedView from "./abstracts/AbstractAuthenticatedView.js"
import "../3D/maths/gl-matrix-min.js" import "../3D/maths/gl-matrix-min.js"
import { initShaderProgram, shaderInfos } from "../3D/shaders.js" import { initShaderProgram, shaderInfos } from "../3D/shaders.js"
import { initBuffers } from "../3D/buffers.js" import { initBuffers } from "../3D/buffers.js"
import { renderCube } from "../3D/cube.js"
export class PongOfflineView extends AbstractAuthenticatedView { export class PongOfflineView extends AbstractAuthenticatedView {
constructor(params) { constructor(params) {
@ -23,8 +24,6 @@ export class PongOfflineView extends AbstractAuthenticatedView {
this.round = -1; this.round = -1;
this.game_mode = 1; // 1 is 2D, 2 is 3D this.game_mode = 1; // 1 is 2D, 2 is 3D
} }
async getHtml() { async getHtml() {
@ -171,20 +170,20 @@ export class PongOfflineView extends AbstractAuthenticatedView {
player2 = this.player2; player2 = this.player2;
} }
if (this.game == null) { if (this.game == null) {
this.game = new Game(this, player1, player2); this.game = new Game(this.game_mode, this, player1, player2);
this.createButton(); this.createButton();
} }
else { else {
this.app.removeChild(this.game.canvas); this.app.removeChild(this.game.canvas);
this.app.removeChild(this.game.scoresDisplay); this.app.removeChild(this.game.scoresDisplay);
this.game.cleanup(); this.game.cleanup();
this.game = new Game(this, player1, player2); this.game = new Game(this.game_mode, this, player1, player2);
this.createButton(); this.createButton();
} }
if (this.round >= 0) { if (this.round >= 0) {
await this.display_tree_tournament(); await this.display_tree_tournament();
} }
document.getElementById('startTournament').hidden = 1; document.getElementById('startTournament').hidden = 1;
document.getElementById('startGameButton').hidden = 1; document.getElementById('startGameButton').hidden = 1;
document.getElementById('stopGameButton').hidden = 0; document.getElementById('stopGameButton').hidden = 0;
@ -267,7 +266,7 @@ export class PongOfflineView extends AbstractAuthenticatedView {
} }
class Game { class Game {
constructor(this_pong, player_name1, player_name2) { constructor(game_mode, this_pong, player_name1, player_name2) {
this.pong = this_pong; this.pong = this_pong;
@ -324,11 +323,11 @@ class Game {
// stufs for 3D // stufs for 3D
this.shader_prog = null; this.shader_prog = null;
this.buffers = null; this.buffers = null;
this.cam_pos = [0, 400, 0]; this.cam_pos = [0, 150, -10];
this.cam_target = [0, 0, 0]; this.cam_target = [0, 0, 0];
this.cam_up = [0, 0, -1]; this.cam_up = [0, 0, -1];
this.initGame(1); this.initGame(game_mode);
} }
initGame(mode) initGame(mode)
@ -342,12 +341,14 @@ class Game {
initWebGL() initWebGL()
{ {
this.canvas = document.createElement("canvas"); this.canvas = document.createElement("canvas");
this.canvas.height = this.config.MAP_SIZE_X; this.canvas.width = this.def.CANVASWIDTH;
this.canvas.width = this.config.MAP_SIZE_Y; this.canvas.height = this.def.CANVASHEIGHT;
this.canvas.id = "gameCanvas"; this.canvas.id = "gameCanvas";
this.canvas.style.border = '1px solid #d3d3d3';
this.canvas.style.backgroundColor = '#f1f1f1';
this.app.appendChild(this.canvas); this.app.appendChild(this.canvas);
this.context = canva.getContext("webgl"); this.context = this.canvas.getContext("webgl");
if(this.context === null) if(this.context === null)
{ {
@ -355,11 +356,11 @@ class Game {
return; return;
} }
this.shader_prog = initShaderProgram(this.ctx); this.shader_prog = initShaderProgram(this.context);
this.buffers = initBuffers(this.ctx); this.buffers = initBuffers(this.context);
this.ctx.enable(this.ctx.CULL_FACE); this.context.enable(this.context.CULL_FACE);
this.ctx.cullFace(this.ctx.BACK); this.context.cullFace(this.context.BACK);
} }
init2D() init2D()
@ -575,7 +576,7 @@ class Game {
setPositionAttribute() setPositionAttribute()
{ {
const numComponents = 3; const numComponents = 3;
const type = this.ctx.FLOAT; const type = this.context.FLOAT;
const normalize = false; const normalize = false;
const stride = 0; const stride = 0;
const offset = 0; const offset = 0;
@ -599,6 +600,7 @@ class Paddle {
this.height = def.PADDLEHEIGHT; this.height = def.PADDLEHEIGHT;
this.x = paddleSide; this.x = paddleSide;
this.y = def.CANVASHEIGHT / 2 - this.height / 2; this.y = def.CANVASHEIGHT / 2 - this.height / 2;
this.def = def;
this.update(); this.update();
} }
@ -610,11 +612,9 @@ class Paddle {
} }
else if(ctx instanceof WebGLRenderingContext) else if(ctx instanceof WebGLRenderingContext)
{ {
// const size = this.game.config.BALL_SIZE * 2; const posx = (this.x - this.def.CANVASWIDTH / 2);
// const sizex = this.len() / 2; const posy = (this.y - this.def.CANVASHEIGHT / 3);
// const posx = (this.x - this.game.config.MAP_CENTER_X); renderCube(ctx, posx, 0, posy, 0, this.width, this.width, this.height / 2);
// const posy = (this.y - this.game.config.MAP_CENTER_Y);
// renderCube(ctx, posx, 0, posy, -this.angle(), sizex, size, size);
} }
} }
@ -637,6 +637,7 @@ class Ball {
this.vx = -this.speed; this.vx = -this.speed;
else else
this.vx = this.speed; this.vx = this.speed;
this.def = def;
this.update(); this.update();
} }
@ -650,10 +651,10 @@ class Ball {
} }
else if(ctx instanceof WebGLRenderingContext) else if(ctx instanceof WebGLRenderingContext)
{ {
//const size = this.size * 3; const size = this.radius;
//const posx = (this.position.location.x - this.size / 2) - this.game.config.MAP_SIZE_X / 2; const posx = (this.x - this.radius / 2) - this.def.CANVASWIDTH / 2;
//const posy = (this.position.location.y - this.size / 2) - this.game.config.MAP_SIZE_Y / 2; const posy = (this.y - this.radius / 2) - this.def.CANVASHEIGHT / 2;
//renderCube(ctx, posx, 0, posy, 0, size, size, size); renderCube(ctx, posx, 0, posy, 0, size, size, size);
} }
} }
} }