00001 /**************************************************************************************/00002 /* */00003 /* Visualization Library */00004 /* http://visualizationlibrary.org */00005 /* */00006 /* Copyright (c) 2005-2010, Michele Bosi */00007 /* All rights reserved. */00008 /* */00009 /* Redistribution and use in source and binary forms, with or without modification, */00010 /* are permitted provided that the following conditions are met: */00011 /* */00012 /* - Redistributions of source code must retain the above copyright notice, this */00013 /* list of conditions and the following disclaimer. */00014 /* */00015 /* - Redistributions in binary form must reproduce the above copyright notice, this */00016 /* list of conditions and the following disclaimer in the documentation and/or */00017 /* other materials provided with the distribution. */00018 /* */00019 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */00020 /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */00021 /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */00022 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */00023 /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */00024 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */00025 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */00026 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */00027 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */00028 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */00029 /* */00030 /**************************************************************************************/00031
00032 #ifndef ClipPlane_INCLUDE_ONCE00033 #define ClipPlane_INCLUDE_ONCE00034
00035 #include <vlCore/Plane.hpp>00036 #include <vlGraphics/Camera.hpp>00037 #include <vlGraphics/RenderState.hpp>00038
00039 namespace vl
00040 {
00041 //-----------------------------------------------------------------------------00042 // ClipPlane00043 //-----------------------------------------------------------------------------00049class VLGRAPHICS_EXPORTClipPlane: publicRenderStateIndexed00050 {
00051 VL_INSTRUMENT_CLASS(vl::ClipPlane, RenderStateIndexed)
00052
00053 public:
00054
00056 ClipPlane(real o=0.0f, vec3 n=vec3(0,0,0));
00057
00059 ClipPlane(constvec3& o, constvec3& n);
00060
00062virtualERenderStatetype() const { returnRS_ClipPlane; }
00063
00065 virtualvoid apply(int index, constCamera* camera, OpenGLContext*) const;
00066
00068voidbindTransform(Transform* transform) { mBoundTransform = transform; }
00069
00071Transform* boundTransform() { return mBoundTransform.get(); }
00072
00074constTransform* boundTransform() const { return mBoundTransform.get(); }
00075
00077constPlane& plane() const { return mPlane; }
00078
00080Plane& plane() { return mPlane; }
00081
00083voidsetPlane(constPlane& plane) { mPlane = plane; }
00084
00085virtualref<RenderState> clone() const00086 {
00087 ref<ClipPlane> rs = newClipPlane;
00088 *rs = *this;
00089 return rs;
00090 }
00091
00092voidsetEnabled(bool enabled) { mEnabled = enabled; }
00093
00094boolenabled() const { return mEnabled; }
00095
00096 protected:
00097ref<Transform>mBoundTransform;
00098PlanemPlane;
00099boolmEnabled;
00100 };
00101 //-----------------------------------------------------------------------------00102 }
00103
00104 #endif
Visualization Library v1.0.3 Reference Documentation
Copyright Michele Bosi. All rights reserved.
Updated on Tue Feb 7 2017 00:55:02.
Permission is granted to use this page to write and publish articles regarding Visualization Library.