init
This commit is contained in:
117
engine/engine.cpp
Normal file
117
engine/engine.cpp
Normal file
@@ -0,0 +1,117 @@
|
||||
#include "tier1/commandline.h"
|
||||
#include "tier1/utlstring.h"
|
||||
#include "tier0/lib.h"
|
||||
#include "console.h"
|
||||
#include "filesystem.h"
|
||||
#include "rendering.h"
|
||||
#include "engine.h"
|
||||
#include "baseentity.h"
|
||||
#include "server.h"
|
||||
|
||||
#ifdef __linux
|
||||
#include "signal.h"
|
||||
#endif
|
||||
|
||||
double fPrev = 0;
|
||||
double fCurrent = 0;
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Engine entry point
|
||||
//-----------------------------------------------------------------------------
|
||||
extern "C" void FunnyMain( int argc, char **argv ) {
|
||||
|
||||
ICommandLine::CreateCommandLine(argc, argv);
|
||||
IEngine::Init();
|
||||
for (;;)
|
||||
{
|
||||
fPrev = fCurrent;
|
||||
fCurrent = Plat_GetTime();
|
||||
IEngine::Frame(fCurrent-fPrev);
|
||||
};
|
||||
/* deinit is handled explicitly */
|
||||
};
|
||||
|
||||
void IEngine_Signal(int sig)
|
||||
{
|
||||
printf("Trapped signal %i\n",sig);
|
||||
switch (sig)
|
||||
{
|
||||
case SIGSEGV:
|
||||
case SIGILL:
|
||||
case SIGABRT:
|
||||
printf("Consider running app with debugger attached\n");
|
||||
Plat_Backtrace();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
IEngine::Shutdown();
|
||||
_exit(0);
|
||||
};
|
||||
|
||||
void IEngine::Init()
|
||||
{
|
||||
/* trap signals */
|
||||
#ifdef __linux
|
||||
signal(SIGHUP, IEngine_Signal);
|
||||
signal(SIGINT, IEngine_Signal);
|
||||
signal(SIGQUIT, IEngine_Signal);
|
||||
signal(SIGILL, IEngine_Signal);
|
||||
signal(SIGTRAP, IEngine_Signal);
|
||||
signal(SIGIOT, IEngine_Signal);
|
||||
signal(SIGBUS, IEngine_Signal);
|
||||
signal(SIGFPE, IEngine_Signal);
|
||||
signal(SIGSEGV, IEngine_Signal);
|
||||
signal(SIGTERM, IEngine_Signal);
|
||||
#endif
|
||||
|
||||
IFileSystem::InitFilesystem();
|
||||
IVideo::Init();
|
||||
IServer::LoadGame("funnygame");
|
||||
};
|
||||
|
||||
void IEngine::Frame(float fDelta)
|
||||
{
|
||||
IServer::Think(fDelta);
|
||||
IVideo::Frame(fDelta);
|
||||
};
|
||||
|
||||
void IEngine::Shutdown()
|
||||
{
|
||||
|
||||
};
|
||||
void IIEngine::PrecacheModel( const char *psz )
|
||||
{
|
||||
|
||||
}
|
||||
void IIEngine::PrecacheSound( const char *psz )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
CBaseEntity *IIEngine::SpawnEntity( const char *szName )
|
||||
{
|
||||
V_printf("%s\n", szName);
|
||||
for (auto &entity: g_RegisteredEntities)
|
||||
{
|
||||
if (!V_strcmp(entity->m_szName, szName))
|
||||
{
|
||||
CBaseEntity *pEnt = entity->m_pfn();
|
||||
pEnt->Spawn();
|
||||
g_entities.AppendTail(pEnt);
|
||||
if (entity->m_pClientfn)
|
||||
{
|
||||
pEnt->pClientEntity = entity->m_pClientfn();
|
||||
pEnt->pClientEntity->Spawn();
|
||||
pEnt->pClientEntity->pEntity = pEnt;
|
||||
}
|
||||
return pEnt;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
void IIEngine::DestroyEntity( CBaseEntity *pEntity )
|
||||
{
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user