Class: Vizcore::Server::SceneDependencyWatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/vizcore/server/scene_dependency_watcher.rb

Overview

Watches a scene file and the custom GLSL files referenced by that scene.

Instance Method Summary collapse

Constructor Details

#initialize(scene_file:, definition:, watcher_factory: Vizcore::DSL::FileWatcher) {|definition, changed_path| ... } ⇒ SceneDependencyWatcher

Returns a new instance of SceneDependencyWatcher.

Parameters:

  • scene_file (String, Pathname)
  • definition (Hash)

    current scene definition

  • watcher_factory (Class) (defaults to: Vizcore::DSL::FileWatcher)

    file watcher class or compatible factory

Yield Parameters:

  • definition (Hash)

    reloaded scene definition

  • changed_path (Pathname)

    changed scene or shader file



15
16
17
18
19
20
21
22
# File 'lib/vizcore/server/scene_dependency_watcher.rb', line 15

def initialize(scene_file:, definition:, watcher_factory: Vizcore::DSL::FileWatcher, &on_change)
  @scene_file = Pathname.new(scene_file.to_s).expand_path
  @definition = definition
  @watcher_factory = watcher_factory
  @on_change = on_change
  @scene_watcher = nil
  @shader_watchers = []
end

Instance Method Details

#startVizcore::Server::SceneDependencyWatcher



25
26
27
28
29
30
# File 'lib/vizcore/server/scene_dependency_watcher.rb', line 25

def start
  @scene_watcher = build_watcher(@scene_file)
  @scene_watcher.start
  refresh_shader_watchers(@definition)
  self
end

#stop(timeout: 1.0) ⇒ void

This method returns an undefined value.

Parameters:

  • timeout (Float) (defaults to: 1.0)


34
35
36
37
# File 'lib/vizcore/server/scene_dependency_watcher.rb', line 34

def stop(timeout: 1.0)
  @scene_watcher&.stop(timeout: timeout)
  stop_shader_watchers(timeout: timeout)
end