diff --git a/WebDoorView/3DM_test/test_js_call/index.html b/WebDoorView/3DM_test/test_js_call/index.html index 03e4250..721b434 100644 --- a/WebDoorView/3DM_test/test_js_call/index.html +++ b/WebDoorView/3DM_test/test_js_call/index.html @@ -2,7 +2,7 @@ - Door render + WebDoor3D Render @@ -21,32 +21,32 @@
- - + +
- - - + + +
- +
- - + +
- +
    @@ -66,62 +66,62 @@
    Toggle Show-Cube : C
    - +
  • Toggle Show-Frame : F
    - +
  • -->
  • Iso / Ortho
    | key : O
    - +
  • Perspective
    | key : P
    - +
  • AutoRotate
    | key : R
    - +
  • Quotes
    | key : Q
    - +
  • Grid
    | key : G
    - +
  • Reset
    | key: SpaceBar
    - +
  • Menu
    | key : H
    - +
@@ -149,11 +149,11 @@ import { webgl_original } from "./lib/node_modules/webgl-door-visualizer/webgl_draw.js"; const WGL = new webgl_original(); - + const infoDiv = document.getElementById( "infoDiv") ; const doorDiv = document.getElementById( "DoorRender") ; - const axisDiv = document.getElementById( "RefRender") ; const cubeDiv = document.getElementById( "Ref1Render") ; + infoDiv.style.display = "none"; var isAnimated = true; var isRotating = true; @@ -164,10 +164,105 @@ modelPath: "https://iis01.egalware.com/Test3D/THREEJS_DOORS/Door_models", fName: getUrlParameter("src") } - + // init controllo WGL.initcall(options); + + // --------------------------------------------------- + // Funzioni pubbliche + // --------------------------------------------------- + window.toggleAnim = () => + { + isAnimated = !isAnimated; + fixAnimate(true); + } + + // reset camera + window.resetCamera = () => + { + console.log("Reset Camera"); + document.getElementById("btnReset").className = "btn btn-lg btn-light"; + isAnimated = true; + // isRotating = true; + fixAnimate(true); + // fixBtnRotate(); + // WGL.toggleRotation(); + WGL.resetCamera(); + var millisecondsToWait = 500; + setTimeout(function() { + document.getElementById("btnReset").className = "btn btn-lg btn-secondary"; + }, millisecondsToWait); + } + + // set camera persp + window.setOrtho = () => + { + console.log("Set Camera ISO/ORTHO"); + document.getElementById("btnOrto").className = "btn btn-lg btn-light"; + document.getElementById("btnPers").className = "btn btn-lg btn-secondary"; + WGL.setCameraOrtho(); + } + + // reset camera persp + window.setPersp = () => + { + console.log("Set Camera Perspective"); + document.getElementById("btnOrto").className = "btn btn-lg btn-secondary"; + document.getElementById("btnPers").className = "btn btn-lg btn-light"; + WGL.setCameraPersp(); + } + + // toggle griglia + window.toggleGrid = () => + { + console.log("Toggle Grid"); + showGrid = !showGrid; + if(showGrid) + { + document.getElementById("btnGrid").className = "btn btn-lg btn-light"; + } + else{ + document.getElementById("btnGrid").className = "btn btn-lg btn-secondary"; + } + WGL.toggleGrid(); + } + + // toggle quotatura + window.toggleHelp = () => + { + console.log("Toggle Menu"); + toggleMenu(); + } + + // toggle quotatura + window.toggleQuote = () => + { + console.log("Toggle Quote"); + showQuote = !showQuote; + if(showQuote) + { + document.getElementById("btnQuote").className = "btn btn-lg btn-light"; + } + else{ + document.getElementById("btnQuote").className = "btn btn-lg btn-secondary"; + } + WGL.toggleQuotes(); + } + + // toggle rotazione + window.toggleRotate = () => + { + console.log("Toggle Rotate"); + isRotating = !isRotating; + fixBtnRotate(); + WGL.toggleRotation(); + } + + // --------------------------------------------------- + // Funzioni private + // --------------------------------------------------- + // Reading URL parameters ------------------------------------------------------------------------- function getUrlParameter( name) { // get query string from URL @@ -186,140 +281,41 @@ else infoDiv.style.display = "none"; } - - function toggleFreeze() + + function fixAnimate(setRotate) { - isAnimated = !isAnimated; if( isAnimated ) { - document.getElementById("btnPlay").className = "btn btn-sm btn-light"; - document.getElementById("btnPause").className = "btn btn-sm btn-secondary"; - isRotating = true; + document.getElementById("btnPlay").className = "btn btn-lg btn-light"; + document.getElementById("btnPause").className = "btn btn-lg btn-secondary"; + if(setRotate) + isRotating = true; fixBtnRotate(); WGL.setRotate(isRotating); WGL.doAnimate(); } else { - document.getElementById("btnPlay").className = "btn btn-sm btn-secondary"; - document.getElementById("btnPause").className = "btn btn-sm btn-light"; - isRotating = false; + document.getElementById("btnPlay").className = "btn btn-lg btn-secondary"; + document.getElementById("btnPause").className = "btn btn-lg btn-light"; + if(setRotate) + isRotating = false; fixBtnRotate(); WGL.setRotate(isRotating); WGL.doFreeze(); } } - // function toggleAnim() - window.toggleAnim = () => - { - toggleFreeze(); - } - - // reset camera - window.resetCamera = () => - { - console.log("Reset Camera"); - document.getElementById("btnReset").className = "btn btn-sm btn-light"; - WGL.resetCamera(); - var millisecondsToWait = 500; - setTimeout(function() { - document.getElementById("btnReset").className = "btn btn-sm btn-secondary"; - }, millisecondsToWait); - } - - // reset camera - window.setOrtho = () => - { - console.log("Set Camera ISO/ORTHO"); - document.getElementById("btnOrto").className = "btn btn-sm btn-light"; - document.getElementById("btnPers").className = "btn btn-sm btn-secondary"; - WGL.setCameraOrtho(); - } - - // reset camera - window.setPersp = () => - { - console.log("Set Camera Perspective"); - document.getElementById("btnOrto").className = "btn btn-sm btn-secondary"; - document.getElementById("btnPers").className = "btn btn-sm btn-light"; - WGL.setCameraPersp(); - } - - // // toggle cubo - // window.toggleCube = () => - // { - // console.log("Toggle Cubo"); - // WGL.toggleCube(); - // } - - // // toggle frame - // window.toggleFrame = () => - // { - // console.log("Toggle Frame"); - // WGL.toggleFrame(); - // } - - // toggle griglia - window.toggleGrid = () => - { - console.log("Toggle Grid"); - showGrid = !showGrid; - if(showGrid) - { - document.getElementById("btnGrid").className = "btn btn-sm btn-light"; - } - else{ - document.getElementById("btnGrid").className = "btn btn-sm btn-secondary"; - } - WGL.toggleGrid(); - } - - // toggle quotatura - window.toggleHelp = () => - { - console.log("Toggle Menu"); - toggleMenu(); - } - - - // toggle quotatura - window.toggleQuote = () => - { - console.log("Toggle Quote"); - showQuote = !showQuote; - if(showQuote) - { - document.getElementById("btnQuote").className = "btn btn-sm btn-light"; - } - else{ - document.getElementById("btnQuote").className = "btn btn-sm btn-secondary"; - } - WGL.toggleQuotes(); - } - - // toggle rotazione - window.toggleRotate = () => - { - console.log("Toggle Rotate"); - isRotating = !isRotating; - fixBtnRotate(); - WGL.toggleRotation(); - } - function fixBtnRotate() { - var cssClass = "btn btn-sm btn-secondary"; + var cssClass = "btn btn-lg btn-secondary"; if(isRotating) { - cssClass = "btn btn-sm btn-light"; + cssClass = "btn btn-lg btn-light"; } document.getElementById("btnRotate").className = cssClass; } - // Event Listner ------------------------------------------------------------------- - // KEY - document.addEventListener( "keypress", onKeyPress) ; function onKeyPress( event) { if ( event.key.toLowerCase() === "r") @@ -346,27 +342,47 @@ toggleAnim(); } - // Aggiunto event listeners - - infoDiv.style.display = "none"; + function checkButton(event) + { + switch(event.button){ + case 0: + // salto! + break; + default: + reAnimate(); + break; + } + } - // controllo click x avviare se fosse fermo... - // ["click", "ontouchstart", "drag", "auxclick"].forEach(evt => - ["click", "ontouchstart"].forEach(evt => - doorDiv.addEventListener( evt , toggleAnim ) ); - axisDiv.addEventListener( "click", toggleAnim ) ; - cubeDiv.addEventListener( "click", toggleAnim ) ; + function reAnimate() + { + if( !isAnimated ) + { + isAnimated = true; + fixAnimate(false); + } + } - // /** - // * Dispose: rimuovo tutti gli eventListener - // */ - // this.dispose = function () { - // document.removeEventListener( "keypress", onKeyPress(event)); - // ["click", "ontouchstart"].forEach(evt => doorDiv.removeEventListener( evt , toggleAnim ) ); - // axisDiv.removeEventListener( "click", toggleAnim ) ; - // cubeDiv.removeEventListener( "click", toggleAnim ) ; + function reAnimateRotate() + { + if( !isAnimated ) + { + isAnimated = true; + fixAnimate(true); + } + } + + + // Event Listner ------------------------------------------------------------------- + // KEY + document.addEventListener( "keypress", onKeyPress) ; + doorDiv.addEventListener( 'pointerup', checkButton ); + doorDiv.addEventListener( 'touchstart', reAnimate ); + // doorDiv.addEventListener( 'touchend', reAnimate ); + // doorDiv.addEventListener( 'touchcancel', reAnimate ); + doorDiv.addEventListener( 'touchmove', reAnimateRotate ); + doorDiv.addEventListener( 'click', toggleAnim ); - // } diff --git a/WebDoorView/3DM_test/test_js_call/index_2.html b/WebDoorView/3DM_test/test_js_call/index_2.html index d9f7041..edf2a49 100644 --- a/WebDoorView/3DM_test/test_js_call/index_2.html +++ b/WebDoorView/3DM_test/test_js_call/index_2.html @@ -2,9 +2,12 @@ - Door render + WebDoor3D Render + + + - -
- -
- +
+
+
+ + +
+
+ + + +
-
- -
-
-
-
-                        Camera settings : 
-                        Zoom : Wheel-Scroll 
-                        Pan : Mouse-Wheel and Drag
-                        Rotate : Key-CTRL + Mouse-Right and Drag
-                        Center : Key-'Space' 
-                        Type : Key-O ( orthographic ) 
-                                Key-P ( perspective ) 
-                                                
-                        Toggle Auto-rotation : Key-R 
-                                                
-                        Toggle Show-Dimension : Key-D
-
-                        Toggle Show-Cube : Key-C
-
-                        Toggle Show-Frame : Key-F
-
-                        Toggle Show-Grid : Key-G
-                    
+
+
+ + +
+ + +
+ + +
+
+
    +
  • + Camera settings +
  • +
  • + Zoom Wheel-Scroll +
  • +
  • + Pan Drag Mouse-Wheel +
  • +
  • + Rotate CTRL + Drag Mouse-Wheel +
  • + +
  • +
    Iso / Ortho
    +
    + | key : O +
    + +
  • +
  • +
    Perspective
    +
    + | key : P +
    + +
  • +
  • +
    AutoRotate
    +
    + | key : R +
    + +
  • +
  • +
    Quotes
    +
    + | key : Q +
    + +
  • +
  • +
    Grid
    +
    + | key : G +
    + +
  • +
  • +
    Reset
    +
    + | key: SpaceBar +
    + +
  • +
  • +
    Menu
    +
    + | key : H +
    + +
  • +
