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
25namespace 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 {
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< EditorRenderTargetListener > EditorRenderTargetListenerPtr
Definition EditorMaterialSwitcher.hh:34
std::shared_ptr< EditorMaterialListener > EditorMaterialListenerPtr
Definition EditorMaterialSwitcher.hh:36
boost::shared_ptr< Camera > CameraPtr
Definition RenderTypes.hh:90
Forward declarations for the common classes.
Definition Animation.hh:27