EditorMaterialSwitcher.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 #ifndef GAZEBO_GUI_MODEL_EDITORMATERIALSWITCHER_HH_
18 #define GAZEBO_GUI_MODEL_EDITORMATERIALSWITCHER_HH_
19 
20 #include <string>
21 
23 #include "gazebo/util/system.hh"
24 
25 namespace gazebo
26 {
27  namespace gui
28  {
29  // forward declarations
30  class EditorMaterialListener;
31  class EditorRenderTargetListener;
32 
33  // typedefs that are used only in this class
35  std::shared_ptr<EditorRenderTargetListener>;
37  std::shared_ptr<EditorMaterialListener>;
38 
42  class GZ_GUI_VISIBLE EditorMaterialSwitcher
43  {
47  public: explicit EditorMaterialSwitcher(
48  const rendering::CameraPtr &_camera);
49 
51  public: ~EditorMaterialSwitcher() = default;
52 
56  public: void SetMaterialScheme(const std::string &_scheme);
57 
60  public: std::string MaterialScheme() const;
61 
64  private: EditorRenderTargetListenerPtr renderTargetListener;
65 
68  private: EditorMaterialListenerPtr materialListener;
69 
71  private: rendering::CameraPtr camera;
72 
74  private: std::string originalMaterialScheme;
75 
77  private: std::string materialScheme;
78  };
79 
82  class EditorRenderTargetListener : public Ogre::RenderTargetListener
83  {
87  public: explicit EditorRenderTargetListener(
88  const EditorMaterialListenerPtr &_switcher);
89 
91  public: ~EditorRenderTargetListener() = default;
92 
96  public: virtual void preRenderTargetUpdate(
97  const Ogre::RenderTargetEvent &_evt);
98 
102  public: virtual void postRenderTargetUpdate(
103  const Ogre::RenderTargetEvent &_evt);
104 
106  private: EditorMaterialListenerPtr materialListener;
107  };
108 
111  class EditorMaterialListener : public Ogre::MaterialManager::Listener
112  {
116  public: explicit EditorMaterialListener(
117  const rendering::CameraPtr &_camera);
118 
120  public: ~EditorMaterialListener() = default;
121 
132  public: virtual Ogre::Technique *handleSchemeNotFound(
133  uint16_t _schemeIndex, const Ogre::String &_schemeName,
134  Ogre::Material *_originalMaterial, uint16_t _lodIndex,
135  const Ogre::Renderable *_rend);
136 
138  private: rendering::CameraPtr camera;
139  };
140  }
141 }
142 #endif
gui
Definition: KeyEventHandler.hh:29
Ogre material listener.
Definition: EditorMaterialSwitcher.hh:112
EditorMaterialListener(const rendering::CameraPtr &_camera)
Constructor.
~EditorMaterialListener()=default
Destructor.
virtual Ogre::Technique * handleSchemeNotFound(uint16_t _schemeIndex, const Ogre::String &_schemeName, Ogre::Material *_originalMaterial, uint16_t _lodIndex, const Ogre::Renderable *_rend)
Ogre callback that is used to specify the material to use when the requested scheme is not found.
Material switcher for the model editor used to toggle the material of the model.
Definition: EditorMaterialSwitcher.hh:43
~EditorMaterialSwitcher()=default
Destructor.
EditorMaterialSwitcher(const rendering::CameraPtr &_camera)
Constructor.
std::string MaterialScheme() const
Get the material scheme applied to the models in the editor.
void SetMaterialScheme(const std::string &_scheme)
Set the material scheme that will be applied to the models in the editor.
Ogre render target listener.
Definition: EditorMaterialSwitcher.hh:83
virtual void postRenderTargetUpdate(const Ogre::RenderTargetEvent &_evt)
Ogre's post-render update callback.
virtual void preRenderTargetUpdate(const Ogre::RenderTargetEvent &_evt)
Ogre's pre-render update callback.
~EditorRenderTargetListener()=default
Destructor.
EditorRenderTargetListener(const EditorMaterialListenerPtr &_switcher)
Constructor.
std::shared_ptr< EditorMaterialListener > EditorMaterialListenerPtr
Definition: EditorMaterialSwitcher.hh:37
std::shared_ptr< EditorRenderTargetListener > EditorRenderTargetListenerPtr
Definition: EditorMaterialSwitcher.hh:35
boost::shared_ptr< Camera > CameraPtr
Definition: RenderTypes.hh:90
Forward declarations for the common classes.
Definition: Animation.hh:27