forked from bartvdbraak/blender
=Texture Plugins=
Added a callback instance_init() so that any particular instance of a texture plugin can initialize data. Updated the clouds2 and tile example plugins to have a (dummy) call back.
This commit is contained in:
parent
bb7ad80269
commit
0b0c8c9244
@ -77,6 +77,7 @@ float result[8];
|
||||
float cfra;
|
||||
|
||||
int plugin_tex_doit(int, Cast*, float*, float*, float*);
|
||||
void plugin_instance_init(Cast*);
|
||||
|
||||
/* ******************** Fixed functions ***************** */
|
||||
|
||||
@ -94,6 +95,14 @@ void plugin_init(void)
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* initialize any data for a particular instance of
|
||||
* the plugin here
|
||||
*/
|
||||
void plugin_instance_init(Cast *cast)
|
||||
{
|
||||
}
|
||||
|
||||
/* this function should not be changed: */
|
||||
|
||||
void plugin_getinfo(PluginInfo *info)
|
||||
@ -110,6 +119,7 @@ void plugin_getinfo(PluginInfo *info)
|
||||
info->init= plugin_init;
|
||||
info->tex_doit= (TexDoit) plugin_tex_doit;
|
||||
info->callback= plugin_but_changed;
|
||||
info->instance_init= (void (*)(void *)) plugin_instance_init;
|
||||
}
|
||||
|
||||
/* ********************* the texture ******************** */
|
||||
|
@ -66,7 +66,7 @@ float result[8];
|
||||
float cfra;
|
||||
|
||||
int plugin_tex_doit(int, Cast *, float *, float *, float *);
|
||||
|
||||
void plugin_instance_init(Cast*);
|
||||
|
||||
/* ******************** Fixed functions ***************** */
|
||||
|
||||
@ -83,6 +83,14 @@ void plugin_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* initialize any data for a particular instance of
|
||||
* the plugin here
|
||||
*/
|
||||
void plugin_instance_init(Cast *cast)
|
||||
{
|
||||
}
|
||||
|
||||
/* this function should not be changed: */
|
||||
|
||||
void plugin_getinfo(PluginInfo *info)
|
||||
@ -99,6 +107,8 @@ void plugin_getinfo(PluginInfo *info)
|
||||
info->init= plugin_init;
|
||||
info->tex_doit= (TexDoit) plugin_tex_doit;
|
||||
info->callback= plugin_but_changed;
|
||||
info->instance_init= (void (*)(void *)) plugin_instance_init;
|
||||
|
||||
}
|
||||
|
||||
/* ************************************************************
|
||||
|
@ -65,6 +65,7 @@ typedef struct _PluginInfo {
|
||||
void (*callback)(int);
|
||||
TexDoit tex_doit;
|
||||
SeqDoit seq_doit;
|
||||
void (*instance_init)(void *);
|
||||
} PluginInfo;
|
||||
|
||||
#endif
|
||||
|
@ -136,6 +136,7 @@ void open_plugin_tex(PluginTex *pit)
|
||||
|
||||
info_func= (int (*)(PluginInfo *))PIL_dynlib_find_symbol(pit->handle, "plugin_getinfo");
|
||||
if (!test_dlerr(pit->name, "plugin_getinfo")) {
|
||||
info->instance_init = NULL;
|
||||
|
||||
info_func(info);
|
||||
|
||||
@ -148,6 +149,7 @@ void open_plugin_tex(PluginTex *pit)
|
||||
pit->varstr= info->varstr;
|
||||
pit->result= info->result;
|
||||
pit->cfra= info->cfra;
|
||||
pit->instance_init = info->instance_init;
|
||||
if (info->init) info->init();
|
||||
}
|
||||
MEM_freeN(info);
|
||||
@ -191,6 +193,9 @@ PluginTex *add_plugin_tex(char *str)
|
||||
*((int *)(pit->data+a))= (int) varstr->def;
|
||||
}
|
||||
|
||||
if (pit->instance_init)
|
||||
pit->instance_init((void *) pit->data);
|
||||
|
||||
return pit;
|
||||
}
|
||||
|
||||
|
@ -2255,6 +2255,11 @@ static void direct_link_texture(FileData *fd, Tex *tex)
|
||||
if(tex->plugin) {
|
||||
tex->plugin->handle= 0;
|
||||
open_plugin_tex(tex->plugin);
|
||||
/* initialize data for this instance, if an initialization
|
||||
* function exists.
|
||||
*/
|
||||
if (tex->plugin->instance_init)
|
||||
tex->plugin->instance_init((void *) tex->plugin->data);
|
||||
}
|
||||
tex->coba= newdataadr(fd, tex->coba);
|
||||
tex->env= newdataadr(fd, tex->env);
|
||||
|
@ -62,6 +62,8 @@ typedef struct _PluginInfo {
|
||||
void (*callback)(int);
|
||||
TexDoit tex_doit;
|
||||
SeqDoit seq_doit;
|
||||
|
||||
void (*instance_init)(void *);
|
||||
} PluginInfo;
|
||||
|
||||
int plugin_tex_getversion(void);
|
||||
|
@ -89,6 +89,7 @@ typedef struct PluginTex {
|
||||
float data[32];
|
||||
|
||||
int (*doit)(void);
|
||||
void (*instance_init)(void *);
|
||||
|
||||
/* should be void (*)(unsigned short)... patched */
|
||||
void (*callback)(dna_ushort_fix);
|
||||
|
Loading…
Reference in New Issue
Block a user