summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--game.js157
-rw-r--r--game.js.map2
-rw-r--r--game.ts217
-rw-r--r--index.html2
4 files changed, 262 insertions, 116 deletions
diff --git a/game.js b/game.js
index 481a985..dadd9b4 100644
--- a/game.js
+++ b/game.js
@@ -72,7 +72,18 @@ var PointerLock = (function () {
}());
var Keyboard = (function () {
function Keyboard() {
+ var _this = this;
this.status = {};
+ this.onKeyDown = function (event) {
+ var key = Keyboard.keyName(event.keyCode);
+ if (!_this.status[key])
+ _this.status[key] = { down: false, pressed: false, up: false, updatedPreviously: false };
+ };
+ this.onKeyUp = function (event) {
+ var key = Keyboard.keyName(event.keyCode);
+ if (_this.status[key])
+ _this.status[key].pressed = false;
+ };
}
Keyboard.prototype.update = function () {
for (var key in this.status) {
@@ -94,16 +105,6 @@ var Keyboard = (function () {
this.status[key].up = true;
}
};
- Keyboard.prototype.onKeyDown = function (event) {
- var key = Keyboard.keyName(event.keyCode);
- if (!this.status[key])
- this.status[key] = { down: false, pressed: false, up: false, updatedPreviously: false };
- };
- Keyboard.prototype.onKeyUp = function (event) {
- var key = Keyboard.keyName(event.keyCode);
- if (this.status[key])
- this.status[key].pressed = false;
- };
Keyboard.prototype.down = function (key) {
return (this.status[key] && this.status[key].down);
};
@@ -114,14 +115,12 @@ var Keyboard = (function () {
return (this.status[key] && this.status[key].up);
};
Keyboard.prototype.register = function () {
- var _this = this;
- document.addEventListener("keydown", function (event) { return _this.onKeyDown(event); }, false);
- document.addEventListener("keyup", function (event) { return _this.onKeyUp(event); }, false);
+ document.addEventListener("keydown", this.onKeyDown, false);
+ document.addEventListener("keyup", this.onKeyUp, false);
};
Keyboard.prototype.unregister = function () {
- var _this = this;
- document.removeEventListener("keydown", function (event) { return _this.onKeyDown(event); }, false);
- document.removeEventListener("keyup", function (event) { return _this.onKeyUp(event); }, false);
+ document.removeEventListener("keydown", this.onKeyDown, false);
+ document.removeEventListener("keyup", this.onKeyUp, false);
};
Keyboard.keyName = function (keyCode) {
return (Keyboard.k[keyCode] != null) ?
@@ -139,76 +138,108 @@ var Keyboard = (function () {
};
return Keyboard;
}());
+var MouseButton;
+(function (MouseButton) {
+ MouseButton[MouseButton["LEFT"] = 0] = "LEFT";
+ MouseButton[MouseButton["RIGHT"] = 1] = "RIGHT";
+ MouseButton[MouseButton["MIDDLE"] = 2] = "MIDDLE";
+})(MouseButton || (MouseButton = {}));
var Mouse = (function () {
function Mouse() {
var _this = this;
+ this.xMovement = 0;
+ this.yMovement = 0;
+ this.buttons = {};
this.onMouseMove = function (event) {
_this.x = event.screenX;
_this.xMovement = event.movementX;
_this.y = event.screenY;
_this.yMovement = event.movementY;
- console.log(_this.x + " " + _this.y + " :: " + _this.xMovement + " " + _this.yMovement);
+ // console.log(this.x + " " + this.y + " :: " + this.xMovement + " " + this.yMovement);
+ };
+ this.onMouseDown = function (event) {
+ _this.buttons[event.button] = true;
+ };
+ this.onMouseUp = function (event) {
+ _this.buttons[event.button] = false;
};
}
+ Mouse.prototype.pressed = function (button) {
+ return this.buttons[button];
+ };
Mouse.prototype.register = function () {
document.addEventListener("mousemove", this.onMouseMove, false);
+ document.addEventListener("mousedown", this.onMouseDown, false);
+ document.addEventListener("mouseup", this.onMouseUp, false);
};
Mouse.prototype.unregister = function () {
document.removeEventListener("mousemove", this.onMouseMove, false);
+ document.removeEventListener("mousedown", this.onMouseDown, false);
+ document.removeEventListener("mouseup", this.onMouseUp, false);
};
return Mouse;
}());
var Morph = (function (_super) {
__extends(Morph, _super);
- function Morph(faces, material, mass) {
- _super.call(this, Morph.generateGeometry(faces), material, mass);
- this.faces = faces;
+ function Morph(level, material, mass) {
+ _super.call(this, Morph.generateGeometry(level), material, mass);
+ this.level = level;
}
- Morph.generateGeometry = function (numFaces) {
- if (numFaces == 4) {
- return new THREE.TetrahedronGeometry();
+ Morph.generateGeometry = function (level) {
+ var numFaces = Morph.levels[level];
+ switch (numFaces) {
+ case 4:
+ return new THREE.TetrahedronGeometry();
+ case 6:
+ return new THREE.BoxGeometry(1, 1, 1, 1, 1, 1);
+ case 12:
+ return new THREE.DodecahedronGeometry(1, 0);
+ case 20:
+ return new THREE.IcosahedronGeometry(1, 0);
+ default:
+ return new THREE.TetrahedronGeometry();
}
- else if (numFaces == 6) {
- return new THREE.BoxGeometry(1, 1, 1, 2, 2, 2);
- }
- else if (numFaces == 12) {
- return new THREE.DodecahedronGeometry(1, 0);
- }
- else if (numFaces == 20) {
- return new THREE.IcosahedronGeometry(1, 0);
- }
- return null;
};
- Morph.prototype.updateGeometry = function (numFaces) {
- this.faces = numFaces;
- this.geometry = Morph.generateGeometry(this.faces);
+ Morph.prototype.updateGeometry = function () {
+ this.geometry = Morph.generateGeometry(this.level);
};
- Morph.prototype.shrink = function (numFaces) {
- this.updateGeometry(this.faces - numFaces);
+ Morph.prototype.shrink = function () {
+ if (this.level > 1) {
+ this.level--;
+ this.updateGeometry();
+ }
};
- Morph.prototype.grow = function (numFaces) {
- this.updateGeometry(this.faces + numFaces);
+ Morph.prototype.grow = function () {
+ if (this.level < 3) {
+ this.level++;
+ this.updateGeometry();
+ }
};
+ Morph.levels = [4, 6, 12, 20];
return Morph;
}(Physijs.SphereMesh));
var Enemy = (function (_super) {
__extends(Enemy, _super);
function Enemy() {
- _super.call(this, 6, Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ _super.call(this, 0, Physijs.createMaterial(new THREE.MeshBasicMaterial({
color: 0xb02000
- }), .8, .3), 2);
+ }), .8, .6), 2);
}
return Enemy;
}(Morph));
var Player = (function (_super) {
__extends(Player, _super);
function Player() {
- _super.call(this, 20, Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ _super.call(this, 1, Physijs.createMaterial(new THREE.MeshBasicMaterial({
color: 0x00a0b0
- }), .8, .3), 1);
+ }), .8, .6), 0.5);
+ this.direction = new Vector3(0, 0, -1);
+ this.upward = new Vector3(0, 1, 0);
+ this.camera = new Vector3(0, 10, 10);
+ this.speed = 15;
}
Player.prototype.jump = function () {
- this.applyCentralImpulse(new Vector3(0, 20, 0));
+ this.applyCentralImpulse(new Vector3(0, 8, 0));
};
return Player;
}(Morph));
@@ -235,8 +266,8 @@ var World = (function () {
light.shadow.bias = -.0001;
light.shadow.mapSize.width = light.shadow.mapSize.height = 2048;
scene.add(light);
- var groundGeometry = new THREE.BoxGeometry(100, 1, 100);
- var groundMaterial = Physijs.createMaterial(new THREE.MeshBasicMaterial({ color: 0xeaeaea }), .8, .3);
+ var groundGeometry = new THREE.BoxGeometry(1000, 1, 1000);
+ var groundMaterial = Physijs.createMaterial(new THREE.MeshBasicMaterial({ color: 0xdadada }), 1, .6);
var ground = new Physijs.BoxMesh(groundGeometry, groundMaterial, 0);
scene.add(ground);
ground.receiveShadow = true;
@@ -279,8 +310,10 @@ var Game = (function () {
this.player = new Player();
this.world = new World(this.player, this.scene, this.camera);
//init camera
- this.camera.position.set(5, 5, 5);
+ this.camera.position.addVectors(this.player.position, this.player.camera);
this.camera.lookAt(this.player.position);
+ this.playerDirection = new THREE.ArrowHelper(this.player.direction.clone().normalize(), this.player.position, 5);
+ this.scene.add(this.playerDirection);
this.state = GameState.INITIALIZED;
};
Game.prototype.onWindowResize = function () {
@@ -303,25 +336,35 @@ var Game = (function () {
//console.log("tick " + delta);
this.ticks++;
this.keyboard.update();
+ this.camera.position.addVectors(this.player.position, this.player.camera);
+ if (this.mouse.xMovement != 0) {
+ this.camera.lookAt(this.player.position);
+ this.player.direction.applyAxisAngle(this.player.upward, -this.mouse.xMovement / 180);
+ this.player.camera.applyAxisAngle(this.player.upward, -this.mouse.xMovement / 180);
+ this.playerDirection.setDirection(this.player.direction);
+ }
+ var forward = this.player.direction.clone();
+ forward.setLength(this.player.speed);
+ var right = this.player.direction.clone().cross(this.player.upward);
+ right.setLength(this.player.speed);
if (this.keyboard.pressed("W")) {
- this.player.applyCentralForce(new Vector3(0, 0, -10));
+ this.player.applyCentralForce(forward);
}
if (this.keyboard.pressed("S")) {
- this.player.applyCentralForce(new Vector3(0, 0, 10));
- }
- if (this.keyboard.pressed("A")) {
- this.player.applyCentralForce(new Vector3(-10, 0, 0));
+ this.player.applyCentralForce(forward.negate());
}
if (this.keyboard.pressed("D")) {
- this.player.applyCentralForce(new Vector3(10, 0, 0));
+ this.player.applyCentralForce(right);
+ }
+ if (this.keyboard.pressed("A")) {
+ this.player.applyCentralForce(right.negate());
}
if (this.keyboard.down("space")) {
console.log("jump");
this.player.jump();
}
- //this.camera.lookAt(this.player.position);
- this.camera.position.addVectors(this.player.position, new Vector3(5, 5, 5));
- this.scene.simulate(undefined, 20);
+ // console.log(this.camera.position.addVectors(this.player.position, this.player.camera));
+ this.scene.simulate(undefined, 2);
};
Game.prototype.run = function (timestamp) {
var _this = this;
diff --git a/game.js.map b/game.js.map
index 57f25bc..2e760c2 100644
--- a/game.js.map
+++ b/game.js.map
@@ -1 +1 @@
-{"version":3,"file":"game.js","sourceRoot":"","sources":["game.ts"],"names":[],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"game.js","sourceRoot":"","sources":["game.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/game.ts b/game.ts
index 6d7b3f8..f9e4486 100644
--- a/game.ts
+++ b/game.ts
@@ -114,38 +114,38 @@ class Keyboard {
}
}
- onKeyDown(event) {
+ onKeyDown = (event:KeyboardEvent) => {
var key = Keyboard.keyName(event.keyCode);
if (!this.status[key])
this.status[key] = {down: false, pressed: false, up: false, updatedPreviously: false};
- }
+ };
- onKeyUp(event) {
+ onKeyUp = (event:KeyboardEvent) => {
var key = Keyboard.keyName(event.keyCode);
if (this.status[key])
this.status[key].pressed = false;
- }
+ };
- down(key) {
+ down(key):boolean {
return (this.status[key] && this.status[key].down);
}
- pressed(key) {
+ pressed(key):boolean {
return (this.status[key] && this.status[key].pressed);
}
- up(key) {
+ up(key):boolean {
return (this.status[key] && this.status[key].up);
}
register() {
- document.addEventListener("keydown", (event) => this.onKeyDown(event), false);
- document.addEventListener("keyup", (event) => this.onKeyUp(event), false);
+ document.addEventListener("keydown", this.onKeyDown, false);
+ document.addEventListener("keyup", this.onKeyUp, false);
}
unregister() {
- document.removeEventListener("keydown", (event) => this.onKeyDown(event), false);
- document.removeEventListener("keyup", (event) => this.onKeyUp(event), false);
+ document.removeEventListener("keydown", this.onKeyDown, false);
+ document.removeEventListener("keyup", this.onKeyUp, false);
}
static keyName(keyCode) {
@@ -155,65 +155,99 @@ class Keyboard {
}
}
+enum MouseButton{
+ LEFT,
+ RIGHT,
+ MIDDLE
+}
+
class Mouse {
x:number;
y:number;
- xMovement:number;
- yMovement:number;
- private buttons: {};
+ xMovement:number = 0;
+ yMovement:number = 0;
+ private buttons = {};
constructor() {
}
- onMouseMove = (event: MouseEvent) => {
+ onMouseMove = (event:MouseEvent) => {
this.x = event.screenX;
this.xMovement = event.movementX;
this.y = event.screenY;
this.yMovement = event.movementY;
- console.log(this.x + " " + this.y + " :: " + this.xMovement + " " + this.yMovement);
+// console.log(this.x + " " + this.y + " :: " + this.xMovement + " " + this.yMovement);
+ };
+
+ onMouseDown = (event:MouseEvent) => {
+ this.buttons[event.button] = true;
+ };
+
+ onMouseUp = (event:MouseEvent) => {
+ this.buttons[event.button] = false;
};
+ pressed(button:MouseButton):boolean {
+ return this.buttons[button];
+ }
+
register() {
document.addEventListener("mousemove", this.onMouseMove, false);
+ document.addEventListener("mousedown", this.onMouseDown, false);
+ document.addEventListener("mouseup", this.onMouseUp, false);
}
unregister() {
document.removeEventListener("mousemove", this.onMouseMove, false);
+ document.removeEventListener("mousedown", this.onMouseDown, false);
+ document.removeEventListener("mouseup", this.onMouseUp, false);
}
+
}
class Morph extends Physijs.SphereMesh {
+ static levels:number[] = [4, 6, 12, 20];
- constructor(public faces:number, material?:THREE.Material, mass?:number) {
- super(Morph.generateGeometry(faces), material, mass);
+
+ constructor(public level:number, material?:THREE.Material, mass?:number) {
+ super(Morph.generateGeometry(level), material, mass);
}
- static generateGeometry(numFaces:number):THREE.Geometry {
- if (numFaces == 4) {
- return new THREE.TetrahedronGeometry();
- } else if (numFaces == 6) {
- return new THREE.BoxGeometry(1, 1, 1, 2, 2, 2);
- } else if (numFaces == 12) {
- return new THREE.DodecahedronGeometry(1, 0);
- } else if (numFaces == 20) {
- return new THREE.IcosahedronGeometry(1, 0);
+ static generateGeometry(level:number):THREE.Geometry {
+ let numFaces = Morph.levels[level];
+
+ switch (numFaces) {
+ case 4:
+ return new THREE.TetrahedronGeometry();
+ case 6:
+ return new THREE.BoxGeometry(1, 1, 1, 1, 1, 1);
+ case 12:
+ return new THREE.DodecahedronGeometry(1, 0);
+ case 20:
+ return new THREE.IcosahedronGeometry(1, 0);
+ default:
+ return new THREE.TetrahedronGeometry();
}
- return null;
}
- private updateGeometry(numFaces:number) {
- this.faces = numFaces;
- this.geometry = Morph.generateGeometry(this.faces);
+ private updateGeometry() {
+ this.geometry = Morph.generateGeometry(this.level);
}
- shrink(numFaces:number):void {
- this.updateGeometry(this.faces - numFaces);
+ shrink():void {
+ if (this.level > 1) {
+ this.level--;
+ this.updateGeometry();
+ }
}
- grow(numFaces:number):void {
- this.updateGeometry(this.faces + numFaces);
+ grow():void {
+ if (this.level < 3) {
+ this.level++;
+ this.updateGeometry();
+ }
}
}
@@ -221,12 +255,12 @@ class Morph extends Physijs.SphereMesh {
class Enemy extends Morph {
constructor() {
- super(6, Physijs.createMaterial(
+ super(0, Physijs.createMaterial(
new THREE.MeshBasicMaterial({
color: 0xb02000
}),
.8,
- .3
+ .6
), 2);
}
@@ -244,20 +278,27 @@ class Enemy extends Morph {
}
class Player extends Morph {
+ minus:number;
+ plus:number;
+ life:number;
+ direction:Vector3 = new Vector3(0, 0, -1);
+ upward:Vector3 = new Vector3(0, 1, 0);
+ camera:Vector3 = new Vector3(0, 10, 10);
+ speed:number = 15;
constructor() {
- super(20, Physijs.createMaterial(
+ super(1, Physijs.createMaterial(
new THREE.MeshBasicMaterial({
color: 0x00a0b0
}),
.8,
- .3
- ), 1);
+ .6
+ ), 0.5);
}
jump() {
- this.applyCentralImpulse(new Vector3(0, 20, 0));
+ this.applyCentralImpulse(new Vector3(0, 8, 0));
}
/*
@@ -305,11 +346,11 @@ class World {
scene.add(light);
- let groundGeometry = new THREE.BoxGeometry(100, 1 ,100);
+ let groundGeometry = new THREE.BoxGeometry(1000, 1, 1000);
let groundMaterial = Physijs.createMaterial(
- new THREE.MeshBasicMaterial({color: 0xeaeaea}),
- .8,
- .3
+ new THREE.MeshBasicMaterial({color: 0xdadada}),
+ 1,
+ .6
);
let ground = new Physijs.BoxMesh(groundGeometry, groundMaterial, 0);
@@ -333,6 +374,7 @@ class Game {
camera:THREE.PerspectiveCamera;
scene:Physijs.Scene;
player:Player;
+ playerDirection: THREE.ArrowHelper;
world:World;
state:GameState;
@@ -371,15 +413,19 @@ class Game {
init():void {
//init world
this.scene = new Physijs.Scene;
- this.scene.setGravity(new THREE.Vector3( 0, -10, 0 ));
+ this.scene.setGravity(new THREE.Vector3(0, -10, 0));
this.player = new Player();
this.world = new World(this.player, this.scene, this.camera);
//init camera
- this.camera.position.set(5, 5, 5);
+ this.camera.position.addVectors(this.player.position, this.player.camera);
this.camera.lookAt(this.player.position);
+
+ this.playerDirection = new THREE.ArrowHelper(this.player.direction.clone().normalize(), this.player.position, 5);
+ this.scene.add(this.playerDirection);
+
this.state = GameState.INITIALIZED;
}
@@ -407,26 +453,83 @@ class Game {
//console.log("tick " + delta);
this.ticks++;
this.keyboard.update();
+
+ this.camera.position.addVectors(this.player.position, this.player.camera);
+
+
+ if (this.mouse.xMovement != 0) {
+ this.camera.lookAt(this.player.position);
+ this.player.direction.applyAxisAngle(this.player.upward, -this.mouse.xMovement / 180);
+ this.player.camera.applyAxisAngle(this.player.upward, -this.mouse.xMovement / 180);
+ this.playerDirection.setDirection(this.player.direction);
+
+ /* //Please nobody look at this. I am dumb...
+
+ //this.player.camera -> relative position of camera to player
+ //to get rotation, just negate and normalize
+ let dir = this.player.camera.clone().negate().normalize();
+ let newCamera = this.player.camera.clone().applyAxisAngle(new Vector3(0, 1, 0), -this.mouse.xMovement / 180);
+ let up = this.camera.up.clone().add(this.player.camera).applyAxisAngle(this.player.upward, -this.mouse.xMovement / 180).sub(newCamera);
+ let quatr = new THREE.Quaternion().setFromUnitVectors(new Vector3(0, 0, -1), dir);
+ //this.camera.rotateY(this.mouse.xMovement / 180);
+ //this.camera.up.copy(new Vector3(0,1,0));
+ //this.camera.rotation.setFromQuaternion(quatr);
+
+ this.player.direction.applyAxisAngle(new Vector3(0, 1, 0), this.mouse.xMovement / 180);
+ this.player.camera.copy(newCamera);
+ this.camera.lookAt(this.player.position);
+ console.log("A " + this.camera.up.toArray().toString() + " || " + this.camera.rotation.toArray().toString());
+ //this.camera.up.copy(new Vector3(0,1,0));
+
+ console.log("B " + this.camera.up.toArray().toString() + " || " + this.camera.rotation.toArray().toString());
+
+ //this.camera.up.copy(up);
+ //this.camera.rotation.setFromQuaternion(quatr);
+
+ let look = this.player.camera.clone().negate().normalize();
+ let right = this.player.direction.clone().cross(this.player.upward).normalize();
+ let angle = this.player.camera.angleTo(this.player.direction);
+ let camUp = this.player.upward.clone().applyAxisAngle(right, -angle);
+
+ this.camera.rotation.copy(
+ new THREE.Euler().setFromVector3(look));
+ this.camera.up.copy(camUp);
+ //rotate tis.player.upward around
+ this.camera.lookAt(this.player.position);
+ console.log(this.camera.rotation);
+ console.log(this.camera.quaternion);
+ //this.camera.rotationAutoUpdate = true;
+ this.camera.quaternion.setFromUnitVectors(new Vector3(0,0,-1), look);
+ this.camera.up.copy(this.player.upward);
+ */
+ }
+
+ let forward = this.player.direction.clone();
+ forward.setLength(this.player.speed);
+ let right = this.player.direction.clone().cross(this.player.upward);
+ right.setLength(this.player.speed);
+
if (this.keyboard.pressed("W")) {
- this.player.applyCentralForce(new Vector3(0, 0, -10));
+ this.player.applyCentralForce(forward);
}
if (this.keyboard.pressed("S")) {
- this.player.applyCentralForce(new Vector3(0, 0, 10));
- }
- if (this.keyboard.pressed("A")) {
- this.player.applyCentralForce(new Vector3(-10, 0, 0));
+ this.player.applyCentralForce(forward.negate());
}
if (this.keyboard.pressed("D")) {
- this.player.applyCentralForce(new Vector3(10, 0, 0));
+ this.player.applyCentralForce(right);
}
- if(this.keyboard.down("space")){
+ if (this.keyboard.pressed("A")) {
+ this.player.applyCentralForce(right.negate());
+ }
+
+ if (this.keyboard.down("space")) {
console.log("jump");
this.player.jump();
}
- //this.camera.lookAt(this.player.position);
- this.camera.position.addVectors(this.player.position, new Vector3(5,5,5));
- this.scene.simulate(undefined, 20);
+
+// console.log(this.camera.position.addVectors(this.player.position, this.player.camera));
+ this.scene.simulate(undefined, 2);
}
run(timestamp?):void {
diff --git a/index.html b/index.html
index fe890c6..6d9e800 100644
--- a/index.html
+++ b/index.html
@@ -5,8 +5,8 @@
<title>Transmuto</title>
<link rel="stylesheet" type="text/css" href="index.css"/>
<script type="text/javascript" src="three_js/dist/three.min.js"></script>
+ <!-- <script type="text/javascript" src="three_js/dist/three.js"></script> -->
<script type="text/javascript" src="three_js/dist/Detector.js"></script>
- <script type="text/javascript" src="three_js/dist/PointerLockControls.js"></script>
<script type="text/javascript" src="physi_js/physi.js"></script>
</head>
<body>