📄 tutorial.cpp
字号:
#include "..\..\lib\Fly3D.h"
#include "tutorial.h"
blink_light_desc cd_blink_light;
bounce_mesh_desc cd_bounce_mesh;
BOOL APIENTRY DllMain(HINSTANCE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
switch( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
__declspec( dllexport )
int num_classes()
{
return 2;
}
__declspec( dllexport )
class_desc *get_class_desc(int i)
{
switch(i)
{
case 0:
return &cd_blink_light;
case 1:
return &cd_bounce_mesh;
default: return 0;
}
}
__declspec( dllexport )
int fly_message(int msg,int param,void *data)
{
switch(msg)
{
case FLYM_UPDATESCENE:
// step/draw plugin layer
break;
}
return 1;
}
int blink_light::step(int dt)
{
// compute current radius
float r=illumradius*
((flyengine->cur_time%blinktime)/1000.0f);
// illuminate around
flyengine->send_bsp_message(
flyengine->bsp, pos, r, FLYOBJM_ILLUM, 0, &color);
// return 0 as we have not moved (changed pos)
return 0;
}
void blink_light::draw()
{
// TODO: draw using opengl
}
bsp_object *blink_light::clone()
{
blink_light *tmp=new blink_light;
*tmp=*this;
tmp->source=this;
return tmp;
}
int blink_light::get_custom_param_desc(int i,param_desc *pd)
{
if (pd!=0)
switch(i)
{
case 0:
pd->type='c';
pd->data=&color;
strcpy(pd->name,"color");
break;
case 1:
pd->type='f';
pd->data=&illumradius;
strcpy(pd->name,"illumradius");
break;
case 2:
pd->type='i';
pd->data=&blinktime;
strcpy(pd->name,"blinktime");
break;
}
return 3;
}
bsp_object *bounce_mesh::clone()
{
bounce_mesh *tmp=new bounce_mesh;
*tmp=*this;
tmp->source=this;
return tmp;
}
int bounce_mesh::get_custom_param_desc(int i,param_desc *pd)
{
if (pd!=0)
switch(i)
{
case 0:
pd->type='3';
pd->data=&objmesh;
strcpy(pd->name,"objmesh");
break;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -