mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-06 17:41:04 +00:00
Add Entity get_texture_mod() to Lua API
Send texture modifier to clients connecting later too
This commit is contained in:
parent
72535d3328
commit
c57b4ff9b5
7 changed files with 53 additions and 8 deletions
|
@ -574,6 +574,8 @@ GenericCAO::GenericCAO(Client *client, ClientEnvironment *env):
|
|||
m_anim_framelength(0.2),
|
||||
m_anim_timer(0),
|
||||
m_reset_textures_timer(-1),
|
||||
m_previous_texture_modifier(""),
|
||||
m_current_texture_modifier(""),
|
||||
m_visuals_expired(false),
|
||||
m_step_distance_counter(0),
|
||||
m_last_light(255),
|
||||
|
@ -952,7 +954,10 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr,
|
|||
infostream<<"GenericCAO::addToScene(): \""<<m_prop.visual
|
||||
<<"\" not supported"<<std::endl;
|
||||
}
|
||||
updateTextures("");
|
||||
|
||||
/* don't update while punch texture modifier is active */
|
||||
if (m_reset_textures_timer < 0)
|
||||
updateTextures(m_current_texture_modifier);
|
||||
|
||||
scene::ISceneNode *node = getSceneNode();
|
||||
if (node && m_prop.nametag != "" && !m_is_local_player) {
|
||||
|
@ -1221,9 +1226,9 @@ void GenericCAO::step(float dtime, ClientEnvironment *env)
|
|||
if(m_reset_textures_timer >= 0)
|
||||
{
|
||||
m_reset_textures_timer -= dtime;
|
||||
if(m_reset_textures_timer <= 0){
|
||||
if(m_reset_textures_timer <= 0) {
|
||||
m_reset_textures_timer = -1;
|
||||
updateTextures("");
|
||||
updateTextures(m_previous_texture_modifier);
|
||||
}
|
||||
}
|
||||
if(getParent() == NULL && fabs(m_prop.automatic_rotate) > 0.001)
|
||||
|
@ -1301,7 +1306,7 @@ void GenericCAO::updateTexturePos()
|
|||
}
|
||||
}
|
||||
|
||||
void GenericCAO::updateTextures(const std::string &mod)
|
||||
void GenericCAO::updateTextures(const std::string mod)
|
||||
{
|
||||
ITextureSource *tsrc = m_client->tsrc();
|
||||
|
||||
|
@ -1309,6 +1314,9 @@ void GenericCAO::updateTextures(const std::string &mod)
|
|||
bool use_bilinear_filter = g_settings->getBool("bilinear_filter");
|
||||
bool use_anisotropic_filter = g_settings->getBool("anisotropic_filter");
|
||||
|
||||
m_previous_texture_modifier = m_current_texture_modifier;
|
||||
m_current_texture_modifier = mod;
|
||||
|
||||
if(m_spritenode)
|
||||
{
|
||||
if(m_prop.visual == "sprite")
|
||||
|
@ -1611,6 +1619,12 @@ void GenericCAO::processMessage(const std::string &data)
|
|||
updateNodePos();
|
||||
} else if (cmd == GENERIC_CMD_SET_TEXTURE_MOD) {
|
||||
std::string mod = deSerializeString(is);
|
||||
|
||||
// immediatly reset a engine issued texture modifier if a mod sends a different one
|
||||
if (m_reset_textures_timer > 0) {
|
||||
m_reset_textures_timer = -1;
|
||||
updateTextures(m_previous_texture_modifier);
|
||||
}
|
||||
updateTextures(mod);
|
||||
} else if (cmd == GENERIC_CMD_SET_SPRITE) {
|
||||
v2s16 p = readV2S16(is);
|
||||
|
@ -1734,7 +1748,7 @@ void GenericCAO::processMessage(const std::string &data)
|
|||
m_reset_textures_timer = 0.05;
|
||||
if(damage >= 2)
|
||||
m_reset_textures_timer += 0.05 * damage;
|
||||
updateTextures("^[brighten");
|
||||
updateTextures(m_current_texture_modifier + "^[brighten");
|
||||
}
|
||||
}
|
||||
} else if (cmd == GENERIC_CMD_UPDATE_ARMOR_GROUPS) {
|
||||
|
@ -1802,7 +1816,7 @@ bool GenericCAO::directReportPunch(v3f dir, const ItemStack *punchitem,
|
|||
m_reset_textures_timer = 0.05;
|
||||
if(result.damage >= 2)
|
||||
m_reset_textures_timer += 0.05 * result.damage;
|
||||
updateTextures("^[brighten");
|
||||
updateTextures(m_current_texture_modifier + "^[brighten");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue