Skip to content

Commit

Permalink
Initial dev
Browse files Browse the repository at this point in the history
  • Loading branch information
adriann-telenav committed Dec 22, 2017
1 parent eaedc94 commit 395929c
Show file tree
Hide file tree
Showing 13 changed files with 220 additions and 55 deletions.
55 changes: 28 additions & 27 deletions .angular-cli.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,37 @@
"project": {
"name": "bomberman3d"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"styles.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
"apps": [{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"../node_modules/normalize.css/normalize.css",
"styles.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
],
}],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"lint": [
{
"lint": [{
"project": "src/tsconfig.app.json"
},
{
Expand All @@ -53,5 +51,8 @@
"defaults": {
"styleExt": "css",
"component": {}
},
"warnings": {
"typescriptMismatch": false
}
}
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"editor.tabSize": 2,
}
44 changes: 22 additions & 22 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,35 @@
},
"private": true,
"dependencies": {
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"@angular/common": "^5.1.2",
"@angular/compiler": "^5.1.2",
"@angular/core": "^5.1.2",
"@angular/forms": "^5.1.2",
"@angular/http": "^5.1.2",
"@angular/platform-browser": "^5.1.2",
"@angular/platform-browser-dynamic": "^5.1.2",
"@angular/router": "^5.1.2",
"core-js": "^2.4.1",
"rxjs": "^5.1.0",
"zone.js": "^0.8.4"
},
"devDependencies": {
"@angular/cli": "1.0.1",
"@angular/compiler-cli": "^4.0.0",
"@types/jasmine": "2.5.38",
"@types/node": "~6.0.60",
"codelyzer": "~2.0.0",
"jasmine-core": "~2.5.2",
"jasmine-spec-reporter": "~3.2.0",
"karma": "~1.4.1",
"karma-chrome-launcher": "~2.0.0",
"@angular/cli": "1.6.2",
"@angular/compiler-cli": "^5.1.2",
"@types/jasmine": "2.8.2",
"@types/node": "~8.5.2",
"codelyzer": "~4.0.2",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "~1.0.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-coverage-istanbul-reporter": "^0.2.0",
"protractor": "~5.1.0",
"ts-node": "~2.0.0",
"tslint": "~4.5.0",
"typescript": "~2.2.0"
"karma-coverage-istanbul-reporter": "^1.3.0",
"protractor": "~5.2.2",
"ts-node": "~4.0.2",
"tslint": "~5.8.0",
"typescript": "~2.6.2"
}
}
17 changes: 17 additions & 0 deletions src/app/app.component.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
html,
body {
overflow: hidden;
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
}

#renderCanvas {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
touch-action: none;
}
4 changes: 1 addition & 3 deletions src/app/app.component.html
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
<h1>
{{title}}
</h1>
<canvas id="renderCanvas"></canvas>
21 changes: 18 additions & 3 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
import { Component } from '@angular/core';
import { Component, AfterViewInit } from '@angular/core';
import { IGameRenderer, GameRenderer } from './shared/engine';

import { IBaseModel, Character } from './shared/engine/models';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
export class AppComponent implements AfterViewInit {
private _game: IGameRenderer
private _currentCharacter: IBaseModel;
ngAfterViewInit() {
this._game = new GameRenderer('renderCanvas');
this._game.createScene();

this._game.animate();
this.createTestGame();
}

createTestGame() {
this._currentCharacter = new Character(this._game, 'currentCharacter', '/assets/Rabbit/', 'Rabbit.babylon');
}
}
15 changes: 15 additions & 0 deletions src/app/shared/engine/GameRenderer.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import {
Engine, Scene, FollowCamera, Light,
Vector3, HemisphericLight, MeshBuilder
} from 'babylonjs';

export interface IGameRenderer {
createScene();
getScene(): Scene;
getCamera();

getShadowGenerator();

animate();

}
63 changes: 63 additions & 0 deletions src/app/shared/engine/GameRenderer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import {
Engine, Scene, FollowCamera, Light, DirectionalLight, IShadowLight,
Vector3, HemisphericLight, MeshBuilder, ShadowGenerator
} from 'babylonjs';


import { IGameRenderer } from './GameRenderer.interface';


export class GameRenderer implements IGameRenderer {
private _canvas: HTMLCanvasElement;
private _engine: Engine;
private _scene: Scene;
private _camera: FollowCamera;
private _light: IShadowLight;
private _shadowGenerator: ShadowGenerator;
constructor(canvasElement: string) {
this._canvas = <HTMLCanvasElement>document.getElementById(canvasElement);
this._engine = new Engine(this._canvas, true);
}

public createScene() {
this._scene = new Scene(this._engine);

this._camera = new FollowCamera('camera1', new Vector3(0, 5, -10), this._scene);

this._camera.attachControl(this._canvas, true);

this._light = new DirectionalLight('light1', new Vector3(0, 1, 0), this._scene);

const sphere = MeshBuilder.CreateSphere('sphere1', { segments: 16, diameter: 2 }, this._scene);
this._camera.lockedTarget = sphere;
this._shadowGenerator = new BABYLON.ShadowGenerator(1024, this._light);

sphere.position.y = 1;

const ground = MeshBuilder.CreateGround('ground1', { width: 6, height: 6, subdivisions: 2 }, this._scene);
}

public getScene(): Scene {
return this._scene;
}

public getCamera() {
return this._camera;
}

public getShadowGenerator() {

}

public animate() {
// run the render loop
this._engine.runRenderLoop(() => {
this._scene.render();
});

// the canvas/window resize event handler
window.addEventListener('resize', () => {
this._engine.resize();
});
}
}
2 changes: 2 additions & 0 deletions src/app/shared/engine/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './GameRenderer.interface';
export * from './GameRenderer';
6 changes: 6 additions & 0 deletions src/app/shared/engine/models/BaseModel.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export interface IBaseModel {
moveForward();
moveBackward();
rotateLeft(angle);
rotateRight(angle);
}
23 changes: 23 additions & 0 deletions src/app/shared/engine/models/BaseModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { IBaseModel } from './BaseModel.interface';
import { IGameRenderer } from '../';

export class BaseModel implements IBaseModel {
private _model = null;
protected _gameRenderer = null;
constructor(gameRenderer: IGameRenderer) {
this._gameRenderer = gameRenderer;
}

moveForward() {

}
moveBackward() {

}
rotateLeft(angle) {

}
rotateRight(angle) {

}
}
19 changes: 19 additions & 0 deletions src/app/shared/engine/models/Character.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { IGameRenderer } from '../';
import { BaseModel } from './BaseModel';

export class Character extends BaseModel {
constructor(gameRenderer: IGameRenderer, modelName: string, path: string, modelFileName: string) {
super(gameRenderer);
this._gameRenderer = gameRenderer;
const scene = gameRenderer.getScene();
BABYLON.SceneLoader.ImportMesh(modelName, path, modelFileName, scene,
function (newMeshes, particleSystems, skeletons) {
this._model = newMeshes[1];

this._model.scaling = new BABYLON.Vector3(0.4, 0.4, 0.4);
gameRenderer.getShadowGenerator().getShadowMap().renderList.push(this._model);

scene.beginAnimation(skeletons[0], 0, 100, true, 0.8);
});
}
}
3 changes: 3 additions & 0 deletions src/app/shared/engine/models/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './BaseModel.interface';
export * from './BaseModel';
export * from './Character';

0 comments on commit 395929c

Please sign in to comment.