コード例 #1
0
ファイル: vm.cpp プロジェクト: osprey-lang/ovum
int VM::LoadModules(VMStartParams &params)
{
	try
	{
		// Set up some stuff first
		this->startupPath = Box<PathName>(new PathName(params.startupFile));
		this->startupPath->RemoveFileName();

		this->startupPathLib = Box<PathName>(new PathName(*this->startupPath));
		this->startupPathLib->Join(OVUM_PATH("lib"));

		this->modulePath = Box<PathName>(new PathName(params.modulePath));

		// And now we can start opening modules! Hurrah!

		PathName startupFile(params.startupFile, std::nothrow);
		if (!startupFile.IsValid())
			return OVUM_ERROR_NO_MEMORY;

		PartiallyOpenedModulesList partiallyOpenedModules;
		this->startupModule = Module::Open(
			this,
			startupFile,
			nullptr,
			partiallyOpenedModules
		);
	}
	catch (ModuleLoadException &e)
	{
		const PathName &fileName = e.GetFileName();
		if (fileName.GetLength() > 0)
			fwprintf(stderr, L"Error loading module '" OVUM_PATHNWF L"': " CSTR L"\n", fileName.GetDataPointer(), e.what());
		else
			fwprintf(stderr, L"Error loading module: " CSTR L"\n", e.what());
		return OVUM_ERROR_MODULE_LOAD;
	}
	catch (std::bad_alloc&)
	{
		return OVUM_ERROR_NO_MEMORY;
	}

	size_t stdTypeCount = standardTypeCollection->GetCount();
	for (size_t i = 0; i < stdTypeCount; i++)
	{
		StandardTypeInfo type;
		standardTypeCollection->GetByIndex(i, type);
		if (this->types.*(type.member) == nullptr)	
		{
			PrintInternal(stderr, L"Startup error: standard type not loaded: %ls\n", type.name);
			return OVUM_ERROR_MODULE_LOAD;
		}
	}

	RETURN_SUCCESS;
}
コード例 #2
0
bool gkGameFramework::InitGame(const TCHAR* dllname)
{
	gkLogMessage(_T("load Game..."));
	// ensure destroyed
	DestroyGameImmediate();

#ifndef _STATIC_LIB
	// check the dll name
	TCHAR name[MAX_PATH];

	gkIniParser startupFile( _T("config/startup.cfg") );

	startupFile.Parse();

	gkStdString ret = startupFile.FetchValue(  _T("launcher"), _T("gamedll") );

	if(ret != _T(""))
	{
		_tcscpy(name, ret.c_str());
	}
	else
	{
		_tcscpy(name, _T("TestCases"));
	}

	gkLogMessage(_T("load Game: %s"), name);

	gkStdString dllPath = gEnv->rootPath;
	dllPath += "\\bin64\\";
	// create system.dll first
	gkOpenModule( m_hHandleGame, name, dllPath.c_str());

	if (m_hHandleGame)
	{
		m_pFuncGameStart = (GET_GAMEDLL)DLL_GETSYM(m_hHandleGame, "gkModuleInitialize");
		m_pFuncGameEnd = (DESTROY_GAMEDLL)DLL_GETSYM(m_hHandleGame, "gkModuleUnload");


		m_pGame = m_pFuncGameStart(gEnv);
		m_pGame->OnInit();
	}
	else
	{
		gkLogWarning(_T("gkFramework::Load GameDll %s failed."), name );
	}
#else
    m_pGame = gkLoadStaticModule_gkGame(gEnv);
    m_pGame->OnInit();
#endif

	return true;
}
コード例 #3
0
ファイル: gkSystem.cpp プロジェクト: BobLChen/gkEngine
bool gkSystem::Init( ISystemInitInfo& sii )
{
	gkLogMessage(_T("Initializing gkSystem..."));
    
    std::vector<gkStdString> result;

	gkStdString path;

#ifdef OS_IOS
    path = gkGetExecRootDir();
#else
	path = gkGetExecRootDir() + _T("paks/");
#endif

	enum_all_files_in_folder(path.c_str(), result, false);

    for (int i=0; i < result.size(); ++i) {

		gkStdString file = result[i];

		const TCHAR* strLastSlash = _tcsrchr( file.c_str(), _T( '.' ) );
		if( strLastSlash )
		{
			if ( !_tcsicmp( strLastSlash, _T(".gpk") ) )
			{
				gkNormalizePath(file);
				gkStdString filename = gkGetFilename( file.c_str() );

#ifdef OS_IOS
				
#else
				file = _T("/paks") + file;
#endif

				gkLogMessage( _T("pak file [%s] loaded."), filename.c_str() );
				m_ResFileManager.openPak( file.c_str() );
			}
		}
    }
    
    

#ifdef OS_WIN32
	m_fileMonitor = new FileChangeMonitor();
	m_fileMonitor->StartMonitor();
	gEnv->pFileChangeMonitor = m_fileMonitor;
#endif
	m_bEditor = (sii.hInstance != 0);

	//CrashRptHead();

	m_bIsSceneEmpty = true;

	/************************************************************************/
	/* Module Loading
	/************************************************************************/
#ifdef WIN32
	TCHAR wszRenderDll[MAX_PATH] = _T("gkRendererD3D9");

	if (!IsEditor())
	{
		gkStdString cfgfile = gkGetExecRootDir() + _T("media/config/startup.cfg");
		GetPrivateProfileString( _T("launcher"), _T("renderer"), _T("gkRendererD3D9"), wszRenderDll, MAX_PATH, cfgfile.c_str() );
	}
#else 
	TCHAR wszRenderDll[MAX_PATH] = _T("gkRendererGLES2");
#endif

#ifndef _STATIC_LIB
	if ( !_tcsicmp( wszRenderDll, _T("gkRendererD3D9") ))
	{
		LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererD3D9 );
	}
	else if (  !_tcsicmp( wszRenderDll, _T("gkRendererGLES2") ) )
	{
		LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererGLES2 );
	}
	else if (  !_tcsicmp( wszRenderDll, _T("gkRendererGL330") ) )
	{
		LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererGL330 );
	}
