mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
Added cmdRemove.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ struct Camera
|
||||
|
||||
~Camera()
|
||||
{
|
||||
cmdRemove("move");
|
||||
inputRemoveBindings("camBindings");
|
||||
}
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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, ...);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user