Class: RuboCop::Cop::SketchupBugs::RenderMode
- Inherits:
-
SketchUp::Cop
- Object
- SketchUp::WorkaroundCop
- SketchUp::Cop
- RuboCop::Cop::SketchupBugs::RenderMode
- Includes:
- SketchUp::SketchUpTargetRange
- Defined in:
- lib/rubocop/sketchup/cop/bugs/render_mode.rb
Overview
A regression was introduced in SketchUp 2017 that cause invalid render modes to crash SketchUp. The crash might not happen exactly when the new mode is set, but later when the viewport re-draws.
Valid render modes are: (Internal enum names in parentheses)
-
‘0` (`kRenderWireframe`)
-
‘1` (`kRenderHidden`)
-
‘2` (`kRenderFlat`)
-
‘3` (`kRenderSmooth`)
-
‘5` (`kRenderNoMaterials`)
Constant Summary collapse
- RENDER_MODE_VALID =
[ 0, # kRenderWireframe, 1, # kRenderHidden, 2, # kRenderFlat, 3, # kRenderSmooth, 5, # kRenderNoMaterials ].freeze
- RENDER_MODE_OBSOLETE =
[ 4, # kRenderTextureObsolete, ].freeze
- MSG_OBSOLETE =
'Obsolete render mode will crash in SU2017 and '\ 'newer versions.'
- MSG_INVALID =
'Invalid render mode will crash in SU2017 and '\ 'newer versions.'
Constants inherited from SketchUp::Cop
SketchUp::Cop::SKETCHUP_DEPARTMENT_SEVERITY
Constants included from SketchUp::Config
SketchUp::Config::DEFAULT_CONFIGURATION
Instance Method Summary collapse
Methods included from SketchUp::SketchUpTargetRange
included, #sketchup_target_max_version, #sketchup_target_min_version, #valid_for_target_sketchup_version?
Methods inherited from SketchUp::Cop
Instance Method Details
#on_send(node) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rubocop/sketchup/cop/bugs/render_mode.rb', line 51 def on_send(node) return unless valid_for_target_sketchup_version? value = set_render_mode(node) return if value.nil? return if RENDER_MODE_VALID.include?(value) value_node = node.arguments.last = obsolete?(value) ? MSG_OBSOLETE : MSG_INVALID add_offense(value_node, message: ) end |