android port
This commit is contained in:
@@ -33,6 +33,10 @@ DECLARE_BUILD_STAGE(engine)
|
||||
|
||||
"openxr.cpp",
|
||||
};
|
||||
if (ldProject.m_target.kernel == TARGET_KERNEL_ANDROID)
|
||||
{
|
||||
compileProject.files.AppendTail("filesystem_android.cpp");
|
||||
}
|
||||
|
||||
if ( GET_PROJECT_VALUE(config, "steam") == "true" )
|
||||
{
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ void CClientGameDLL::Init()
|
||||
|
||||
|
||||
CreateInterfaceFn pfnServerFactory = Sys_GetFactory("client");
|
||||
IEngineBridge *pEngineBridge = (IEngineBridge*)pfnServerFactory(ENGINE_BRIDGE_INTERFACE_VERSION, NULL);
|
||||
IEngineBridge *pEngineBridge = (IEngineBridge*)pfnServerFactory(CLIENT_ENGINE_BRIDGE_INTERFACE_VERSION, NULL);
|
||||
|
||||
pEngineBridge->ConnectInterface(FILESYSTEM_INTERFACE_VERSION, filesystem);
|
||||
pEngineBridge->ConnectInterface(RENDER_CONTEXT_INTERFACE_VERSION, m_pRenderContext);
|
||||
|
||||
@@ -151,8 +151,6 @@ extern "C" void FunnyMain( int argc, char **argv )
|
||||
g_pWindowManager->Frame(fDelta);
|
||||
g_pClientGame->m_pBridge->Frame(fDelta);
|
||||
g_pRenderContext->Frame(fDelta);
|
||||
|
||||
fCurrent = Plat_GetTime();
|
||||
}
|
||||
|
||||
Console()->Execute();
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
#include "tier2/ifilesystem.h"
|
||||
#include "tier1/interface.h"
|
||||
#include "android/asset_manager.h"
|
||||
#include "android/android_native_app_glue.h"
|
||||
|
||||
class CAndroidFileHandle : public IFileHandle
|
||||
{
|
||||
public:
|
||||
AAsset *m_pFile;
|
||||
size_t m_nSize;
|
||||
|
||||
};
|
||||
|
||||
class CAndroidDirectoryHandle: public IDirectoryHandle
|
||||
{
|
||||
public:
|
||||
};
|
||||
|
||||
#include "android/log.h"
|
||||
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "funnygame", __VA_ARGS__)
|
||||
extern struct android_app *g_android_app;
|
||||
class CAndroidFileSystem : public IFileSystem
|
||||
{
|
||||
public:
|
||||
virtual void Init() override {
|
||||
|
||||
};
|
||||
virtual void Shutdown() override {};
|
||||
|
||||
virtual IFileHandle *Open( const char *szFileName, int eOpCode ) override
|
||||
{
|
||||
LOGI("Opening file: %s", szFileName);
|
||||
FILE *pFile;
|
||||
CAndroidFileHandle *pHandle = NULL;
|
||||
|
||||
switch (eOpCode)
|
||||
{
|
||||
case FILEMODE_READ:
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
pHandle = new CAndroidFileHandle;
|
||||
pHandle->m_pFileSystem = this;
|
||||
pHandle->m_pFile = AAssetManager_open(g_android_app->activity->assetManager, szFileName, AASSET_MODE_RANDOM);
|
||||
LOGI("Opened file: %p", pHandle->m_pFile);
|
||||
pHandle->m_nSize = AAsset_getLength64(pHandle->m_pFile);
|
||||
return pHandle;
|
||||
}
|
||||
virtual size_t Write( IFileHandle *pFile, const void *pData, size_t nDataSize ) override
|
||||
{
|
||||
}
|
||||
virtual size_t Read( IFileHandle *pFile, void *pData, size_t nDataSize ) override
|
||||
{
|
||||
CAndroidFileHandle *pHandle = (CAndroidFileHandle*)pFile;
|
||||
if (!pHandle)
|
||||
return 0;
|
||||
return AAsset_read(pHandle->m_pFile, pData, nDataSize);
|
||||
}
|
||||
|
||||
virtual size_t Seek( IFileHandle *pFile, ESeekMode eSeekMode, size_t nOffset ) override
|
||||
{
|
||||
CAndroidFileHandle *pHandle = (CAndroidFileHandle*)pFile;
|
||||
int eLibcSeekMode = 0;
|
||||
|
||||
if (!pHandle)
|
||||
return 0;
|
||||
|
||||
switch (eSeekMode) {
|
||||
case SEEKMODE_RELATIVE_CURRENT:
|
||||
eLibcSeekMode = SEEK_CUR;
|
||||
break;
|
||||
case SEEKMODE_RELATIVE_END:
|
||||
eLibcSeekMode = SEEK_END;
|
||||
break;
|
||||
case SEEKMODE_RELATIVE_START:
|
||||
eLibcSeekMode = SEEK_SET;
|
||||
break;
|
||||
}
|
||||
return AAsset_seek64(pHandle->m_pFile, nOffset, eLibcSeekMode);
|
||||
}
|
||||
|
||||
virtual size_t Tell( IFileHandle *pFile ) override
|
||||
{
|
||||
CAndroidFileHandle *pHandle = (CAndroidFileHandle*)pFile;
|
||||
if (!pHandle)
|
||||
return 0;
|
||||
return AAsset_seek64(pHandle->m_pFile, 0, SEEK_CUR);
|
||||
}
|
||||
|
||||
virtual size_t Size( IFileHandle *pFile ) override
|
||||
{
|
||||
CAndroidFileHandle *pHandle = (CAndroidFileHandle*)pFile;
|
||||
if (!pHandle)
|
||||
return 0;
|
||||
return pHandle->m_nSize;
|
||||
}
|
||||
|
||||
|
||||
|
||||
virtual void Close( IFileHandle *pFile ) override
|
||||
{
|
||||
CAndroidFileHandle *pHandle = (CAndroidFileHandle*)pFile;
|
||||
if (!pHandle)
|
||||
return;
|
||||
AAsset_close(pHandle->m_pFile);
|
||||
delete pHandle;
|
||||
}
|
||||
|
||||
virtual CUtlBuffer<unsigned char> Read( IFileHandle *pFile ) override { return {}; };
|
||||
virtual const char *ReadString( IFileHandle *pFile ) override {
|
||||
char *szData = NULL;
|
||||
size_t uSize = Size(pFile);
|
||||
|
||||
szData = (char*)V_malloc(uSize+1);
|
||||
Read(pFile, szData,uSize);
|
||||
szData[uSize] = 0;
|
||||
|
||||
return szData;
|
||||
};
|
||||
|
||||
virtual size_t PrintF( IFileHandle *pFile, const char *szFormat, ... ) override
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual IDirectoryHandle *OpenDir( const char *szDirName ) override
|
||||
{
|
||||
return NULL;
|
||||
|
||||
};
|
||||
|
||||
virtual void CloseDir( IDirectoryHandle *pDir ) override
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
EXPOSE_INTERFACE(CAndroidFileSystem, IFileSystem, FILESYSTEM_INTERFACE_VERSION)
|
||||
+1
-2
@@ -7,10 +7,9 @@
|
||||
void CServerGameDLL::Init()
|
||||
{
|
||||
CreateInterfaceFn pfnServerFactory = Sys_GetFactory("server");
|
||||
IEngineBridge *pEngineBridge = (IEngineBridge*)pfnServerFactory(ENGINE_BRIDGE_INTERFACE_VERSION, NULL);
|
||||
IEngineBridge *pEngineBridge = (IEngineBridge*)pfnServerFactory(SERVER_ENGINE_BRIDGE_INTERFACE_VERSION, NULL);
|
||||
pEngineBridge->ConnectInterface(FILESYSTEM_INTERFACE_VERSION, filesystem);
|
||||
pEngineBridge->ConnectInterface("EngineConstants", m_pEngineConsts);
|
||||
pEngineBridge->ConnectInterface(FILESYSTEM_INTERFACE_VERSION, filesystem);
|
||||
pEngineBridge->Init();
|
||||
m_pBridge = pEngineBridge;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user