Class: Jolt::Layers

Inherits:
Object
  • Object
show all
Defined in:
lib/jolt/layers.rb

Defined Under Namespace

Classes: Builder, NativeResources

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object_layers:, broad_phase_layers:, mappings:, collisions:) ⇒ Layers

Returns a new instance of Layers.



27
28
29
30
31
32
33
# File 'lib/jolt/layers.rb', line 27

def initialize(object_layers:, broad_phase_layers:, mappings:, collisions:)
  @object_layers = object_layers.freeze
  @broad_phase_layers = broad_phase_layers.freeze
  @mappings = mappings.freeze
  @collisions = collisions.freeze
  freeze
end

Instance Attribute Details

#broad_phase_layersObject (readonly)

Returns the value of attribute broad_phase_layers.



25
26
27
# File 'lib/jolt/layers.rb', line 25

def broad_phase_layers
  @broad_phase_layers
end

#object_layersObject (readonly)

Returns the value of attribute object_layers.



25
26
27
# File 'lib/jolt/layers.rb', line 25

def object_layers
  @object_layers
end

Class Method Details

.defaultObject



8
9
10
11
12
13
14
15
16
# File 'lib/jolt/layers.rb', line 8

def default
  @default ||= define do |layers|
    layers.broad_phase :static_bp, :dynamic_bp
    layers.object :non_moving, broad_phase: :static_bp
    layers.object :moving, broad_phase: :dynamic_bp
    layers.collide :non_moving, with: :moving
    layers.collide :moving, with: :moving
  end
end

.define {|builder| ... } ⇒ Object

Yields:

  • (builder)


18
19
20
21
22
# File 'lib/jolt/layers.rb', line 18

def define
  builder = Builder.new
  yield builder
  builder.build
end

Instance Method Details

#native_resourcesObject



41
42
43
# File 'lib/jolt/layers.rb', line 41

def native_resources
  NativeResources.new(self, @mappings, @collisions)
end

#object_layer_id(name) ⇒ Object



35
36
37
38
39
# File 'lib/jolt/layers.rb', line 35

def object_layer_id(name)
  @object_layers.fetch(name.to_sym)
rescue KeyError
  raise InvalidArgumentError, "unknown object layer: #{name.inspect}"
end