⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tutorial.cpp

📁 是3D游戏一书中所讲的游戏引擎fly3D 包括fly3D引擎的源码及应用此引擎开发出来的游戏实例 有fly3D引擎的教程,易于step by step跟学
💻 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 + -