LWTypes::LWXPanelHint notify_hint[] =
{
XpCHGNOTIFY( UI_Change_Notify ),
XpLABEL ( 0, node_name ),
XpDIVADD ( Interface_Bump_Dropoff_ID ),
XpGROUP_( Interface_Group_Settings_ID ),
XpH( Interface_Use_Simple_Color_ID ),
XpH( Interface_Full_Color_Cutoff_ID ),
XpH( Interface_Use_Simple_Specular_ID ),
XpH( Interface_Full_Specular_Cutoff_ID ),
XpH( Interface_Specular_Cutoff_ID ),
XpH( Interface_Use_Simple_Roughness_ID ),
XpH( Interface_Full_Roughness_Cutoff_ID ),
XpH( Interface_Use_Simple_Transparency_ID ),
XpH( Interface_Full_Transparency_Cutoff_ID ),
XpH( Interface_Use_Simple_Refraction_ID ),
XpH( Interface_Full_Refraction_Cutoff_ID ),
XpH( Interface_Refraction_Cutoff_ID ),
XpH( Interface_Normal_Cutoff_ID ),
XpH( Interface_Bump_Cutoff_ID ),
XpH(0),
XpLABEL( Interface_Group_Settings_ID, "Settings" ),
XpGROUP_( Interface_Group_GI_Settings_ID ),
XpH( Interface_Independent_GI_Settings_ID ),
XpH( Interface_GI_Use_Simple_Color_ID ),
XpH( Interface_GI_Full_Color_Cutoff_ID ),
XpH( Interface_GI_Use_Simple_Specular_ID ),
XpH( Interface_GI_Full_Specular_Cutoff_ID ),
XpH( Interface_GI_Specular_Cutoff_ID ),
XpH( Interface_GI_Use_Simple_Roughness_ID ),
XpH( Interface_GI_Full_Roughness_Cutoff_ID ),
XpH( Interface_GI_Use_Simple_Transparency_ID ),
XpH( Interface_GI_Full_Transparency_Cutoff_ID ),
XpH( Interface_GI_Use_Simple_Refraction_ID ),
XpH( Interface_GI_Full_Refraction_Cutoff_ID ),
XpH( Interface_GI_Refraction_Cutoff_ID ),
XpH( Interface_GI_Normal_Cutoff_ID ),
XpH( Interface_GI_Bump_Cutoff_ID ),
XpH(0),
XpLABEL( Interface_Group_GI_Settings_ID, "GI Settings" ),
XpTABS_( Interface_Tab_Optimize_Settings_ID ),
XpH( Interface_Group_Settings_ID ),
XpH( Interface_Group_GI_Settings_ID ),
XpH(0),
XpEND
};
Are the controls automatically erased/displayed when you switch tabs?
interesting...
// ------------------------------------------------------------------------ XPanel_Interface_Get()
void * Simplex_Noise::XPanel_Interface_Get( unsigned int control_id )
{
// Convenience Functions
auto is_Connected = Input_Functions->check;
auto get_if_Unconnected = [&]( LWTypes::NodeInputID input_id, void * data_address ) { return is_Connected( input_id ) ? nullptr : data_address; };
// Return pointer to setting to be displayed in control, or nullptr if disabled.
switch ( control_id )
{
case Interface_Color_Foreground_ID : return get_if_Unconnected( Input_Color_Foreground.ID, &Settings_Color_Foreground.Value );
case Interface_Color_Background_ID : return get_if_Unconnected( Input_Color_Background.ID, &Settings_Color_Background.Value );
case Interface_Blending_ID : return get_if_Unconnected( Input_Blending.ID, &Settings_Blending.Value );
case Interface_Alpha_Foreground_ID : return get_if_Unconnected( Input_Alpha_Foreground.ID, &Settings_Alpha_Foreground.Value );
case Interface_Alpha_Background_ID : return get_if_Unconnected( Input_Alpha_Background.ID, &Settings_Alpha_Background.Value );
case Interface_Opacity_ID : return get_if_Unconnected( Input_Opacity.ID, &Settings_Opacity.Value );
case Interface_Invert_ID : return &Settings_Invert.Value;
case Interface_Small_Scale_ID : return get_if_Unconnected( Input_Small_Scale.ID, &Settings_Small_Scale.Value );
case Interface_Contrast_ID : return get_if_Unconnected( Input_Contrast.ID, &Settings_Contrast.Value );
case Interface_Octaves_ID : return get_if_Unconnected( Input_Octaves.ID, &Settings_Octaves.Value );
case Interface_Bump_Height_ID : return get_if_Unconnected( Input_Bump_Height.ID, &Settings_Bump_Height.Value );
case Interface_World_Coordinates_ID: return &Settings_World_Coodinates.Value;
case Interface_Scale_X_ID : return get_if_Unconnected( Input_Scale.ID, &Settings_Scale.Value.X() );
case Interface_Scale_Y_ID : return get_if_Unconnected( Input_Scale.ID, &Settings_Scale.Value.Y() );
case Interface_Scale_Z_ID : return get_if_Unconnected( Input_Scale.ID, &Settings_Scale.Value.Z() );
case Interface_Position_X_ID : return get_if_Unconnected( Input_Position.ID, &Settings_Position.Value.X());
case Interface_Position_Y_ID : return get_if_Unconnected( Input_Position.ID, &Settings_Position.Value.Y());
case Interface_Position_Z_ID : return get_if_Unconnected( Input_Position.ID, &Settings_Position.Value.Z());
case Interface_Rotation_H_ID : return get_if_Unconnected( Input_Rotation.ID, &Settings_Rotation.Value.H());
case Interface_Rotation_P_ID : return get_if_Unconnected( Input_Rotation.ID, &Settings_Rotation.Value.P());
case Interface_Rotation_B_ID : return get_if_Unconnected( Input_Rotation.ID, &Settings_Rotation.Value.B());
default:
return nullptr;
}