227 lines
5.7 KiB
Text
227 lines
5.7 KiB
Text
|
/**
|
||
|
* PANDA 3D SOFTWARE
|
||
|
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||
|
*
|
||
|
* All use of this software is subject to the terms of the revised BSD
|
||
|
* license. You should have received a copy of this license along
|
||
|
* with this source code in a file named "LICENSE."
|
||
|
*
|
||
|
* @file eggRenderMode.I
|
||
|
* @author drose
|
||
|
* @date 1999-01-20
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE EggRenderMode::
|
||
|
EggRenderMode(const EggRenderMode ©) {
|
||
|
(*this) = copy;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Specifies whether writes should be made to the depth buffer (assuming the
|
||
|
* rendering backend provides a depth buffer) when rendering this geometry.
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_depth_write_mode(DepthWriteMode mode) {
|
||
|
_depth_write_mode = mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the depth_write mode that was set, or DWM_unspecified if nothing
|
||
|
* was set. See set_depth_write_mode().
|
||
|
*/
|
||
|
INLINE EggRenderMode::DepthWriteMode EggRenderMode::
|
||
|
get_depth_write_mode() const {
|
||
|
return _depth_write_mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Specifies whether this geometry should be tested against the depth buffer
|
||
|
* when it is drawn (assuming the rendering backend provides a depth buffer).
|
||
|
* Note that this is different, and independent from, the depth_write mode.
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_depth_test_mode(DepthTestMode mode) {
|
||
|
_depth_test_mode = mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the depth_test mode that was set, or DTM_unspecified if nothing was
|
||
|
* set. See set_depth_test_mode().
|
||
|
*/
|
||
|
INLINE EggRenderMode::DepthTestMode EggRenderMode::
|
||
|
get_depth_test_mode() const {
|
||
|
return _depth_test_mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Specifies whether this geometry is to be considered normally visible, or
|
||
|
* hidden. If it is hidden, it is either not loaded into the scene graph at
|
||
|
* all, or loaded as a "stashed" node, according to the setting of egg-
|
||
|
* suppress-hidden.
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_visibility_mode(VisibilityMode mode) {
|
||
|
_visibility_mode = mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the visibility mode that was set, or VM_unspecified if nothing was
|
||
|
* set. See set_visibility_mode().
|
||
|
*/
|
||
|
INLINE EggRenderMode::VisibilityMode EggRenderMode::
|
||
|
get_visibility_mode() const {
|
||
|
return _visibility_mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Specifies precisely how the transparency for this geometry should be
|
||
|
* achieved, or if it should be used. The default, AM_unspecified, is to use
|
||
|
* transparency if the geometry has a color whose alpha value is non-1, or if
|
||
|
* it has a four-channel texture applied; otherwise, AM_on forces transparency
|
||
|
* on, and AM_off forces it off. The other flavors of transparency are
|
||
|
* specific ways to turn on transparency, which may or may not be supported by
|
||
|
* a particular rendering backend.
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_alpha_mode(AlphaMode mode) {
|
||
|
_alpha_mode = mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the alpha mode that was set, or AM_unspecified if nothing was set.
|
||
|
* See set_alpha_mode().
|
||
|
*/
|
||
|
INLINE EggRenderMode::AlphaMode EggRenderMode::
|
||
|
get_alpha_mode() const {
|
||
|
return _alpha_mode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the "depth-offset" flag associated with this object. This adds or
|
||
|
* subtracts an offset bias into the depth buffer. See also DepthOffsetAttrib
|
||
|
* and NodePath::set_depth_offset().
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_depth_offset(int order) {
|
||
|
_depth_offset = order;
|
||
|
_has_depth_offset = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Returns the "depth-offset" flag as set for this particular object. See
|
||
|
* set_depth_offset().
|
||
|
*/
|
||
|
INLINE int EggRenderMode::
|
||
|
get_depth_offset() const {
|
||
|
return _depth_offset;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns true if the depth-offset flag has been set for this particular
|
||
|
* object. See set_depth_offset().
|
||
|
*/
|
||
|
INLINE bool EggRenderMode::
|
||
|
has_depth_offset() const {
|
||
|
return _has_depth_offset;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Removes the depth-offset flag from this particular object. See
|
||
|
* set_depth_offset().
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
clear_depth_offset() {
|
||
|
_has_depth_offset = false;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Sets the "draw-order" flag associated with this object. This specifies a
|
||
|
* particular order in which objects of this type should be drawn, within the
|
||
|
* specified bin. If a bin is not explicitly specified, "fixed" is used. See
|
||
|
* also set_bin().
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_draw_order(int order) {
|
||
|
_draw_order = order;
|
||
|
_has_draw_order = true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the "draw-order" flag as set for this particular object. See
|
||
|
* set_draw_order().
|
||
|
*/
|
||
|
INLINE int EggRenderMode::
|
||
|
get_draw_order() const {
|
||
|
return _draw_order;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns true if the draw-order flag has been set for this particular
|
||
|
* object. See set_draw_order().
|
||
|
*/
|
||
|
INLINE bool EggRenderMode::
|
||
|
has_draw_order() const {
|
||
|
return _has_draw_order;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Removes the draw-order flag from this particular object. See
|
||
|
* set_draw_order().
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
clear_draw_order() {
|
||
|
_has_draw_order = false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the "bin" string for this particular object. This names a particular
|
||
|
* bin in which the object should be rendered. The exact meaning of a bin is
|
||
|
* implementation defined, but generally a GeomBin matching each bin name must
|
||
|
* also be specifically added to the rendering engine (e.g. the
|
||
|
* CullTraverser) in use for this to work. See also set_draw_order().
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
set_bin(const std::string &bin) {
|
||
|
_bin = bin;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the bin name that has been set for this particular object, if any.
|
||
|
* See set_bin().
|
||
|
*/
|
||
|
INLINE std::string EggRenderMode::
|
||
|
get_bin() const {
|
||
|
return _bin;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns true if a bin name has been set for this particular object. See
|
||
|
* set_bin().
|
||
|
*/
|
||
|
INLINE bool EggRenderMode::
|
||
|
has_bin() const {
|
||
|
return !_bin.empty();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Removes the bin name that was set for this particular object. See
|
||
|
* set_bin().
|
||
|
*/
|
||
|
INLINE void EggRenderMode::
|
||
|
clear_bin() {
|
||
|
_bin = std::string();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE bool EggRenderMode::
|
||
|
operator != (const EggRenderMode &other) const {
|
||
|
return !(*this == other);
|
||
|
}
|