diff --git a/src/art/artJS.js b/src/art/artJS.js index 565a40030b61d6b4b56c7fb7091256200b412ee2..cb90dab068849f33128ec2294d2772a48ee0ac75 100644 --- a/src/art/artJS.js +++ b/src/art/artJS.js @@ -211,17 +211,17 @@ App.Art.webglInitialize = function() { // load model/morphs/textures assets let sceneData = App.Art.sceneGetData(); // load default dictionary containing camera/light/morph/material values - let sceneParams = App.Art.sceneGetParams(); - sceneParams.lockView = false; - sceneParams.resetView = false; - sceneParams.faceView = true; + let scene = App.Art.sceneGetParams(); + scene.lockView = false; + scene.resetView = false; + scene.faceView = true; + scene.camera.xr = -6; + scene.camera.z = -275; + scene.camera.y = 127; + scene.camera.fov = 40; - sceneParams.camera.xr = -6; - sceneParams.camera.z = -275; - sceneParams.camera.y = 127; - sceneParams.camera.fov = 40; - - App.Art.defaultSceneParams = JSON.parse(JSON.stringify(sceneParams)); + App.Art.scenes = {}; + App.Art.defaultScene = JSON.parse(JSON.stringify(scene)); // start Webgl engine, textures are streamed asynchronously App.Art.engine = new App.Art.Engine(); @@ -259,20 +259,21 @@ App.Art.webglArtElement = function(slave, artSize) { container.innerText = "Loading..."; container.addEventListener("engineLoaded", function(e) { - // when engine is ready, attach default scene parameters to new slaves - if ((typeof slave.sceneParams == "undefined") || slave.sceneParams === "") { - slave.sceneParams = JSON.parse(JSON.stringify(App.Art.defaultSceneParams)); + // when engine is ready, attach default scene to new slaves + if (!(slave.ID in App.Art.scenes)) { + App.Art.scenes[slave.ID] = JSON.parse(JSON.stringify(App.Art.defaultScene)); } + let scene = App.Art.scenes[slave.ID]; // apply the model transforms - App.Art.applySurfaces(slave); - App.Art.applyMaterials(slave); - App.Art.applyMorphs(slave); + App.Art.applySurfaces(slave, scene); + App.Art.applyMaterials(slave, scene); + App.Art.applyMorphs(slave, scene); // draw on canvas and create UI container.innerText = ""; - let canvas = App.Art.createWebglUI(container, slave, artSize); - App.Art.engine.render(slave.sceneParams, canvas); + let canvas = App.Art.createWebglUI(container, slave, artSize, scene); + App.Art.engine.render(scene, canvas); }, true); container.addEventListener("engineFailed", function(e) { diff --git a/src/art/webgl/art.js b/src/art/webgl/art.js index 8bdc318c31891de569ec7ffac90d9feeb23749a1..f3a78a042584dc83f9dc28c560e81f41c535f08f 100644 --- a/src/art/webgl/art.js +++ b/src/art/webgl/art.js @@ -1,39 +1,39 @@ -App.Art.getMaterialById = function(sceneParams, id) { - for (let i =0; i < sceneParams.materials.length; i++) { - if(sceneParams.materials[i].matId === id) { - return sceneParams.materials[i]; +App.Art.getMaterialById = function(scene, id) { + for (let i =0; i < scene.materials.length; i++) { + if(scene.materials[i].matId === id) { + return scene.materials[i]; } } return null; }; -App.Art.getMorphById = function(sceneParams, id) { - for (let i =0; i < sceneParams.model.morphs.length; i++) { - if(sceneParams.model.morphs[i].morphId === id) { - return sceneParams.model.morphs[i]; +App.Art.getMorphById = function(scene, id) { + for (let i =0; i < scene.model.morphs.length; i++) { + if(scene.model.morphs[i].morphId === id) { + return scene.model.morphs[i]; } } return null; }; -App.Art.getSurfaceById = function(sceneParams, id) { - for (let i=0, count=0; i < sceneParams.model.figures.length; i++) { - for (let j=0; j < sceneParams.model.figures[i].surfaces.length; j++, count++) { - if(sceneParams.model.figures[i].surfaces[j].surfaceId === id) { - return sceneParams.model.figures[i].surfaces[j]; +App.Art.getSurfaceById = function(scene, id) { + for (let i=0, count=0; i < scene.model.figures.length; i++) { + for (let j=0; j < scene.model.figures[i].surfaces.length; j++, count++) { + if(scene.model.figures[i].surfaces[j].surfaceId === id) { + return scene.model.figures[i].surfaces[j]; } } } return null; }; -App.Art.resetMorphs = function(slave) { - for (let i =0; i < slave.sceneParams.model.morphs.length; i++) { - slave.sceneParams.model.morphs[i].value = App.Art.defaultSceneParams.model.morphs[i].value; +App.Art.resetMorphs = function(slave, scene) { + for (let i =0; i < scene.model.morphs.length; i++) { + scene.model.morphs[i].value = App.Art.defaultScene.model.morphs[i].value; } }; -App.Art.applySurfaces = function(slave) { +App.Art.applySurfaces = function(slave, scene) { let surfaces = []; if (slave.dick !== 0 || (!(slave.scrotum <= 0 || slave.balls <= 0))) { @@ -176,19 +176,18 @@ App.Art.applySurfaces = function(slave) { surfaces.push(["Genitalia", "matId", skin + "Genitalia"]); surfaces.push(["Anus", "matId", skin + "Anus"]); - let sceneParams = slave.sceneParams; - for (let i=0, count=0; i < sceneParams.model.figures.length; i++) { - for (let j=0; j < sceneParams.model.figures[i].surfaces.length; j++, count++) { + for (let i=0, count=0; i < scene.model.figures.length; i++) { + for (let j=0; j < scene.model.figures[i].surfaces.length; j++, count++) { for (let h =0; h < surfaces.length; h++) { - if (sceneParams.model.figures[i].surfaces[j].surfaceId === surfaces[h][0]) { - sceneParams.model.figures[i].surfaces[j][surfaces[h][1]] = surfaces[h][2]; + if (scene.model.figures[i].surfaces[j].surfaceId === surfaces[h][0]) { + scene.model.figures[i].surfaces[j][surfaces[h][1]] = surfaces[h][2]; } } } } }; -App.Art.applyMaterials = function(slave) { +App.Art.applyMaterials = function(slave, scene) { let materials = []; function hexToRgb(hex) { @@ -431,17 +430,16 @@ App.Art.applyMaterials = function(slave) { break; } - let sceneParams = slave.sceneParams; - for (let i =0; i < sceneParams.materials.length; i++) { + for (let i =0; i < scene.materials.length; i++) { for (let j =0; j < materials.length; j++) { - if (sceneParams.materials[i].matId === materials[j][0]) { - sceneParams.materials[i][materials[j][1]] = materials[j][2]; + if (scene.materials[i].matId === materials[j][0]) { + scene.materials[i][materials[j][1]] = materials[j][2]; } } } }; -App.Art.applyMorphs = function(slave) { +App.Art.applyMorphs = function(slave, scene) { let morphs = []; function convertRange(sourceMin, sourceMax, targetMin, targetMax, value) { @@ -573,7 +571,7 @@ App.Art.applyMorphs = function(slave) { morphs.push(["areolae", convertRange(0, 4, 0, 5, slave.areolae)]); morphs.push(["shoulders", convertRange(-2, 2, -1.5, 1.5, slave.shoulders)]); morphs.push(["lips", convertRange(0, 100, -1, 3, slave.lips)]); - slave.sceneParams.transform.scale = slave.height/175; // height by object transform + scene.transform.scale = slave.height/175; // height by object transform if (slave.muscles > 0) { morphs.push(["muscles", slave.muscles/50]); } @@ -619,13 +617,12 @@ App.Art.applyMorphs = function(slave) { morphs.push(["amputeeRightLeg", 1]); } - App.Art.resetMorphs(slave); + App.Art.resetMorphs(slave, scene); - let sceneParams = slave.sceneParams; - for (let i =0; i < sceneParams.model.morphs.length; i++) { + for (let i =0; i < scene.model.morphs.length; i++) { for (let j =0; j < morphs.length; j++) { - if (sceneParams.model.morphs[i].morphId === morphs[j][0]) { - sceneParams.model.morphs[i].value = morphs[j][1]; + if (scene.model.morphs[i].morphId === morphs[j][0]) { + scene.model.morphs[i].value = morphs[j][1]; } } } diff --git a/src/art/webgl/ui.js b/src/art/webgl/ui.js index 97842707f051e6f383f095b179785763780da80c..ee5c935d7548274931534ec39ed3c041ad57bec3 100644 --- a/src/art/webgl/ui.js +++ b/src/art/webgl/ui.js @@ -1,6 +1,6 @@ App.Art.isDraggingCanvas = false; -App.Art.createWebglUI = function(container, slave, artSize) { +App.Art.createWebglUI = function(container, slave, artSize, scene) { let lockViewDisabled = "resources/webgl/ui/lockViewDisabled.png"; let lockViewEnabled = "resources/webgl/ui/lockViewEnabled.png"; let faceViewDisabled = "resources/webgl/ui/faceViewDisabled.png"; @@ -19,76 +19,76 @@ App.Art.createWebglUI = function(container, slave, artSize) { let btnLockView = document.createElement("input"); btnLockView.setAttribute("style", "display: flex; width: 100%; position: relative; border: 0px; padding: 0px; background-color: transparent;"); btnLockView.setAttribute("type", "image"); - btnLockView.setAttribute("src", slave.sceneParams.lockView ? lockViewDisabled : lockViewEnabled); + btnLockView.setAttribute("src", scene.lockView ? lockViewDisabled : lockViewEnabled); // btnFaceView let btnFaceView = document.createElement("input"); btnFaceView.setAttribute("style", "display: flex; width: 100%; position: relative; border: 0px; padding: 0px; background-color: transparent;"); btnFaceView.setAttribute("type", "image"); - btnFaceView.setAttribute("src", slave.sceneParams.faceView ? faceViewEnabled : faceViewDisabled); + btnFaceView.setAttribute("src", scene.faceView ? faceViewEnabled : faceViewDisabled); // btnResetView let btnResetView = document.createElement("input"); btnResetView.setAttribute("style", "display: flex; width: 100%; position: relative; border: 0px; padding: 0px; background-color: transparent;"); btnResetView.setAttribute("type", "image"); - btnResetView.setAttribute("src", slave.sceneParams.resetView ? resetViewEnabled : resetViewDisabled); + btnResetView.setAttribute("src", scene.resetView ? resetViewEnabled : resetViewDisabled); // events btnLockView.onclick = function(e){ - slave.sceneParams.lockView = !slave.sceneParams.lockView; + scene.lockView = !scene.lockView; - btnLockView.src = slave.sceneParams.lockView ? lockViewDisabled : lockViewEnabled; + btnLockView.src = scene.lockView ? lockViewDisabled : lockViewEnabled; }; btnFaceView.onclick = function(e){ - slave.sceneParams.resetView = true; - slave.sceneParams.faceView = false; + scene.resetView = true; + scene.faceView = false; btnFaceView.src = faceViewDisabled; btnResetView.src = resetViewEnabled; - slave.sceneParams.camera.y = slave.height-5; - slave.sceneParams.transform.yr = 0; - slave.sceneParams.camera.z = -40 - slave.height/20; - App.Art.engine.render(slave.sceneParams, cvs); + scene.camera.y = slave.height-5; + scene.transform.yr = 0; + scene.camera.z = -40 - slave.height/20; + App.Art.engine.render(scene, cvs); }; btnResetView.onclick = function(e){ - slave.sceneParams.resetView = false; - slave.sceneParams.faceView = true; + scene.resetView = false; + scene.faceView = true; btnResetView.src = resetViewDisabled; btnFaceView.src = faceViewEnabled; - slave.sceneParams.camera.y = App.Art.defaultSceneParams.camera.y; - slave.sceneParams.transform.yr = App.Art.defaultSceneParams.transform.yr; - slave.sceneParams.camera.z = App.Art.defaultSceneParams.camera.z; - App.Art.engine.render(slave.sceneParams, cvs); + scene.camera.y = App.Art.defaultscene.camera.y; + scene.transform.yr = App.Art.defaultscene.transform.yr; + scene.camera.z = App.Art.defaultscene.camera.z; + App.Art.engine.render(scene, cvs); }; cvs.onmousemove = function(e){ - if(slave.sceneParams.lockView){ return; } + if(scene.lockView){ return; } if(!App.Art.isDraggingCanvas){ return; } e.preventDefault(); e.stopPropagation(); - slave.sceneParams.resetView = true; - slave.sceneParams.faceView = true; + scene.resetView = true; + scene.faceView = true; btnResetView.src = resetViewEnabled; btnFaceView.src = faceViewEnabled; - slave.sceneParams.camera.y = slave.sceneParams.camera.y + e.movementY/10; - slave.sceneParams.transform.yr = slave.sceneParams.transform.yr + e.movementX*5; - App.Art.engine.render(slave.sceneParams, cvs); + scene.camera.y = scene.camera.y + e.movementY/10; + scene.transform.yr = scene.transform.yr + e.movementX*5; + App.Art.engine.render(scene, cvs); }; cvs.onmousedown = function(e){ - if(slave.sceneParams.lockView){ return; } + if(scene.lockView){ return; } e.preventDefault(); e.stopPropagation(); App.Art.isDraggingCanvas=true; }; cvs.onmouseup = function(e){ - if(slave.sceneParams.lockView){ return; } + if(scene.lockView){ return; } if(!App.Art.isDraggingCanvas){ return; } e.preventDefault(); e.stopPropagation(); @@ -96,7 +96,7 @@ App.Art.createWebglUI = function(container, slave, artSize) { }; cvs.onmouseout = function(e){ - if(slave.sceneParams.lockView){ return; } + if(scene.lockView){ return; } if(!App.Art.isDraggingCanvas){ return; } e.preventDefault(); e.stopPropagation(); @@ -104,23 +104,23 @@ App.Art.createWebglUI = function(container, slave, artSize) { }; cvs.onwheel = function(e){ - if(slave.sceneParams.lockView){ return; } + if(scene.lockView){ return; } - slave.sceneParams.resetView = true; - slave.sceneParams.faceView = true; + scene.resetView = true; + scene.faceView = true; btnResetView.src = resetViewEnabled; btnFaceView.src = faceViewEnabled; - slave.sceneParams.camera.z = slave.sceneParams.camera.z - e.deltaY/7; + scene.camera.z = scene.camera.z - e.deltaY/7; - if (slave.sceneParams.camera.z < -900) { - slave.sceneParams.camera.z = -900; + if (scene.camera.z < -900) { + scene.camera.z = -900; } - if (slave.sceneParams.camera.z > -10) { - slave.sceneParams.camera.z = -10; + if (scene.camera.z > -10) { + scene.camera.z = -10; } - App.Art.engine.render(slave.sceneParams, cvs); + App.Art.engine.render(scene, cvs); return false; }; @@ -152,8 +152,8 @@ App.Art.createWebglUI = function(container, slave, artSize) { container.setAttribute("style", "position: relative; width: " + sz[0] + "px; height: " + sz[1] + "px;"); } - slave.sceneParams.settings.rwidth = cvs.width*2; - slave.sceneParams.settings.rheight = cvs.height*2; + scene.settings.rwidth = cvs.width*2; + scene.settings.rheight = cvs.height*2; return cvs; }; diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index b38a17398dfb7a3a6c2e27605d681b516a66bf54..605e35f3d0188d7c0b59ecee9ade0a9b77fd49b8 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -30,9 +30,6 @@ App.Entity.Utils.SlaveDataSchemeCleanup = (function() { if (slave.hasOwnProperty("tired")) { delete slave.tired; } - if (typeof slave.sceneParams !== 'undefined') { - delete slave.sceneParams; - } } /** diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 66d5a7825877c54ebc472b6febd406a8315db776..2f1b28b3721f0a80e6d318d0a78824fad418cf85 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -474,7 +474,6 @@ App.Entity.EyeState = class EyeState { App.Entity.SlaveState = class SlaveState { constructor() { - this.sceneParams = ""; /** Slave's current name */ this.slaveName = "blank"; /** Slave's current surname