work on the stuff on client

This commit is contained in:
2026-02-20 00:59:20 +02:00
parent 04b0f02e7f
commit 3ed689f801
26 changed files with 1036 additions and 147 deletions

View File

@@ -2,12 +2,17 @@
#include "materialsystem/imaterialsystem.h"
#include "enginebridge.h"
#include "worldrender.h"
#include "entitysystem.h"
#include "baseentity.h"
#include "game.h"
#include "cglm/mat4.h"
#include "cglm/cglm.h"
IFileSystem *filesystem;
IRenderContext *g_pRenderContext;
IGameWindow *g_pMainWindow;
static CEngineVars s_vars;
CEngineVars *g_pEngineVars = &s_vars;
class CFunnyGameBridge: public IEngineBridge
{
@@ -16,8 +21,6 @@ class CFunnyGameBridge: public IEngineBridge
virtual void Frame( float fDelta ) override;
virtual void Shutdown() override;
virtual void ConnectInterface( const char *psz, void *pInterface ) override;
IMeshInstance *m_pMeshInstance;
float m_fTime = 0;
};
IEngineBridge *EngineBridge()
@@ -30,38 +33,9 @@ EXPOSE_INTERFACE_FN(EngineBridge, IEngineBridge, ENGINE_BRIDGE_INTERFACE_VERSION
void CFunnyGameBridge::Init()
{
IVertexBuffer *pBuffer;
IBuffer *pDataBuffer;
IShader *pShader;
IMaterial *pMaterial;
g_pWorldRenderer->Init();
pShader = g_pRenderContext->CreateShader("game/core/shaders/mesh_raster.shader_c");
IFileHandle *pHandle = filesystem->Open("game/core/meshes/cube.fmesh_c", FILEMODE_READ);
float *pData = (float*)V_malloc(filesystem->Size(pHandle));
filesystem->Read(pHandle, pData, filesystem->Size(pHandle));
pBuffer = g_pRenderContext->CreateVertexBuffer(filesystem->Size(pHandle));
pBuffer->Lock();
void *pMapped = pBuffer->Map();
V_memcpy(pMapped, pData, filesystem->Size(pHandle));
pBuffer->Unmap();
pBuffer->Unlock();
V_free(pData);
filesystem->Close(pHandle);
IMesh *pMesh = g_pWorldRenderer->CreateMesh("Triangle");
g_pWorldRenderer->SetCameraPosition((Vector){0,0,-20});
g_pWorldRenderer->SetCameraRotation((Quat){1,0,0,0});
pMesh->ConfigureShader(pShader);
pShader->Build();
pMaterial = g_pRenderContext->CreateMaterial(pShader);
pMesh->SetVertices(pBuffer);
pMesh->SetMaterial(pMaterial);
m_pMeshInstance = g_pWorldRenderer->CreateInstance(pMesh);
m_pMeshInstance->SetScale({5, 5, 5});
C_BaseEntity *pEntity = EntitySystem()->CreateByClassname("player");
pEntity->Spawn();
}
void CFunnyGameBridge::Tick( float fDelta )
@@ -70,11 +44,9 @@ void CFunnyGameBridge::Tick( float fDelta )
void CFunnyGameBridge::Frame( float fDelta )
{
versor q;
m_fTime += fDelta;
glm_euler_zyx_quat((vec3){0,m_fTime, 0}, q);
m_pMeshInstance->SetPosition({sin(m_fTime/3)*10,0,0});
m_pMeshInstance->SetRotation({q[0], q[1], q[2], q[3]});
g_pEngineVars->m_fTime += fDelta;
g_pEngineVars->m_fDeltaTime = fDelta;
EntitySystem()->Think();
g_pWorldRenderer->Frame(fDelta);
}