// Filename: attribSlots.h // Created by: jyelon (01Sep05) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved // // All use of this software is subject to the terms of the Panda 3d // Software license. You should have received a copy of this license // along with this source code; you will also find a current copy of // the license at http://etc.cmu.edu/panda3d/docs/license/ . // // To contact the maintainers of this program write to // panda3d-general@lists.sourceforge.net . // //////////////////////////////////////////////////////////////////// #ifndef ATTRIBSLOTS_H #define ATTRIBSLOTS_H #include "pandabase.h" #include "typedWritableReferenceCount.h" #include "pointerTo.h" #include "renderAttrib.h" #include "alphaTestAttrib.h" #include "antialiasAttrib.h" #include "clipPlaneAttrib.h" #include "colorAttrib.h" #include "colorBlendAttrib.h" #include "colorScaleAttrib.h" #include "colorWriteAttrib.h" #include "cullBinAttrib.h" #include "cullFaceAttrib.h" #include "depthOffsetAttrib.h" #include "depthTestAttrib.h" #include "depthWriteAttrib.h" #include "fogAttrib.h" #include "lightAttrib.h" #include "materialAttrib.h" #include "renderModeAttrib.h" #include "rescaleNormalAttrib.h" #include "shadeModelAttrib.h" #include "shaderAttrib.h" #include "stencilAttrib.h" #include "texMatrixAttrib.h" #include "texGenAttrib.h" #include "textureAttrib.h" #include "transparencyAttrib.h" //////////////////////////////////////////////////////////////////// // Class : AttribSlots // Description : This is a very simple class: an object full of // render attributes, one per attrib type. //////////////////////////////////////////////////////////////////// class EXPCL_PANDA AttribSlots { public: CPT(AlphaTestAttrib) _alpha_test; CPT(AntialiasAttrib) _antialias; CPT(ClipPlaneAttrib) _clip_plane; CPT(ColorAttrib) _color; CPT(ColorBlendAttrib) _color_blend; CPT(ColorScaleAttrib) _color_scale; CPT(ColorWriteAttrib) _color_write; CPT(CullBinAttrib) _cull_bin; CPT(CullFaceAttrib) _cull_face; CPT(DepthOffsetAttrib) _depth_offset; CPT(DepthTestAttrib) _depth_test; CPT(DepthWriteAttrib) _depth_write; CPT(FogAttrib) _fog; CPT(LightAttrib) _light; CPT(MaterialAttrib) _material; CPT(RenderModeAttrib) _render_mode; CPT(RescaleNormalAttrib) _rescale_normal; CPT(ShadeModelAttrib) _shade_model; CPT(ShaderAttrib) _shader; CPT(StencilAttrib) _stencil; CPT(TexGenAttrib) _tex_gen; CPT(TexMatrixAttrib) _tex_matrix; CPT(TextureAttrib) _texture; CPT(TransparencyAttrib) _transparency; public: AttribSlots(); AttribSlots(const AttribSlots ©); INLINE void clear_to_zero(); INLINE void clear_to_defaults(); void operator =(const AttribSlots &src); INLINE static const AttribSlots &get_defaults(); public: // Each "array" reference requires a switch and a DCAST, so it's not overly fast. enum { slot_count=24 }; const RenderAttrib *get_slot(int n) const; void set_slot(int n, const RenderAttrib *attrib); private: static AttribSlots _defvals; static void initialize_defvals(); }; #include "attribSlots.I" #endif /* ATTRIBSLOTS_H */