diff --git a/resources/public/index.html b/resources/public/index.html index ca98f9d..58abc8a 100644 --- a/resources/public/index.html +++ b/resources/public/index.html @@ -13,6 +13,7 @@ + diff --git a/resources/public/js/NoSleep.min.js b/resources/public/js/NoSleep.min.js new file mode 100644 index 0000000..3768ef7 --- /dev/null +++ b/resources/public/js/NoSleep.min.js @@ -0,0 +1,2 @@ +/*! NoSleep.min.js v0.7.0 - git.io/vfn01 - Rich Tibbett - MIT license */ +!function(A,B){"object"==typeof exports&&"object"==typeof module?module.exports=B():"function"==typeof define&&define.amd?define([],B):"object"==typeof exports?exports.NoSleep=B():A.NoSleep=B()}(this,function(){return function(A){function B(e){if(Q[e])return Q[e].exports;var o=Q[e]={i:e,l:!1,exports:{}};return A[e].call(o.exports,o,o.exports,B),o.l=!0,o.exports}var Q={};return B.m=A,B.c=Q,B.d=function(A,Q,e){B.o(A,Q)||Object.defineProperty(A,Q,{configurable:!1,enumerable:!0,get:e})},B.n=function(A){var Q=A&&A.__esModule?function(){return A.default}:function(){return A};return B.d(Q,"a",Q),Q},B.o=function(A,B){return Object.prototype.hasOwnProperty.call(A,B)},B.p="",B(B.s=0)}([function(A,B,Q){"use strict";function e(A,B){if(!(A instanceof B))throw new TypeError("Cannot call a class as a function")}var o=function(){function A(A,B){for(var Q=0;Q.5&&(this.noSleepVideo.currentTime=Math.random())}.bind(this)))}return o(A,[{key:"enable",value:function(){n?(this.disable(),this.noSleepTimer=window.setInterval(function(){window.location.href="/",window.setTimeout(window.stop,0)},15e3)):this.noSleepVideo.play()}},{key:"disable",value:function(){n?this.noSleepTimer&&(window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause()}}]),A}();A.exports=E},function(A,B,Q){"use strict";A.exports="data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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"}])}); \ No newline at end of file diff --git a/src/sliva/core.cljs b/src/sliva/core.cljs index b664970..c7a9808 100644 --- a/src/sliva/core.cljs +++ b/src/sliva/core.cljs @@ -32,4 +32,5 @@ (do (websocket-init) (click-test) + (.enable (js/NoSleep.)) (init-app))))) diff --git a/src/sliva/data.cljs b/src/sliva/data.cljs index efe5567..0cef671 100644 --- a/src/sliva/data.cljs +++ b/src/sliva/data.cljs @@ -8,9 +8,11 @@ ;; ☭☭☭☭ Parametri razni ☭☭☭☭ ;; ;;;;; ☭☭☭☭☭☭☭☭☭☭☭☭☭☭ ;;;;;; {:odmik-kamere 100 - :rotacija-kamere 1 + ;;:rotacija-kamere 1 + :rotacija-kamere 0.5 :bg-barva 0x000000 - :FOV 140 + ;;:FOV 140 + :FOV 65 :lik-sirina 2 :obj-limit 1000 :objekti [] @@ -21,8 +23,10 @@ :center-x 0 :center-y 0 :center-z 0 - :zamik-barve 0.0000666 - :zacetna-barva 0.333 + ;;:zamik-barve 0.0000666 + :zamik-barve 0.000000006 + ;;:zacetna-barva 0.333 + :zacetna-barva 0.01 :saturacija 1 :svetlost 0.4 :w-diff 0.5 diff --git a/src/sliva/gfx.cljs b/src/sliva/gfx.cljs index b8aec01..6c22374 100644 --- a/src/sliva/gfx.cljs +++ b/src/sliva/gfx.cljs @@ -52,30 +52,37 @@ (let [obj (js/THREE.Line. geo mat (.-LineSegments js/THREE)) position (.-position obj) + stari-objekti (drop (get-param :obj-limit) (get-param :objekti)) novi-objekti (conj (take (get-param :obj-limit) (get-param :objekti)) obj)] - (-> position - (.setX (get-param :center-x)) - (.setY (get-param :center-y)) - (.setZ (get-param :center-z))) (.add scena obj) + (->> stari-objekti + (run! (fn [old-obj] + (.remove scena old-obj)))) ;; pucaj sceno ane (set-param :objekti novi-objekti)))) (defn obj-anim [obj] - (.rotateY obj (get-param :rotacija-y)) - (.rotateZ obj (get-param :rotacija-z)) - (.rotateX obj (get-param :rotacija-x)) - - (let [new-scale (+ (aget obj "scale" "x") + (let [position (.-position obj) + new-scale (+ (aget obj "scale" "x") (get-param :w-diff))] - (aset obj "scale" "x" new-scale) - (aset obj "scale" "y" new-scale) - (aset obj "scale" "z" new-scale)) + (doto position + (.setX (+ (.-x position) (get-param :center-x))) + (.setY (+ (.-y position) (get-param :center-y))) + (.setZ (+ (.-z position) (get-param :center-z)))) - (.offsetHSL (aget obj "material" "color") (get-param :zamik-barve) 0 0)) + (doto obj + (.rotateY (get-param :rotacija-y)) + (.rotateZ (get-param :rotacija-z)) + (.rotateX (get-param :rotacija-x)) + + (aset "scale" "x" new-scale) + (aset "scale" "y" new-scale) + (aset "scale" "z" new-scale)) + + (.offsetHSL (aget obj "material" "color") (get-param :zamik-barve) 0 0))) (defn cam-rotate [] (.translateX kamera (get-param :rotacija-kamere)) @@ -118,14 +125,14 @@ (.removeChild container (.-firstChild container))) (defn spin-objects [[cas a b g]] - ;; (update-param :rotacija-x (fn [old] (+ old (/ x 1000)))) - ;; (update-param :rotacija-y (fn [old] (+ old (/ y 1000)))) - ;; (update-param :rotacija-z (fn [old] (+ old (/ z 1000))))) + ;;(update-param :rotacija-x (fn [old] (+ old (/ a 100000)))) + ;;(update-param :rotacija-y (fn [old] (+ old (/ b 100000)))) + ;;(update-param :rotacija-z (fn [old] (+ old (/ g 100000))))) (set-param :rotacija-x (/ a 10000)) (set-param :rotacija-y (/ b 10000)) (set-param :rotacija-z (/ g 10000))) (defn displace-objects [[cas x y z]] - (update-param :center-x (fn [old] (+ old (* x 10)))) - (update-param :center-y (fn [old] (+ old (* y 10)))) - (update-param :center-z (fn [old] (+ old (* z 10))))) + (update-param :center-x (fn [old] (+ old (/ x 25)))) + (update-param :center-y (fn [old] (+ old (/ y 25)))) + (update-param :center-z (fn [old] (+ old (/ z 25))))) diff --git a/src/sliva/pages/gibanica.cljs b/src/sliva/pages/gibanica.cljs index f08a2f2..1a11321 100644 --- a/src/sliva/pages/gibanica.cljs +++ b/src/sliva/pages/gibanica.cljs @@ -19,13 +19,27 @@ (defn stop-motion-track [] (.removeEventListener js/window "devicemotion" motion-track)) +(def rotation (reagent/atom nil)) (defn rotation-track [event] (let [alpha (.-alpha event) beta (.-beta event) gamma (.-gamma event) cas (-> (js/Date.) (.valueOf))] - (send-message "rotation" cas alpha beta gamma))) + (console.log "rotation:" @rotation) + (if @rotation + (let [da (- (:a @rotation) alpha) + db (- (:b @rotation) beta) + dg (- (:g @rotation) gamma)] + (send-message + "rotation" + cas + da + db + dg)) + (swap! rotation merge {:a alpha + :b beta + :g gamma})))) (defn start-rotation-track [] (.addEventListener js/window "deviceorientation" rotation-track)) @@ -42,13 +56,18 @@ :component-will-unmount (fn [] (stop-motion-track) (stop-rotation-track)) + :should-component-update #(true) :reagent-render (fn [] [:div [:h3 "gibaj me!"] - (let [vizual [:vizual @appstate]] - [:input {:type "range" - :min 0 - :max 50}]) + [:div + [:h4 "Rotacija"] + [:div "Alfa:" (:a @rotation)] + [:div "Beta:" (:b @rotation)] + [:div "Gama:" (:g @rotation)]] + [:input {:type "range" + :min 0 + :max 50}] [navigation]])})) diff --git a/src/sliva/server/handlers.clj b/src/sliva/server/handlers.clj index 79b2cb9..3b18167 100644 --- a/src/sliva/server/handlers.clj +++ b/src/sliva/server/handlers.clj @@ -29,9 +29,9 @@ (send-all "open" [cid]) (go-loop [] (let [{:keys [message]} (! ws-ch "pong") "motion" (send-all "displace" args)