Added cmdRemove.

This commit is contained in:
Бранимир Караџић
2021-10-26 18:20:35 -07:00
parent 89c8e61abd
commit 53772163f4
4 changed files with 40 additions and 9 deletions

View File

@@ -251,23 +251,31 @@ public:
const double freq = double(bx::getHPFrequency() );
float time = float( (now-m_timeOffset)/freq);
if (!bgfx::isValid(m_shadowMapFB) || shadowSamplerModeChanged)
if (!bgfx::isValid(m_shadowMapFB)
|| shadowSamplerModeChanged)
{
bgfx::TextureHandle shadowMapTexture;
bgfx::TextureHandle shadowMapTexture = BGFX_INVALID_HANDLE;
if (bgfx::isValid(m_progShadow))
if (bgfx::isValid(m_progShadow) )
{
bgfx::destroy(m_progShadow);
if (bgfx::isValid(m_progMesh))
bgfx::destroy(m_progMesh);
}
if (bgfx::isValid(m_shadowMapFB))
if (bgfx::isValid(m_progMesh) )
{
bgfx::destroy(m_progMesh);
}
if (bgfx::isValid(m_shadowMapFB) )
{
bgfx::destroy(m_shadowMapFB);
}
if (m_useShadowSampler)
{
// Depth textures and shadow samplers are supported.
m_progShadow = loadProgram("vs_sms_shadow", "fs_sms_shadow");
m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh");
m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh");
bgfx::TextureHandle fbtextures[] =
{
@@ -280,6 +288,7 @@ public:
, BGFX_TEXTURE_RT | BGFX_SAMPLER_COMPARE_LEQUAL
),
};
shadowMapTexture = fbtextures[0];
m_shadowMapFB = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true);
}
@@ -288,7 +297,7 @@ public:
// Depth textures and shadow samplers are not supported. Use float
// depth packing into color buffer instead.
m_progShadow = loadProgram("vs_sms_shadow_pd", "fs_sms_shadow_pd");
m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh_pd");
m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh_pd");
bgfx::TextureHandle fbtextures[] =
{
@@ -309,6 +318,7 @@ public:
, BGFX_TEXTURE_RT_WRITE_ONLY
),
};
shadowMapTexture = fbtextures[0];
m_shadowMapFB = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true);
}

View File

@@ -94,6 +94,7 @@ struct Camera
~Camera()
{
cmdRemove("move");
inputRemoveBindings("camBindings");
}

View File

@@ -29,12 +29,24 @@ struct CmdContext
void add(const char* _name, ConsoleFn _fn, void* _userData)
{
uint32_t cmd = bx::hash<bx::HashMurmur2A>(_name, (uint32_t)bx::strLen(_name) );
const uint32_t cmd = bx::hash<bx::HashMurmur2A>(_name, (uint32_t)bx::strLen(_name) );
BX_ASSERT(m_lookup.end() == m_lookup.find(cmd), "Command \"%s\" already exist.", _name);
Func fn = { _fn, _userData };
m_lookup.insert(stl::make_pair(cmd, fn) );
}
void remove(const char* _name)
{
const uint32_t cmd = bx::hash<bx::HashMurmur2A>(_name, (uint32_t)bx::strLen(_name) );
CmdLookup::iterator it = m_lookup.find(cmd);
if (it != m_lookup.end() )
{
m_lookup.erase(it);
}
}
void exec(const char* _cmd)
{
for (bx::StringView next(_cmd); !next.isEmpty(); _cmd = next.getPtr() )
@@ -105,6 +117,11 @@ void cmdAdd(const char* _name, ConsoleFn _fn, void* _userData)
s_cmdContext->add(_name, _fn, _userData);
}
void cmdRemove(const char* _name)
{
s_cmdContext->remove(_name);
}
void cmdExec(const char* _format, ...)
{
char tmp[2048];

View File

@@ -18,6 +18,9 @@ void cmdShutdown();
///
void cmdAdd(const char* _name, ConsoleFn _fn, void* _userData = NULL);
///
void cmdRemove(const char* _name);
///
void cmdExec(const char* _format, ...);