123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- 'use strict';
-
- var ctxSettings = {};
- ctxSettings.alpha = true;
- ctxSettings.preserveDrawingBuffer = true;
- var app = new v3d.App('container', ctxSettings, null);
- app.clearBkgOnLoad = true;
- app.renderer.setClearColor(0x000000, 0);
- app.renderCallbacks.push(renderCb);
- app.compileCallbacks.push(compileCb);
- var pause = false, loading = false;
-
- function compileCb(){
- dof(0.0,200, 0.025, 1);
- bloom(7.5, 0.2, 0.4);
- }
-
- var controllerMatrix;
-
- app.loadScene('PlayerCharacter.gltf', function() {
- app.run();
-
- //app.enableControls();
- controllerCam = app.scene.children.find(controllerCam => controllerCam.name == 'ControllerCam');
- playerCharacter = app.scene.children.find(playerCharacter => playerCharacter.name == "PlayerRig");
-
-
- switchField('s1', 'f1', 'sp1');
- mainMenu = false;
- });
-
- $('document').ready(function(){
- // switchField('s1', 'f1', 'sp1');
- // mainMenu = false;
- });
-
-
- //var movingLeft, movingRight, movingUp, movingDown;
- let mainMenu = true;
- var playerCharacter;
- var controllerCam;
- var upDirector;
- var groundPlane;
- var fieldScene, fieldCollider, fieldPortals, fieldCamera;
- var movementSpeed = 0.05;
- let PI = 3.1416;
- //var finishedLoading = false;
-
- var playerPosition = new v3d.Vector3();
- var nextPosition = new v3d.Vector3();
-
- var colliderBoxes = [];
- var portalBoxes = [];
-
- function collides(vector){
- /*
- for(var i = 0; i < portalBoxes.length; i++){
- if(portalBoxes[i].containsPoint(vector)){
- var target = fieldPortals[i].userData.v3d.customProps.target.split(/[$-/:-?{-~!"^_`\[\]]/gi);
- console.log(target[0] + " " + target[1] + " " + target[2]);
- if(!loading){
- switchField(target[0], target[1], target[2]);
- return false;
- }
- }
- }
- */
- var collides = false;
- colliderBoxes.forEach(function(box){
- if(box.containsPoint(vector)){
- collides = true;
- }
- });
- return collides;
- }
-
- function renderCb(){
- if(playerCharacter != undefined){
- playerPosition.set(playerCharacter.position.x, playerCharacter.position.y-1.75, playerCharacter.position.z);
- //if(finishedLoading){
- for(var i = 0; i < portalBoxes.length; i++){
- if(portalBoxes[i].containsPoint(playerPosition) && !loading){
- loading = true;
- var target = fieldPortals[i].userData.v3d.customProps.target.split(/[$-/:-?{-~!"^_`\[\]]/gi);
- console.log(target[0] + " " + target[1] + " " + target[2]);
- switchField(target[0], target[1], target[2]);
- //finishedLoading = false;
- //return false;
- }
- }
- }
- }
-
- function switchField(scene, field, spawnpoint) {
- //pause = true;
-
-
- if(app.controls != undefined){
- app.controls.dispose();
- //app.unload(app.camera);
- }
-
- //controllerCam.position.set(0,1.75,0);
- //controllerCam.applyMatrix4(controllerMatrix);
- //playerCharacter
-
- var fieldName = scene + field;
- var fieldURI = "scenes/" + fieldName + "/" + fieldName + ".gltf";
- var bgimageURI = "scenes/" + fieldName + "/" + fieldName + "_bg.png";
-
- if(fieldScene != undefined){
- app.setCamera(controllerCam);
- app.unload(fieldScene);
- }
-
- app.appendScene(fieldURI, function(){
- $("#container").css("background-image", "url(" + bgimageURI + ")");
- $('#overlay').hide();
-
- fieldScene = app.scene.children.find(fieldScene => fieldScene.name == 'Scene');
-
- groundPlane = fieldScene.children.find(groundPlane => groundPlane.name == 'Ground');
-
- console.log(fieldScene);
-
- fieldCollider = fieldScene.children.filter(fieldCollider => fieldCollider.groupNames.includes('Collider'));
- colliderBoxes = [];
- for (let i = 0; i < fieldCollider.length; i++) {
- colliderBoxes.push(new v3d.Box3());
- colliderBoxes[i].copy(fieldCollider[i].geometry.boundingBox).applyMatrix4(fieldCollider[i].matrixWorld);
- }
-
- fieldPortals = fieldScene.children.filter(fieldPortals => fieldPortals.groupNames.includes('Portals'));
- portalBoxes = [];
- for (let i = 0; i < fieldPortals.length; i++) {
- portalBoxes.push(new v3d.Box3());
- portalBoxes[i].copy(fieldPortals[i].geometry.boundingBox).applyMatrix4(fieldPortals[i].matrixWorld);
- }
-
-
- fieldCamera = fieldScene.children.find(fieldCamera => fieldCamera.name == 'Camera');
- app.setCamera(fieldCamera);
-
- let spawnPoint = fieldScene.children.find(spawnPoint => spawnPoint.name == scene + "_" + field + "_" + spawnpoint);
- //alles superkacke hier :D
- controllerCam.position.set(0,1.75,0);
- controllerCam.setRotationFromMatrix(spawnPoint.matrix);
- playerCharacter.setRotationFromMatrix(spawnPoint.matrix);
- controllerCam.applyMatrix4(spawnPoint.matrix);
-
- app.enableControls();
- app.controls.object = controllerCam;
- loading = false;
-
- }, fieldLoadProgress, fieldLoadError, true, true);
- }
-
- function fieldLoadProgress(progress){
- //console.log(progress);
- $('#overlay').show().css('background-color', 'rgba(0,0,0,' + progress / 100 + ')');
- }
- function fieldLoadError(error){
- console.log("Error loading Field, dumping: " + error);
- }
-
-
- var cube;
-
- document.addEventListener('keydown', function(event){
-
- if(mainMenu){
- /*
- if(event.key == 'Enter'){
- switchField('s1', 'f1', 'sp1');
- mainMenu = false;
- }
- */
- } else {
- /*
- if(event.key == 'Enter'){
- switchField('s1', 'f1', 'sp1');
- }
- if(event.key == 'p'){
- pause = !pause;
- }
-
- if(event.key == '1'){
- switchField('s1', 'f1', 'sp1');
- }
- if(event.key == '2'){
- switchField('s1', 'f2', 'sp1');
- }
- if(event.key == '3'){
- switchField('s1', 'f3', 'sp1');
- }
- if(event.key == '4'){
- switchField('s1', 'f4', 'sp1');
- }
- if(event.key == '5'){
- switchField('s1', 'f5', 'sp1');
- }
- */
-
- if(event.key == 'ArrowUp'){
- playerCharacter.rotation.y = PI * 2;
- }
- if(event.key == 'ArrowDown'){
- playerCharacter.rotation.y = PI;
- }
- if(event.key == 'ArrowLeft'){
- playerCharacter.rotation.y = PI / 2;
- }
- if(event.key == 'ArrowRight'){
- playerCharacter.rotation.y = PI + PI / 2;
- }
-
- }
- });
-
- document.addEventListener('keyup', function(event){
-
- });
-
- function dof(focus, aperture, maxblur, depthLeakThreshold) {
- app.enablePostprocessing([{
- type: 'dof',
- focus: focus,
- aperture: aperture,
- maxblur: maxblur,
- depthLeakThreshold: depthLeakThreshold
- }]);
- }
- function bloom(threshold, strength, radius) {
- app.enablePostprocessing([{
- type: 'bloom',
- threshold: threshold,
- strength: strength,
- radius: radius
- }]);
- }
|