Class: Cosmos::SceneConfig
- Defined in:
- lib/cosmos/tools/opengl_builder/scene_config.rb
Instance Attribute Summary collapse
-
#scene ⇒ Object
Returns the value of attribute scene.
Instance Method Summary collapse
-
#initialize(filename, dragable = true) ⇒ SceneConfig
constructor
A new instance of SceneConfig.
Constructor Details
#initialize(filename, dragable = true) ⇒ SceneConfig
Returns a new instance of SceneConfig.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/cosmos/tools/opengl_builder/scene_config.rb', line 22 def initialize(filename, dragable = true) @scene = GlScene.new shape = nil parser = ConfigParser.new parser.parse_file(filename) do |keyword, parameters| case keyword when 'STL_FILE' usage = "#{keyword} <filename> <scaling factor (optional)>" parser.verify_num_parameters(1, 2, usage) shape = StlShape.new(0.0, 0.0, 0.0) if parameters[0] =~ /^\// or parameters[0] =~ /^\w:/ shape.stl_file = parameters[0] else shape.stl_file = File.join(Cosmos::USERPATH, 'config', 'data', parameters[0]) end raise "STL File \"#{shape.stl_file}\" does not exist" unless File.exist? shape.stl_file shape.show_load_progress = true shape.tipText = parameters[0] shape.dragable = dragable if parameters[1] shape.stl_scaling_factor = parameters[1].to_f end @scene.append(shape) when 'TEXTURE_MAPPED_SPHERE' usage = "#{keyword} <texture_filename>" parser.verify_num_parameters(1, 1, usage) shape = TextureMappedSphere.new(0.0, 0.0, 0.0, parameters[0]) shape.dragable = dragable @scene.append(shape) when 'TIP_TEXT' usage = "#{keyword} <text>" parser.verify_num_parameters(1, 1, usage) shape.tipText = parameters[0] when 'COLOR' usage = "#{keyword} <red> <green> <blue> <alpha (optional)>" parser.verify_num_parameters(3, 4, usage) if parameters[3] shape.base_color = [parameters[0].to_f, parameters[1].to_f, parameters[2].to_f, parameters[3].to_f] else shape.base_color = [parameters[0].to_f, parameters[1].to_f, parameters[2].to_f, 1.0] end shape.color = shape.base_color.clone when 'POSITION' usage = "#{keyword} <x> <y> <z>" parser.verify_num_parameters(3, 3, usage) shape.position = [parameters[0].to_f, parameters[1].to_f, parameters[2].to_f] when 'ROTATION_X' usage = "#{keyword} <rotation_x>" parser.verify_num_parameters(1, 1, usage) shape.rotation_x = parameters[0].to_f when 'ROTATION_Y' usage = "#{keyword} <rotation_y>" parser.verify_num_parameters(1, 1, usage) shape.rotation_y = parameters[0].to_f when 'ROTATION_Z' usage = "#{keyword} <rotation_z>" parser.verify_num_parameters(1, 1, usage) shape.rotation_z = parameters[0].to_f when 'ZOOM' usage = "#{keyword} <zoom>" parser.verify_num_parameters(1, 1, usage) @scene.zoom = parameters[0].to_f when 'ORIENTATION' usage = "#{keyword} <q0> <q1> <q2> <q3 - scalar>" parser.verify_num_parameters(4, 4, usage) @scene.orientation = Quaternion.new([parameters[0].to_f, parameters[1].to_f, parameters[2].to_f, parameters[3].to_f]) when 'CENTER' usage = "#{keyword} <x> <y> <z>" parser.verify_num_parameters(3, 3, usage) @scene.center = [parameters[0].to_f, parameters[1].to_f, parameters[2].to_f] when 'BOUNDS' usage = "#{keyword} <x0> <x1> <y0> <y1> <z0> <z1>" parser.verify_num_parameters(6, 6, usage) @scene.bounds = GlBounds.new(parameters[0].to_f, parameters[1].to_f, parameters[2].to_f, parameters[3].to_f, parameters[4].to_f, parameters[5].to_f) else raise "Unknown keyword #{keyword} with parameters #{parameters.join(' ')}" end # case keyword end # parser.parse_file end |
Instance Attribute Details
#scene ⇒ Object
Returns the value of attribute scene.
20 21 22 |
# File 'lib/cosmos/tools/opengl_builder/scene_config.rb', line 20 def scene @scene end |