1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
15#define OSG_RENDERINFO 1
21// forward declare RenderBin so we can refer to it in RenderInfo
34 RenderInfo(const RenderInfo& rhs):
37 _cameraStack(rhs._cameraStack),
38 _renderBinStack(rhs._renderBinStack),
39 _userData(rhs._userData) {}
41 RenderInfo(State* state, View* view):
45 RenderInfo& operator = (const RenderInfo& rhs)
49 _cameraStack = rhs._cameraStack;
50 _renderBinStack = rhs._renderBinStack;
51 _userData = rhs._userData;
55 unsigned int getContextID() const { return _state.valid() ? _state->getContextID() : 0; }
57 void setState(State* state) { _state = state; }
58 State* getState() { return _state.get(); }
59 const State* getState() const { return _state.get(); }
61 void setView(View* view) { _view = view; }
62 View* getView() { return _view; }
63 const View* getView() const { return _view; }
65 void pushCamera(Camera* camera) { _cameraStack.push_back(camera); }
66 void popCamera() { if (!_cameraStack.empty()) _cameraStack.pop_back(); }
68 typedef std::vector<Camera*> CameraStack;
69 CameraStack& getCameraStack() { return _cameraStack; }
71 Camera* getCurrentCamera() { return _cameraStack.empty() ? 0 : _cameraStack.back(); }
73 void pushRenderBin(osgUtil::RenderBin* bin) { _renderBinStack.push_back(bin); }
74 void popRenderBin() { _renderBinStack.pop_back(); }
76 typedef std::vector<osgUtil::RenderBin*> RenderBinStack;
77 RenderBinStack& getRenderBinStack() { return _renderBinStack; }
79 void setUserData(Referenced* userData) { _userData = userData; }
80 Referenced* getUserData() { return _userData.get(); }
81 const Referenced* getUserData() const { return _userData.get(); }
86 ref_ptr<State> _state;
88 CameraStack _cameraStack;
89 RenderBinStack _renderBinStack;
90 ref_ptr<Referenced> _userData;