Coin
4.0.3
Coin3D core library
|
The SoOverrideElement maintains a list of overridable elements and a list over which elements should be overridden. More...
#include <Inventor/elements/SoOverrideElement.h>
Public Types | |
enum | FlagBits { AMBIENT_COLOR = 0x00000001 , COLOR_INDEX = 0x00000002 , COMPLEXITY = 0x00000004 , COMPLEXITY_TYPE = 0x00000008 , CREASE_ANGLE = 0x00000010 , DIFFUSE_COLOR = 0x00000020 , DRAW_STYLE = 0x00000040 , EMISSIVE_COLOR = 0x00000080 , FONT_NAME = 0x00000100 , FONT_SIZE = 0x00000200 , LIGHT_MODEL = 0x00000400 , LINE_PATTERN = 0x00000800 , LINE_WIDTH = 0x00001000 , MATERIAL_BINDING = 0x00002000 , POINT_SIZE = 0x00004000 , PICK_STYLE = 0x00008000 , SHAPE_HINTS = 0x00010000 , SHININESS = 0x00020000 , SPECULAR_COLOR = 0x00040000 , POLYGON_OFFSET = 0x00080000 , TRANSPARENCY = 0x00100000 , TRANSPARENCY_TYPE = 0x00200000 , NORMAL_VECTOR = 0x00400000 , NORMAL_BINDING = 0x00800000 } |
Public Member Functions | |
virtual SoElement * | copyMatchInfo (void) const |
FIXME: write doc. | |
virtual void | init (SoState *state) |
virtual SbBool | matches (const SoElement *element) const |
FIXME: write doc. | |
virtual void | print (FILE *file) const |
FIXME: write doc. | |
virtual void | push (SoState *state) |
FIXME: write doc. | |
Public Member Functions inherited from SoElement | |
virtual | ~SoElement () |
int | getDepth (void) const |
int | getStackIndex (void) const |
const SoType | getTypeId (void) const |
virtual void | pop (SoState *state, const SoElement *prevTopElement) |
void | setDepth (const int depth) |
Protected Member Functions | |
virtual | ~SoOverrideElement () |
Protected Member Functions inherited from SoElement | |
SoElement (void) | |
void | capture (SoState *const state) const |
virtual void | captureThis (SoState *state) const |
SoElement * | getNextFree (void) const |
SoElement * | getNextInStack (void) const |
void | setStackIndex (const int index) |
void | setTypeId (const SoType typeId) |
Additional Inherited Members | |
Static Protected Member Functions inherited from SoElement | |
static int | createStackIndex (const SoType id) |
static const SoElement * | getConstElement (SoState *const state, const int stackIndex) |
static SoElement * | getElement (SoState *const state, const int stackIndex) |
Protected Attributes inherited from SoElement | |
int | depth |
int | stackIndex |
SoType | typeId |
Static Protected Attributes inherited from SoElement | |
static int | classStackIndex |
static SoTypeList * | stackToType |
The SoOverrideElement maintains a list of overridable elements and a list over which elements should be overridden.
Only certain elements can be overridden.
The remaining class documentation describes a single, special case:
A common request for functionality is to override only the transparency of the full scene graph, or parts of the scene graph.
In the original SGI Inventor, this is nearly impossible, as the API was designed to only make it possible to override all or none of the fields of a node. So calling SoNode::setOverride() on an SoMaterial node will cause all material settings of that node to override all material settings further on in the scene graph, and there is no way to override only the transparency settings.
In Coin, we have added in a little hack to overcome this problem, since it is such a common request for functionality: to have separate transparency override settings, set the environment variable COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE
to "1" to enable this hack.
(Do however note that this will not work when the SoPackedColor or SoVertexProperty node is used to specify diffuse color and transparency – only with the SoMaterial node.)
Here is a complete, standalone example which demonstrates how to accomplish this:
FIXME: write doc.
|
protectedvirtual |
Destructor.
FIXME: write doc.
Implements SoElement.
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.
Creates a new instance of the class type corresponding to the SoType object.
|
static |
This static method returns the state stack index for the class.
This static method returns the SoType object associated with objects of this class.
FIXME: write doc.
FIXME: write doc.
FIXME: write doc.
Initializes the element to its default value. The default value for flags is 0.
Reimplemented from SoElement.
Initialize relevant common data for all instances, like the type system.
FIXME: write doc.
Implements SoElement.
FIXME: write doc.
Reimplemented from SoElement.
FIXME: write doc.
Reimplemented from SoElement.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
Can be used to set diffuse color override. This will also set the transparency override. Since we feel this is a design flaw, it is possible to override this behaviour by setting an environment value called COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE to 1.
Please note that separate override will not work for the PackedColor or SoVertexProperty nodes.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
FIXME: write doc.
|
static |
Can be used to set the transparency override.
|
static |
Can be used to set the transparency type override.