#else
	//LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererGLES2 );
#ifdef OS_APPLE
    LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererGL330 );
#elif defined( OS_IOS )
    LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererGLES2 );
#else
	LOAD_MODULE_GLOBAL( m_moduleHandles.hRenderer, gkRendererD3D9 );
#endif
    
#endif
	

	LOAD_MODULE_GLOBAL(m_moduleHandles.h3DEngine, gkCore);
	gEnv->p3DEngine->Init();


	LOAD_MODULE_GLOBAL(m_moduleHandles.hInputLayer, gkInput);

	//LoadLib(m_moduleHandles.hNetworkLayer,		_T("gkNetwork"));


	//////////////////////////////////////////////////////////////////////////
	// load physics module
#ifndef MUTE_PHYSICS
#	ifdef WIN32
	TCHAR wszPhysicDll[MAX_PATH] = _T("");

	gkStdString cfgfile = gkGetExecRootDir() + _T("media/config/startup.cfg");
	GetPrivateProfileString( _T("launcher"), _T("physicsengine"), _T(""), wszPhysicDll, MAX_PATH, cfgfile.c_str() );
#	else 
	TCHAR wszPhysicDll[MAX_PATH] = _T("gkHavok");
#	endif // WIN32

#	ifndef _STATIC_LIB
	gkLoadModule( m_moduleHandles.hPhysics, wszPhysicDll );
#	else
	//LOAD_MODULE_GLOBAL( m_moduleHandles.hPhysics, gkHavok );
#	endif // _STATIC_LIB

#endif // MUTE_PHYSICS    
	//////////////////////////////////////////////////////////////////////////


	//////////////////////////////////////////////////////////////////////////
	// load animation module
	{
#	ifdef WIN32
		TCHAR wszAnimationDll[MAX_PATH] = _T("gkAnimationHavok");

		gkStdString cfgfile = gkGetExecRootDir() + _T("media/config/startup.cfg");
		GetPrivateProfileString( _T("launcher"), _T("animationengine"), _T("gkAnimationHavok"), wszAnimationDll, MAX_PATH, cfgfile.c_str() );
#	else 
		TCHAR wszAnimationDll[MAX_PATH] = _T("gkAnimationHavok");
#	endif // WIN32

#ifdef OS_APPLE
        
#else
#	ifndef _STATIC_LIB
		gkLoadModule( m_moduleHandles.hAnimation, wszAnimationDll );
#	else
        #if TARGET_OS_IPHONE
        LOAD_MODULE_GLOBAL( m_moduleHandles.hAnimation,				gkAnimation );
        #endif
#	endif // _STATIC_LIB
#endif
    
    }
	//////////////////////////////////////////////////////////////////////////

	LOAD_MODULE_GLOBAL(m_moduleHandles.hGameObjectSystem,			gkGameObjectSystem);

	LOAD_MODULE_GLOBAL(m_moduleHandles.hFont,						gkFont);

#ifdef OS_WIN32
	LOAD_MODULE_GLOBAL(m_moduleHandles.hTrackBus,					gkTrackBus);

	LOAD_MODULE_GLOBAL(m_moduleHandles.hSound,						gkSound);

	//LOAD_MODULE_GLOBAL(m_moduleHandles.hVideo,						gkVideo);

	//LOAD_MODULE_GLOBAL(m_moduleHandles.hStereoDevice,				gkStereoDevice);

	{
		TCHAR wszStereoDevDll[MAX_PATH] = _T("null");
		gkStdString cfgfile = gkGetExecRootDir() + _T("media/config/startup.cfg");
		GetPrivateProfileString( _T("launcher"), _T("stereodevice"), _T("null"), wszStereoDevDll, MAX_PATH, cfgfile.c_str() );

		gkLoadModule( m_moduleHandles.hStereoDevice, wszStereoDevDll );
	}


#endif
    
	m_CVManager.initInput();
	gkLogMessage(_T("CVar Manager Initialized."));

	m_pSystemCVars = new gkSystemCVars;
	g_pSystemCVars = m_pSystemCVars;
	gkLogMessage(_T("System CVar Initialized."));

	m_CVManager.reloadAllParameters();

	// init Timer
	if (!m_Timer.Init(this))
		return (false);
	m_Timer.ResetTimer();

	gkLogMessage(_T("Timer Initialized."));


	gkIniParser startupFile( _T("config/startup.cfg") );
	startupFile.Parse();
	gkStdString ret = startupFile.FetchValue(  _T("launcher"), _T("width") );
	if( !ret.empty() )
	{
		gkStdStringstream ss(ret);
		ss >> sii.fWidth;
	}