From 40d66dd5db12121bf5fee5ce108c8eab44148e8f Mon Sep 17 00:00:00 2001 From: -=yb4f310 Date: Mon, 15 Jan 2018 18:37:59 +0100 Subject: [PATCH] scene render camera back --- src/game-lib-d3-api-scene.js | 100 +++------------------------------ src/game-lib-d3-scene.js | 33 ++++------- src/game-lib-d3-texture.js | 102 ++++++++++++++++++---------------- src/game-lib-system-gui.js | 2 +- src/game-lib-system-render.js | 4 ++ 5 files changed, 78 insertions(+), 163 deletions(-) diff --git a/src/game-lib-d3-api-scene.js b/src/game-lib-d3-api-scene.js index 31305eb..ced3847 100644 --- a/src/game-lib-d3-api-scene.js +++ b/src/game-lib-d3-api-scene.js @@ -12,6 +12,7 @@ * @param showAxis * @param gridSize * @param gridColor + * @param camera - this overrides the renderer camera * @param parentEntity * @constructor */ @@ -28,6 +29,7 @@ GameLib.D3.API.Scene = function( showAxis, gridSize, gridColor, + camera, parentEntity ) { @@ -91,6 +93,11 @@ GameLib.D3.API.Scene = function( } this.gridColor = gridColor; + if (GameLib.Utils.UndefinedOrNull(camera)) { + camera = null; + } + this.camera = camera; + GameLib.API.Component.call( this, GameLib.Component.SCENE, @@ -100,95 +107,4 @@ GameLib.D3.API.Scene = function( }; GameLib.D3.API.Scene.prototype = Object.create(GameLib.API.Component.prototype); -GameLib.D3.API.Scene.prototype.constructor = GameLib.D3.API.Scene; - -/** - * Returns an API scene from an Object scene - * @param objectScene - * @constructor - */ -GameLib.D3.API.Scene.FromObject = function(objectScene) { - - var apiMeshes = []; - var apiLights = []; - var apiTextures = []; - var apiMaterials = []; - var apiImages = []; - - if (objectScene.meshes) { - apiMeshes = objectScene.meshes.map( - function(objectMesh) { - if (objectMesh instanceof Object){ - return GameLib.D3.API.Mesh.FromObject(objectMesh); - } else { - return objectMesh; - } - } - ) - } - - if (objectScene.lights) { - apiLights = objectScene.lights.map( - function(objectLight) { - if (objectLight instanceof Object) { - return GameLib.D3.API.Light.FromObject(objectLight); - } else { - return objectLight; - } - } - ) - } - - if (objectScene.textures) { - apiTextures = objectScene.textures.map( - function(objectTexture) { - if (objectTexture instanceof Object) { - return GameLib.D3.API.Texture.FromObject(objectTexture) - } else { - return objectTexture; - } - } - ) - } - - if (objectScene.materials) { - apiMaterials = objectScene.materials.map( - function(objectMaterial) { - if (objectMaterial instanceof Object) { - return GameLib.D3.API.Material.FromObject(objectMaterial) - } else { - return objectMaterial; - } - } - ) - } - - if (objectScene.images) { - apiImages = objectScene.images.map( - function(objectImage) { - if (objectImage instanceof Object) { - return GameLib.API.Image.FromObject(objectImage) - } else { - return objectImage; - } - } - ) - } - - return new GameLib.D3.API.Scene( - objectScene.id, - objectScene.name, - apiMeshes, - apiLights, - apiTextures, - apiMaterials, - apiImages, - objectScene.fog, - objectScene.showGrid, - objectScene.showAxis, - objectScene.gridSize, - GameLib.API.Color.FromObject(objectScene.gridColor), - objectScene.parentEntity - ); - -}; +GameLib.D3.API.Scene.prototype.constructor = GameLib.D3.API.Scene; \ No newline at end of file diff --git a/src/game-lib-d3-scene.js b/src/game-lib-d3-scene.js index faa35dd..a383b3e 100644 --- a/src/game-lib-d3-scene.js +++ b/src/game-lib-d3-scene.js @@ -30,6 +30,7 @@ GameLib.D3.Scene = function ( apiScene.showAxis, apiScene.gridSize, apiScene.gridColor, + apiScene.camera, apiScene.parentEntity ); @@ -124,6 +125,13 @@ GameLib.D3.Scene = function ( this ); + if (this.camera instanceof GameLib.D3.API.Camera) { + this.camera = new GameLib.D3.Camera( + this.graphics, + this.camera + ) + } + /** * Runtime scenes have helpers (just used to store which helper belongs to which scene) * @type {Array} @@ -146,7 +154,8 @@ GameLib.D3.Scene = function ( 'textures' : [GameLib.D3.Texture], 'materials' : [GameLib.D3.Material], 'images' : [GameLib.Image], - 'fog' : GameLib.D3.Fog + 'fog' : GameLib.D3.Fog, + 'camera' : GameLib.D3.Camera } ); }; @@ -302,7 +311,6 @@ GameLib.D3.Scene.prototype.updateInstance = function(property) { } else { this.removeAxis(); } - } }; @@ -374,30 +382,11 @@ GameLib.D3.Scene.prototype.toApiObject = function() { this.showAxis, this.gridSize, this.gridColor.toApiObject(), + GameLib.Utils.IdOrNull(this.camera), GameLib.Utils.IdOrNull(this.parentEntity) ); }; -/** - * Converts a scene Object to a GameLib.D3.Scene object - * @param graphics GameLib.GraphicsRuntime - * @param objectScene Object - * @returns {GameLib.D3.Scene} - * @constructor - */ -GameLib.D3.Scene.FromObject = function( - graphics, - objectScene -) { - var apiScene = GameLib.D3.API.Scene.FromObject(objectScene); - - return new GameLib.D3.Scene( - graphics, - apiScene - ); -}; - - /** * Adds a mesh to the scene * @param object GameLib.D3.Mesh diff --git a/src/game-lib-d3-texture.js b/src/game-lib-d3-texture.js index cadb3d4..bdb8cec 100644 --- a/src/game-lib-d3-texture.js +++ b/src/game-lib-d3-texture.js @@ -211,55 +211,61 @@ GameLib.D3.Texture.prototype.updateInstance = function(property) { throw new Error('need to specify a property'); } - if (property === 'image') { + if ( + property === 'textureType' || + property === 'image' + ) { + this.createInstance(); + // } + // + // if (property === 'image') { - if (this.textureType === GameLib.D3.API.Texture.TEXTURE_TYPE_NORMAL) { - - if ( - GameLib.Utils.UndefinedOrNull(this.image) && - this.instance.image - ) { - try { - this.createInstance(); - } catch (error) { - console.error(error); - } - } - - if (this.image && this.image.instance && this.instance.image !== this.image.instance) { - try { - this.createInstance(); - } catch (error) { - console.error(error); - } - } - - } else if (this.textureType === GameLib.D3.API.Texture.TEXTURE_TYPE_CANVAS) { - - if ( - GameLib.Utils.UndefinedOrNull(this.canvas) && - this.instance.canvas - ) { - try { - this.createInstance(); - } catch (error) { - console.error(error); - } - } - - if (this.canvas && this.canvas.instance && this.instance.image !== this.canvas.instance) { - try { - this.createInstance(); - } catch (error) { - console.error(error); - } - } - - } else if (this.textureType === GameLib.D3.API.Texture.TEXTURE_TYPE_CUBE) { - - console.log('todo : cube images change check here'); - - } + // if (this.textureType === GameLib.D3.API.Texture.TEXTURE_TYPE_NORMAL) { + // + // if ( + // GameLib.Utils.UndefinedOrNull(this.image) && + // this.instance.image + // ) { + // try { + // this.createInstance(); + // } catch (error) { + // console.error(error); + // } + // } + // + // if (this.image && this.image.instance && this.instance.image !== this.image.instance) { + // try { + // this.createInstance(); + // } catch (error) { + // console.error(error); + // } + // } + // + // } else if (this.textureType === GameLib.D3.API.Texture.TEXTURE_TYPE_CANVAS) { + // + // if ( + // GameLib.Utils.UndefinedOrNull(this.canvas) && + // this.instance.canvas + // ) { + // try { + // this.createInstance(); + // } catch (error) { + // console.error(error); + // } + // } + // + // if (this.canvas && this.canvas.instance && this.instance.image !== this.canvas.instance) { + // try { + // this.createInstance(); + // } catch (error) { + // console.error(error); + // } + // } + // + // } else if (this.textureType === GameLib.D3.API.Texture.TEXTURE_TYPE_CUBE) { + // + // console.log('todo : cube images change check here'); + // } this.publish( GameLib.Event.IMAGE_CHANGED, diff --git a/src/game-lib-system-gui.js b/src/game-lib-system-gui.js index f027664..7836d76 100644 --- a/src/game-lib-system-gui.js +++ b/src/game-lib-system-gui.js @@ -1422,7 +1422,7 @@ GameLib.System.GUI.prototype.buildControl = function(folder, componentTemplate, property === 'width' || property === 'height' ) { - controllers.push(folder.add(object, property, 0, 1, 0.001)); + controllers.push(folder.add(object, property, 0, 1000, 0.001)); } else if ( property === 'depth' || property === 'radius' diff --git a/src/game-lib-system-render.js b/src/game-lib-system-render.js index 5747061..c858cba 100644 --- a/src/game-lib-system-render.js +++ b/src/game-lib-system-render.js @@ -250,6 +250,10 @@ GameLib.System.Render.prototype.render = function(data) { var camera = renderer.camera; + if (scene.camera && scene.camera.instance) { + camera = scene.camera; + } + if (renderer.renderMode === GameLib.D3.API.Renderer.MODE_EDIT) { if (!renderer.editCamera || !renderer.editCamera.instance) {