+
+
+
+ +
+
+
+
+
+
+ WebDoor 3D +
+
+ Egalware |
- -
-
-
diff --git a/WebDoorView/3DM_test/test_js_call/lib/node_modules/webgl-door-visualizer/draw_call.js b/WebDoorView/3DM_test/test_js_call/lib/node_modules/webgl-door-visualizer/draw_call.js index cbd529e..429da9a 100644 --- a/WebDoorView/3DM_test/test_js_call/lib/node_modules/webgl-door-visualizer/draw_call.js +++ b/WebDoorView/3DM_test/test_js_call/lib/node_modules/webgl-door-visualizer/draw_call.js @@ -1,20 +1,235 @@ -import { webgl_original } from './webgl_draw.js'; +import { webgl_original } from "./webgl_draw.js"; const WGL = new webgl_original(); +const infoDiv = document.getElementById( "infoDiv") ; +const doorDiv = document.getElementById( "DoorRender") ; +const cubeDiv = document.getElementById( "Ref1Render") ; +infoDiv.style.display = "none"; + +var isAnimated = true; +var isRotating = true; +var showQuote = true; +var showGrid = true; + let options ={ - modelPath: 'https://iis01.egalware.com/Test3D/THREEJS_DOORS/Door_models', - fName: getUrlParameter('src') + modelPath: "https://iis01.egalware.com/Test3D/THREEJS_DOORS/Door_models", + fName: getUrlParameter("src") } +// init controllo +WGL.initcall(options); + +// --------------------------------------------------- +// Funzioni pubbliche +// --------------------------------------------------- +window.toggleAnim = () => +{ + isAnimated = !isAnimated; + fixAnimate(true); +} + +// reset camera +window.resetCamera = () => +{ + console.log("Reset Camera"); + document.getElementById("btnReset").className = "btn btn-lg btn-light"; + isAnimated = true; + // isRotating = true; + fixAnimate(true); + // fixBtnRotate(); + // WGL.toggleRotation(); + WGL.resetCamera(); + var millisecondsToWait = 500; + setTimeout(function() { + document.getElementById("btnReset").className = "btn btn-lg btn-secondary"; + }, millisecondsToWait); +} + +// reset camera persp +window.setOrtho = () => +{ + console.log("Set Camera ISO/ORTHO"); + document.getElementById("btnOrto").className = "btn btn-lg btn-light"; + document.getElementById("btnPers").className = "btn btn-lg btn-secondary"; + WGL.setCameraOrtho(); +} + +// reset camera persp +window.setPersp = () => +{ + console.log("Set Camera Perspective"); + document.getElementById("btnOrto").className = "btn btn-lg btn-secondary"; + document.getElementById("btnPers").className = "btn btn-lg btn-light"; + WGL.setCameraPersp(); +} + +// toggle griglia +window.toggleGrid = () => +{ + console.log("Toggle Grid"); + showGrid = !showGrid; + if(showGrid) + { + document.getElementById("btnGrid").className = "btn btn-lg btn-light"; + } + else{ + document.getElementById("btnGrid").className = "btn btn-lg btn-secondary"; + } + WGL.toggleGrid(); +} + +// toggle quotatura +window.toggleHelp = () => +{ + console.log("Toggle Menu"); + toggleMenu(); +} + +// toggle quotatura +window.toggleQuote = () => +{ + console.log("Toggle Quote"); + showQuote = !showQuote; + if(showQuote) + { + document.getElementById("btnQuote").className = "btn btn-lg btn-light"; + } + else{ + document.getElementById("btnQuote").className = "btn btn-lg btn-secondary"; + } + WGL.toggleQuotes(); +} + +// toggle rotazione +window.toggleRotate = () => +{ + console.log("Toggle Rotate"); + isRotating = !isRotating; + fixBtnRotate(); + WGL.toggleRotation(); +} + +// --------------------------------------------------- +// Funzioni private +// --------------------------------------------------- + // Reading URL parameters ------------------------------------------------------------------------- function getUrlParameter( name) { // get query string from URL - const queryString = window.location.search ; + const queryString = window.location.search ; // create URLSearchParams object from query string - const urlParams = new URLSearchParams( queryString) ; + const urlParams = new URLSearchParams( queryString) ; // get parameter value by name - return urlParams.get( name) ; - } + return urlParams.get( name) ; +} -WGL.initcall(options); +function toggleMenu() +{ + console.log("Toggle Menu Camera"); + if ( infoDiv.style.display == "none") + infoDiv.style.display = "block" ; + else + infoDiv.style.display = "none"; +} + +function fixAnimate(setRotate) +{ + if( isAnimated ) + { + document.getElementById("btnPlay").className = "btn btn-lg btn-light"; + document.getElementById("btnPause").className = "btn btn-lg btn-secondary"; + if(setRotate) + isRotating = true; + fixBtnRotate(); + WGL.setRotate(isRotating); + WGL.doAnimate(); + } + else + { + document.getElementById("btnPlay").className = "btn btn-lg btn-secondary"; + document.getElementById("btnPause").className = "btn btn-lg btn-light"; + if(setRotate) + isRotating = false; + fixBtnRotate(); + WGL.setRotate(isRotating); + WGL.doFreeze(); + } +} + + +function fixBtnRotate() +{ + var cssClass = "btn btn-lg btn-secondary"; + if(isRotating) + { + cssClass = "btn btn-lg btn-light"; + } + document.getElementById("btnRotate").className = cssClass; +} + +function onKeyPress( event) { + if ( event.key.toLowerCase() === "r") + toggleRotate(); + else if ( event.key.toLowerCase() === "p") { + setPersp(); + } + else if ( event.key.toLowerCase() === "o") { + setOrtho(); + } + else if ( event.key.toLowerCase() === "q") + toggleQuote(); + else if ( event.key.toLowerCase() === " ") + resetCamera(); + // else if ( event.key.toLowerCase() === "c") + // toggleCube(); + // else if ( event.key.toLowerCase() === "f") + // toggleFrame(); + else if ( event.key.toLowerCase() === "g") + toggleGrid(); + else if ( event.key.toLowerCase() === "h") + toggleMenu(); + else if ( event.key.toLowerCase() === "a") + toggleAnim(); +} + +function checkButton(event) +{ + switch(event.button){ + case 0: + // salto! + break; + default: + reAnimate(); + break; + } +} + +function reAnimate() +{ + if( !isAnimated ) + { + isAnimated = true; + fixAnimate(false); + } +} + +function reAnimateRotate() +{ + if( !isAnimated ) + { + isAnimated = true; + fixAnimate(true); + } +} + + +// Event Listner ------------------------------------------------------------------- +// KEY +document.addEventListener( "keypress", onKeyPress) ; +doorDiv.addEventListener( 'pointerup', checkButton ); +doorDiv.addEventListener( 'touchstart', reAnimate ); +// doorDiv.addEventListener( 'touchend', reAnimate ); +// doorDiv.addEventListener( 'touchcancel', reAnimate ); +doorDiv.addEventListener( 'touchmove', reAnimateRotate ); +doorDiv.addEventListener( 'click', toggleAnim ); \ No newline at end of file diff --git a/WebDoorView/3DM_test/test_js_call/style.css b/WebDoorView/3DM_test/test_js_call/style.css index d7dcc37..3cc604c 100644 --- a/WebDoorView/3DM_test/test_js_call/style.css +++ b/WebDoorView/3DM_test/test_js_call/style.css @@ -21,8 +21,8 @@ canvas { #divLogo{ position: fixed ; - top: 3rem; - right: 0.5rem; + top: 3.5rem; + right: 0.3rem; height: 5rem; width: 4rem; font-size: 0.8rem;