Class: FelECS::Scenes
- Inherits:
-
Object
- Object
- FelECS::Scenes
- Defined in:
- lib/felecs.rb,
lib/felecs/scene_manager.rb
Overview
Creates and manages Scenes. Scenes are collections of Systems, and execute all the Systems when called upon. Any scenes you create are accessable under the Scenes namespace as Constants.
Instance Attribute Summary collapse
-
#priority ⇒ Object
How early this Scene should be executed in a list of Scenes.
-
#systems ⇒ Array<System>
readonly
The list of Systems this Scene contains.
Instance Method Summary collapse
-
#add(*systems_to_add) ⇒ Boolean
Adds any number of Systems to this Scene.
-
#call ⇒ Boolean
Execute all systems in this Scene, in the order of their priority.
-
#clear ⇒ Boolean
Removes all Systems from this Scene.
-
#initialize(name, priority: 0) ⇒ Scenes
constructor
Create a new Scene using the name given.
-
#remove(*systems_to_remove) ⇒ Boolean
Removes any number of Systems from this Scene.
Constructor Details
Instance Attribute Details
#priority ⇒ Object
How early this Scene should be executed in a list of Scenes
12 13 14 |
# File 'lib/felecs/scene_manager.rb', line 12 def priority @priority end |
#systems ⇒ Array<System>
The list of Systems this Scene contains
29 30 31 |
# File 'lib/felecs/scene_manager.rb', line 29 def systems @systems ||= [] end |
Instance Method Details
#add(*systems_to_add) ⇒ Boolean
Adds any number of Systems to this Scene
42 43 44 45 46 47 48 49 |
# File 'lib/felecs/scene_manager.rb', line 42 def add(*systems_to_add) self.systems |= systems_to_add self.systems = systems.sort_by(&:priority) systems_to_add.each do |system| system.scenes |= [self] end true end |
#call ⇒ Boolean
Execute all systems in this Scene, in the order of their priority
35 36 37 38 |
# File 'lib/felecs/scene_manager.rb', line 35 def call systems.each(&:call) true end |
#clear ⇒ Boolean
Removes all Systems from this Scene
60 61 62 63 64 65 66 67 |
# File 'lib/felecs/scene_manager.rb', line 60 def clear systems.each do |system| system.scenes.delete self end systems.clear # FelECS::Stage.update_systems_list if FelECS::Stage.scenes.include? self true end |
#remove(*systems_to_remove) ⇒ Boolean
Removes any number of Systems from this Scene
53 54 55 56 |
# File 'lib/felecs/scene_manager.rb', line 53 def remove(*systems_to_remove) self.systems -= systems_to_remove true end |