work on world
This commit is contained in:
@@ -12,32 +12,68 @@ void C_BaseModelEntity::Spawn()
|
||||
|
||||
void C_BaseModelEntity::Think( float fDelta )
|
||||
{
|
||||
m_pInstance->SetPosition(GetAbsOrigin());
|
||||
m_pInstance->SetRotation(GetAbsAngles());
|
||||
m_pInstance->SetScale({GetScale(),GetScale(),GetScale()});
|
||||
UpdateModel();
|
||||
if (m_pInstance)
|
||||
{
|
||||
m_pInstance->SetPosition(GetAbsOrigin());
|
||||
m_pInstance->SetRotation(GetAbsAngles());
|
||||
m_pInstance->SetScale({GetScale(),GetScale(),GetScale()});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void C_BaseModelEntity::SetModel( const char *szName )
|
||||
{
|
||||
V_memset(m_szModel, 0, 256);
|
||||
V_strncpy(m_szModel, szName, 255);
|
||||
}
|
||||
|
||||
void C_BaseModelEntity::UpdateModel()
|
||||
{
|
||||
if (!V_strncmp(m_szModel, m_szCurrentModel, 256))
|
||||
return;
|
||||
|
||||
V_memset(m_szCurrentModel, 0, 256);
|
||||
V_strncpy(m_szCurrentModel, m_szModel, 255);
|
||||
|
||||
if (m_hModelHandle)
|
||||
{
|
||||
g_pAssetManager->UnrefModel(m_hModelHandle);
|
||||
g_pWorldRenderer->DestroyMeshInstance(
|
||||
g_pAssetManager->GetMeshByIndex(m_pModel->m_hMesh)->m_pMesh,
|
||||
m_pInstance);
|
||||
}
|
||||
m_hModelHandle = g_pAssetManager->LoadModel(szName);
|
||||
m_hModelHandle = g_pAssetManager->LoadModel(m_szCurrentModel);
|
||||
m_pModel = g_pAssetManager->GetModelByIndex(m_hModelHandle);
|
||||
if (!m_pModel)
|
||||
{
|
||||
V_printf("Failed to load %u %s\n", V_strnlen(m_szCurrentModel,255), m_szCurrentModel);
|
||||
m_pInstance = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
FunnyMesh_t *pMesh = g_pAssetManager->GetMeshByIndex(m_pModel->m_hMesh);
|
||||
m_pInstance = g_pWorldRenderer->CreateInstance(pMesh->m_pMesh);
|
||||
|
||||
}
|
||||
|
||||
C_BaseModelEntity::~C_BaseModelEntity()
|
||||
{
|
||||
FunnyMesh_t *pMesh = g_pAssetManager->GetMeshByIndex(m_pModel->m_hMesh);
|
||||
g_pWorldRenderer->DestroyMeshInstance(pMesh->m_pMesh, m_pInstance);
|
||||
g_pAssetManager->UnrefModel(m_hModelHandle);
|
||||
if (m_pInstance)
|
||||
{
|
||||
FunnyMesh_t *pMesh = g_pAssetManager->GetMeshByIndex(m_pModel->m_hMesh);
|
||||
g_pWorldRenderer->DestroyMeshInstance(pMesh->m_pMesh, m_pInstance);
|
||||
g_pAssetManager->UnrefModel(m_hModelHandle);
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN_DATADESC(C_BaseModelEntity)
|
||||
|
||||
DEFINE_KEYFIELD(m_szModel, FIELD_STRING, "model")
|
||||
END_DATADESC()
|
||||
|
||||
IMPLEMENT_RECV_DT(C_BaseModelEntity)
|
||||
NetPropString(m_szModel)
|
||||
END_RECV_DT()
|
||||
IMPLEMENT_EMPTY_SEND_DT(C_BaseModelEntity)
|
||||
|
||||
LINK_ENTITY_TO_CLASS(prop_physics, C_BaseModelEntity)
|
||||
|
||||
Reference in New Issue
Block a user