r3mpleve
real/code/r3mpleve.h
r3code
Base class for all hierarchical material shaders. Level shader defines new kind of 'material properties' called 'local variables'.
r3Matprop
R3CLID_MATPROP
r3Mplevel
R3CLID_MPLEVEL - 396
_WAS_ENUMVARIABLES, _WAS_NEWVARIABLE, _WAS_DELVARIABLE, _WAS_RENAMEVARIABLE, _WAS_SETVARIABLETYP, _WAS_GETVARIABLETYP, ENUMSTACKITEMS, INSERTPROP, SETPARENT, INSERT, ADDHEAD, ADDTAIL, REMOVE,
Children, Variables, StackTotalCount, StackLocalCount, Open, StackLocalInitValue, EvaluateSuper, PublicAttrCount, PublicAttrChannels, PublicAttrNames, InitVarCount,
int R3RegisterMPLevelClass(R3APP *app);
R3MPLEVM__WAS_ENUMVARIABLES
_WAS_ENUMVARIABLES
R3MPLEVM__WAS_ENUMVARIABLES
R3OBJ*, callback object
R3INT, callback method
void*, user specific data
obj._WAS_ENUMVARIABLES(p1, p2, p3);
Enumerates defined local variables. The callback method is send as follows: R3SendMsgA3((R3OBJ *)p1, (R3INT)p2, char *name, (R3INT)id, (void *)msg);
R3MPLEVM__WAS_NEWVARIABLE
_WAS_NEWVARIABLE
R3MPLEVM__WAS_NEWVARIABLE
R3INT, variable id unique in this shader
char*, name for the variable
R3INT, type id
R3INT, see codes below
rc = obj._WAS_NEWVARIABLE(p1, p2, p3);
Create a new local variable for the shader
R3MPLEVM__WAS_DELVARIABLE
_WAS_DELVARIABLE
R3MPLEVM__WAS_DELVARIABLE
R3BOOL, TRUE if found
rc = obj._WAS_DELVARIABLE();
Delete local variable
R3MPLEVM__WAS_RENAMEVARIABLE
_WAS_RENAMEVARIABLE
R3MPLEVM__WAS_RENAMEVARIABLE
R3BOOL, TRUE if found
rc = obj._WAS_RENAMEVARIABLE();
Rename local variable
R3MPLEVM__WAS_SETVARIABLETYP
_WAS_SETVARIABLETYP
R3MPLEVM__WAS_SETVARIABLETYP
R3BOOL, TRUE if found
R3INT, type id
rc = obj._WAS_SETVARIABLETYP(p3);
Change the type of local variable
R3MPLEVM__WAS_GETVARIABLETYP
_WAS_GETVARIABLETYP
R3MPLEVM__WAS_GETVARIABLETYP
R3INT, type id of the variable, or NULL if a variable with the given name is not defined
rc = obj._WAS_GETVARIABLETYP();
Change the type of local variable
R3MPLEVM_ENUMSTACKITEMS
ENUMSTACKITEMS
R3MPLEVM_ENUMSTACKITEMS
R3OBJ*, callback object
R3INT, callback method
R3TAG*
obj.ENUMSTACKITEMS(p1, p2, p3);
Enumerates defined local stack items. The callback method is sent as follows: R3Do3((R3OBJ *)p1, (R3INT)p2, char *name, (R3INT)id, R3MPLEVA_StackCallDepth, depth, R3MATPRPA_OutputType, type, R3MATPRPA_OutputChannel, channel_clid, R3MATPRPA_OutputIdentifier, id, R3RA_HookData, context, R3TAG_END);
R3MPLEVM_INSERTPROP
INSERTPROP
R3MPLEVM_INSERTPROP
R3OBJ*, address of the shader object or NULL if failed
R3OBJ*, if not NULL insert child after this. if p1 == obj then insert child as the 1st shader.
R3OBJ*, child shader
rc = obj.INSERTPROP(p1, p3);
Insert a shader under parent
R3MPLEVCM_SETPARENT
SETPARENT
R3MPLEVCM_SETPARENT
R3OBJ*, old parent
R3OBJ*, new parent
R3OBJ*, child whose parent is to be changed.
obj.SETPARENT(p1, p2, p3);
callback method for R3MATPRPCA_SetParentXxx.
R3MPLEVM_INSERT
INSERT
R3MPLEVM_INSERT
R3BOOL, true of node was found
R3BOOL, don't send childchanged method
R3OBJ*, previous object
R3OBJ*, object to be inserted
rc = obj.INSERT(p1, p2, p3);
Insert new object after the given node
R3MPLEVM_ADDHEAD
ADDHEAD
R3MPLEVM_ADDHEAD
R3BOOL, don't send childchanged method
R3OBJ*, object to be inserted
obj.ADDHEAD(p1, p3);
Insert given object to the head of the children list
R3MPLEVM_ADDTAIL
ADDTAIL
R3MPLEVM_ADDTAIL
R3BOOL, don't send childchanged method
R3OBJ*, address of the object to be inserted
obj.ADDTAIL(p1, p3);
Inserts new sub object at the head of the children list
R3MPLEVM_REMOVE
REMOVE
R3MPLEVM_REMOVE
R3OBJ*, sub object to be removed
obj.REMOVE(p3);
Remove the given children from the children list
Children
Children
R3MPLEVA_Children
r3List
R3LIST*
list of sub-shaders
value = jsobj.GetChildren();
R3LIST* value;
R3GetAttrs(r3obj, R3MPLEVA_Children, &value, R3TAG_END);
Variables
Variables
R3MPLEVA_Variables
r3List
R3LIST
list of variables
jsobj.SetVariables(value);
R3LIST value = ...;
R3SetAttrs(r3obj, R3MPLEVA_Variables, value, R3TAG_END);
StackTotalCount
StackTotalCount
R3MPLEVA_StackTotalCount
Integer
R3INT
number of items in rendering stack (retval,params,...,locals)
value = jsobj.GetStackTotalCount();
R3INT value;
R3GetAttrs(r3obj, R3MPLEVA_StackTotalCount, &value, R3TAG_END);
StackLocalCount
StackLocalCount
R3MPLEVA_StackLocalCount
Integer
R3INT
number of local variables in rendering stack
value = jsobj.GetStackLocalCount();
R3INT value;
R3GetAttrs(r3obj, R3MPLEVA_StackLocalCount, &value, R3TAG_END);
Open
Open
R3MPLEVA_Open
Boolean
R3BOOL
show child objects
jsobj.SetOpen(value);
value = jsobj.GetOpen();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3MPLEVA_Open, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3MPLEVA_Open, &value, R3TAG_END);
StackLocalInitValue
StackLocalInitValue
R3MPLEVA_StackLocalInitValue
String
void*
Reads R3MPLEVA_StackLocalCount init values of child variables to given vector array
value = jsobj.GetStackLocalInitValue();
void* value;
R3GetAttrs(r3obj, R3MPLEVA_StackLocalInitValues, &value, R3TAG_END);
EvaluateSuper
EvaluateSuper
R3MPLEVA_EvaluateSuper
Boolean
R3BOOL
TRUE if the class computes a shading action (not just a level construct)
value = jsobj.GetEvaluateSuper();
R3BOOL value;
R3GetAttrs(r3obj, R3MPLEVA_EvaluateSuper, &value, R3TAG_END);
PublicAttrCount
PublicAttrCount
R3MPLEVA_PublicAttrCount
Integer
R3INT
value = jsobj.GetPublicAttrCount();
R3INT value;
R3GetAttrs(r3obj, R3MPLEVA_PublicAttrCount, &value, R3TAG_END);
PublicAttrChannels
PublicAttrChannels
R3MPLEVA_PublicAttrChannels
String
void*
R3CLID *, array of channel clids defining the pubattr type
value = jsobj.GetPublicAttrChannels();
void* value;
R3GetAttrs(r3obj, R3MPLEVA_PublicAttrChannels, &value, R3TAG_END);
PublicAttrNames
PublicAttrNames
R3MPLEVA_PublicAttrNames
String
void*
array of names
value = jsobj.GetPublicAttrNames();
void* value;
R3GetAttrs(r3obj, R3MPLEVA_PublicAttrNames, &value, R3TAG_END);
InitVarCount
InitVarCount
R3MPLEVA_InitVarCount
Integer
R3INT
number of initialized local variables
value = jsobj.GetInitVarCount();
R3INT value;
R3GetAttrs(r3obj, R3MPLEVA_InitVarCount, &value, R3TAG_END);
Codes for the NEWVARIABLE/p3 parameter