Class: Engine::Components::MeshRenderer

Inherits:
Engine::Component show all
Defined in:
lib/engine/components/renderers/mesh_renderer.rb

Instance Attribute Summary collapse

Attributes inherited from Engine::Component

#game_object

Instance Method Summary collapse

Methods inherited from Engine::Component

#_erase!, #destroy!, #destroyed?, destroyed_components, erase_destroyed_components, method_added, #set_game_object, #ui_renderer?, #update

Methods included from Serializable

allowed_class?, get_class, included, register_class, #uuid

Instance Attribute Details

#materialObject (readonly)

Returns the value of attribute material.



7
8
9
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 7

def material
  @material
end

#meshObject (readonly)

Returns the value of attribute mesh.



7
8
9
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 7

def mesh
  @mesh
end

#staticObject (readonly)

Returns the value of attribute static.



7
8
9
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 7

def static
  @static
end

Instance Method Details

#awakeObject



9
10
11
12
13
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 9

def awake
  @static = false if @static.nil?
  @last_synced_version = nil
  @renderer_key = nil
end

#destroyObject



37
38
39
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 37

def destroy
  Rendering::RenderPipeline.remove_instance(self)
end

#renderer?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 19

def renderer?
  true
end

#renderer_keyObject



15
16
17
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 15

def renderer_key
  @renderer_key ||= [mesh, material].freeze
end

#startObject



23
24
25
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 23

def start
  Rendering::RenderPipeline.add_instance(self)
end

#sync_transformObject



27
28
29
30
31
32
33
34
35
# File 'lib/engine/components/renderers/mesh_renderer.rb', line 27

def sync_transform
  return if static

  version = game_object.world_transform_version
  return if @last_synced_version == version

  @last_synced_version = version
  Rendering::RenderPipeline.update_instance(self)
end