THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 20/04/2007 at 04:06, xxxxxxxx wrote:
Hi Matthias,
it is nothing special, just a simple dummy shader, mainly for getting access to some data of the shader to export it.
It is written in Coffee.
// global variables
var DiffuseResource;
var DiffuseDialogVar; // dialog variable
var DiffuseVariables; // temporary saved settings
// create variable stuct
struct diffuse_variables
{
var sfdiffcolor;
var sfdifftex;
}
///////////////
// procedures
InitDiffuseVariables()
{
DiffuseVariables = new(diffuse_variables);
DiffuseVariables->sfdifftex = new(Filename);
DiffuseVariables->sfdifftex->SetFullString("Please select a texture");
DiffuseVariables->sfdiffcolor = vector(1.0, 1.0, 1.0);
}
// dialog class
class DiffuseDialog : GeModalDialog
{
public:
DiffuseDialog();
CreateLayout();
Init();
Command(id,msg);
}
DiffuseDialog::DiffuseDialog()
{
super();
}
DiffuseDialog::CreateLayout()
{
LoadDialogResource(IDD_SUNFLOW_DIFFUSE,DiffuseResource,0);
AddDlgGroup(DR_DLGGROUP_OK);
return TRUE;
}
DiffuseDialog::Init()
{
SetColorField(IDC_SUNFLOW_DIFFUSE_COLOR , DiffuseVariables->sfdiffcolor);
SetString(IDC_SUNFLOW_DIFFUSE_TEXTURE, tostring(DiffuseVariables->sfdifftex->GetFullString()));
return TRUE;
}
DiffuseDialog::Command(id,msg)
{
var doc = GetActiveDocument();
switch (id)
{
case IDC_SUNFLOW_DIFFUSE_COLOR:
DiffuseVariables->sfdiffcolor = GetColor(IDC_SUNFLOW_DIFFUSE_COLOR);
break;
case IDC_SUNFLOW_DIFFUSE_TEXTURE_BUTTON:
if (DiffuseVariables->sfdifftex->FileSelect("Please select a texture", FALSE))
{
SetString(IDC_SUNFLOW_DIFFUSE_TEXTURE, tostring(DiffuseVariables->sfdifftex->GetFullString()));
}
break;
case IDC_SUNFLOW_DIFFUSE_TEXTURE:
DiffuseVariables->sfdifftex->SetFullString(GetString(IDC_SUNFLOW_DIFFUSE_TEXTURE));
break;
}
}
//plugin
class Diffuse:VolumePlugin//ChannelPlugin
{
public:
Diffuse();
GetName();
GetID();
// Output(settings, render, p, n, d, t, texflag, vd);
CalcSurface(settings,render,vd);
EditData(settings);
}
Diffuse::GetName()
{
return "SFDiffuse";
}
Diffuse::GetID()
{
return SunflowDiffuseID;
}
/* Diffuse::Output(settings, rd, p, n, d, t, texflag, vd)
{
return DiffuseVariables->sfdiffcolor;
} */
Diffuse::CalcSurface(settings,render,vd)
{
var col;
vd->col = DiffuseVariables->sfdiffcolor;
}
Diffuse::EditData(settings)
{
DiffuseDialogVar->Open(-1,-1);
return TRUE;
}
///////////////
// main
SunflowDiffuse()
{
InitDiffuseVariables();
var file = GeGetRootFilename(); if (!file) return;
file->RemoveLast();
DiffuseResource = new(GeResource,file);
if (!DiffuseResource)
{
println(" Error: Can't load resource files for SunflowDiffuse");
return FALSE;
}
DiffuseDialogVar = new(DiffuseDialog);
Register(Diffuse);
}
Ciao and thanks.
Sascha