-- Leo's gemini proxy

-- Connecting to git.thebackupbox.net:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

repo: janusweb
action: commit
revision:
path_from:
revision_from: 2d9124b15e0675fb473f60630f1e7e8cf5f9fae9:
path_to:
revision_to:

git.thebackupbox.net

janusweb

git://git.thebackupbox.net/janusweb

commit 2d9124b15e0675fb473f60630f1e7e8cf5f9fae9
Author: James Baicoianu <james_github@baicoianu.com>
Date:   Tue Aug 8 03:41:25 2017 -0700

    Added video seek functionality, exposed janusobject properties

diff --git a/scripts/object.js b/scripts/object.js

index 6619ca21032ebb3090f2d39c7f55b9abcb570839..

index ..964398e6132e656cb70b09d6f0043d730c8772ef 100644

--- a/scripts/object.js
+++ b/scripts/object.js
@@ -269,7 +269,9 @@ elation.require(['janusweb.janusbase', 'janusweb.websurface'], function() {
           } else {
             texture.image.pause();
           }
+          this.video = texture.image;
           elation.events.add(this, elation.bind(this, this.handleVideoClick));
+          room.videos[this.video_id] = this;
         }
       }
       if (this.properties.websurface_id) {
@@ -563,15 +565,79 @@ elation.require(['janusweb.janusbase', 'janusweb.websurface'], function() {
         elation.events.add(this.playbutton, 'click', elation.bind(this, this.play));
       }
     }
+    this.play = function() {
+      if (!this.isPlaying()) {
+        this.video.play();
+      }
+    }
+    this.pause = function() {
+      if (this.isPlaying()) {
+        this.video.pause();
+      }
+    }
+    this.isPlaying = function() {
+      var video = this.video;
+      return (video.currentTime > 0 && !video.paused && !video.ended);
+    }
+    this.stop = function() {
+      if (this.video) {
+        this.pause();
+        // FIXME - this stops the video from loading any more data, but means we can't easily restart
+        //         so we're hackishly working around that
+        this.video.originalSrc = this.video.src;
+        this.video.src = '';
+      }
+    }
+    this.seek = function(time) {
+      if (this.video) this.video.currentTime = time;
+    }
+    this.getCurrentTime = function() {
+      if (this.video) {
+        return this.video.currentTime;
+      }
+      return 0;
+    }
+    this.getTotalTime = function() {
+      if (this.video) {
+        return this.video.duration;
+      }
+      return 0;
+    }
     this.getProxyObject = function(classdef) {
       var proxy = elation.engine.things.janusobject.extendclass.getProxyObject.call(this, classdef);
       proxy._proxydefs = {
         id:  [ 'property', 'janusid'],
         url:  [ 'property', 'url'],
+        image_id:  [ 'property', 'image_id'],
+        video_id:  [ 'property', 'video_id'],
+        lmap_id:  [ 'property', 'lmap_id'],
+        envmap_id:  [ 'property', 'envmap_id'],
+        websurface_id:  [ 'property', 'websurface_id'],
+
+        lighting: [ 'property', 'lighting' ],
+        shadow: [ 'property', 'shadow' ],
+        shadow_receive: [ 'property', 'shadow_receive' ],
+        shadow_cast: [ 'property', 'shadow_casr' ],
+        cull_face: [ 'property', 'cull_face' ],
+        blend_src: [ 'property', 'blend_src' ],
+        blend_dest: [ 'property', 'blend_dest' ],
+
         collision_id:  [ 'property', 'collision_id'],
+        collision_pos: [ 'property', 'collision_pos' ],
         collision_scale:  [ 'property', 'collider_scale'],
         collision_static:  [ 'property', 'collision_static'],
         collision_trigger:  [ 'property', 'collision_trigger'],
+
+        // vide properties/functions
+        current_time: [ 'accessor', 'getCurrentTime'],
+        total_time: [ 'accessor', 'getTotalTime'],
+        isPlaying: [ 'function', 'isPlaying'],
+        play:    [ 'function', 'play'],
+        pause:   [ 'function', 'pause'],
+        toggle:  [ 'function', 'togglePlay'],
+        seek:    [ 'function', 'seek'],
+
+
       };
       return proxy;
     }

-----END OF PAGE-----

-- Response ended

-- Page fetched on Sun Jun 2 15:34:56 2024