mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 10:03:45 +01:00
Fix last performance-type-promotion-in-math-fn problems
This commit is contained in:
parent
a90d27e1e2
commit
8e0b80aa36
@ -291,7 +291,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
|
|||||||
{
|
{
|
||||||
f32 oldy = old_player_position.Y;
|
f32 oldy = old_player_position.Y;
|
||||||
f32 newy = player_position.Y;
|
f32 newy = player_position.Y;
|
||||||
f32 t = exp(-23*frametime);
|
f32 t = std::exp(-23 * frametime);
|
||||||
player_position.Y = oldy * t + newy * (1-t);
|
player_position.Y = oldy * t + newy * (1-t);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,7 +481,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
|
|||||||
if(m_digging_anim > 0.5)
|
if(m_digging_anim > 0.5)
|
||||||
frac = 2.0 * (m_digging_anim - 0.5);
|
frac = 2.0 * (m_digging_anim - 0.5);
|
||||||
// This value starts from 1 and settles to 0
|
// This value starts from 1 and settles to 0
|
||||||
f32 ratiothing = pow((1.0f - tool_reload_ratio), 0.5f);
|
f32 ratiothing = std::pow((1.0f - tool_reload_ratio), 0.5f);
|
||||||
//f32 ratiothing2 = pow(ratiothing, 0.5f);
|
//f32 ratiothing2 = pow(ratiothing, 0.5f);
|
||||||
f32 ratiothing2 = (easeCurve(ratiothing*0.5))*2.0;
|
f32 ratiothing2 = (easeCurve(ratiothing*0.5))*2.0;
|
||||||
wield_position.Y -= frac * 25.0 * pow(ratiothing2, 1.7f);
|
wield_position.Y -= frac * 25.0 * pow(ratiothing2, 1.7f);
|
||||||
|
@ -402,7 +402,7 @@ void ChatPrompt::input(const std::wstring &str)
|
|||||||
m_nick_completion_end = 0;
|
m_nick_completion_end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatPrompt::addToHistory(std::wstring line)
|
void ChatPrompt::addToHistory(const std::wstring &line)
|
||||||
{
|
{
|
||||||
if (!line.empty() &&
|
if (!line.empty() &&
|
||||||
(m_history.size() == 0 || m_history.back() != line)) {
|
(m_history.size() == 0 || m_history.back() != line)) {
|
||||||
@ -426,7 +426,7 @@ void ChatPrompt::clear()
|
|||||||
m_nick_completion_end = 0;
|
m_nick_completion_end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring ChatPrompt::replace(std::wstring line)
|
std::wstring ChatPrompt::replace(const std::wstring &line)
|
||||||
{
|
{
|
||||||
std::wstring old_line = m_line;
|
std::wstring old_line = m_line;
|
||||||
m_line = line;
|
m_line = line;
|
||||||
@ -660,7 +660,7 @@ ChatBackend::ChatBackend():
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatBackend::addMessage(std::wstring name, std::wstring text)
|
void ChatBackend::addMessage(const std::wstring &name, std::wstring text)
|
||||||
{
|
{
|
||||||
// Note: A message may consist of multiple lines, for example the MOTD.
|
// Note: A message may consist of multiple lines, for example the MOTD.
|
||||||
text = translate_string(text);
|
text = translate_string(text);
|
||||||
|
@ -153,7 +153,7 @@ public:
|
|||||||
void input(const std::wstring &str);
|
void input(const std::wstring &str);
|
||||||
|
|
||||||
// Add a string to the history
|
// Add a string to the history
|
||||||
void addToHistory(std::wstring line);
|
void addToHistory(const std::wstring &line);
|
||||||
|
|
||||||
// Get current line
|
// Get current line
|
||||||
std::wstring getLine() const { return m_line; }
|
std::wstring getLine() const { return m_line; }
|
||||||
@ -165,7 +165,7 @@ public:
|
|||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
// Replace the current line with the given text
|
// Replace the current line with the given text
|
||||||
std::wstring replace(std::wstring line);
|
std::wstring replace(const std::wstring &line);
|
||||||
|
|
||||||
// Select previous command from history
|
// Select previous command from history
|
||||||
void historyPrev();
|
void historyPrev();
|
||||||
@ -256,7 +256,7 @@ public:
|
|||||||
~ChatBackend() = default;
|
~ChatBackend() = default;
|
||||||
|
|
||||||
// Add chat message
|
// Add chat message
|
||||||
void addMessage(std::wstring name, std::wstring text);
|
void addMessage(const std::wstring &name, std::wstring text);
|
||||||
// Parse and add unparsed chat message
|
// Parse and add unparsed chat message
|
||||||
void addUnparsedMessage(std::wstring line);
|
void addUnparsedMessage(std::wstring line);
|
||||||
|
|
||||||
|
@ -523,21 +523,18 @@ void Client::step(float dtime)
|
|||||||
the local inventory (so the player notices the lag problem
|
the local inventory (so the player notices the lag problem
|
||||||
and knows something is wrong).
|
and knows something is wrong).
|
||||||
*/
|
*/
|
||||||
if(m_inventory_from_server)
|
if (m_inventory_from_server) {
|
||||||
{
|
float interval = 10.0f;
|
||||||
float interval = 10.0;
|
float count_before = std::floor(m_inventory_from_server_age / interval);
|
||||||
float count_before = floor(m_inventory_from_server_age / interval);
|
|
||||||
|
|
||||||
m_inventory_from_server_age += dtime;
|
m_inventory_from_server_age += dtime;
|
||||||
|
|
||||||
float count_after = floor(m_inventory_from_server_age / interval);
|
float count_after = std::floor(m_inventory_from_server_age / interval);
|
||||||
|
|
||||||
if(count_after != count_before)
|
if (count_after != count_before) {
|
||||||
{
|
|
||||||
// Do this every <interval> seconds after TOCLIENT_INVENTORY
|
// Do this every <interval> seconds after TOCLIENT_INVENTORY
|
||||||
// Reset the locally changed inventory to the authoritative inventory
|
// Reset the locally changed inventory to the authoritative inventory
|
||||||
LocalPlayer *player = m_env.getLocalPlayer();
|
m_env.getLocalPlayer()->inventory = *m_inventory_from_server;
|
||||||
player->inventory = *m_inventory_from_server;
|
|
||||||
m_inventory_updated = true;
|
m_inventory_updated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "wieldmesh.h"
|
#include "wieldmesh.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cmath>
|
||||||
#include "client/renderingengine.h"
|
#include "client/renderingengine.h"
|
||||||
|
|
||||||
class Settings;
|
class Settings;
|
||||||
@ -947,25 +948,23 @@ void GenericCAO::updateTexturePos()
|
|||||||
int row = m_tx_basepos.Y;
|
int row = m_tx_basepos.Y;
|
||||||
int col = m_tx_basepos.X;
|
int col = m_tx_basepos.X;
|
||||||
|
|
||||||
if(m_tx_select_horiz_by_yawpitch)
|
if (m_tx_select_horiz_by_yawpitch) {
|
||||||
{
|
if (cam_to_entity.Y > 0.75)
|
||||||
if(cam_to_entity.Y > 0.75)
|
|
||||||
col += 5;
|
col += 5;
|
||||||
else if(cam_to_entity.Y < -0.75)
|
else if (cam_to_entity.Y < -0.75)
|
||||||
col += 4;
|
col += 4;
|
||||||
else{
|
else {
|
||||||
float mob_dir =
|
float mob_dir =
|
||||||
atan2(cam_to_entity.Z, cam_to_entity.X) / M_PI * 180.;
|
atan2(cam_to_entity.Z, cam_to_entity.X) / M_PI * 180.;
|
||||||
float dir = mob_dir - m_yaw;
|
float dir = mob_dir - m_yaw;
|
||||||
dir = wrapDegrees_180(dir);
|
dir = wrapDegrees_180(dir);
|
||||||
//infostream<<"id="<<m_id<<" dir="<<dir<<std::endl;
|
if (std::fabs(wrapDegrees_180(dir - 0)) <= 45.1f)
|
||||||
if(fabs(wrapDegrees_180(dir - 0)) <= 45.1)
|
|
||||||
col += 2;
|
col += 2;
|
||||||
else if(fabs(wrapDegrees_180(dir - 90)) <= 45.1)
|
else if(std::fabs(wrapDegrees_180(dir - 90)) <= 45.1f)
|
||||||
col += 3;
|
col += 3;
|
||||||
else if(fabs(wrapDegrees_180(dir - 180)) <= 45.1)
|
else if(std::fabs(wrapDegrees_180(dir - 180)) <= 45.1f)
|
||||||
col += 0;
|
col += 0;
|
||||||
else if(fabs(wrapDegrees_180(dir + 90)) <= 45.1)
|
else if(std::fabs(wrapDegrees_180(dir + 90)) <= 45.1f)
|
||||||
col += 1;
|
col += 1;
|
||||||
else
|
else
|
||||||
col += 4;
|
col += 4;
|
||||||
@ -977,12 +976,11 @@ void GenericCAO::updateTexturePos()
|
|||||||
|
|
||||||
float txs = m_tx_size.X;
|
float txs = m_tx_size.X;
|
||||||
float tys = m_tx_size.Y;
|
float tys = m_tx_size.Y;
|
||||||
setBillboardTextureMatrix(m_spritenode,
|
setBillboardTextureMatrix(m_spritenode, txs, tys, col, row);
|
||||||
txs, tys, col, row);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenericCAO::updateTextures(std::string mod)
|
void GenericCAO::updateTextures(const std::string &mod)
|
||||||
{
|
{
|
||||||
ITextureSource *tsrc = m_client->tsrc();
|
ITextureSource *tsrc = m_client->tsrc();
|
||||||
|
|
||||||
@ -1292,7 +1290,7 @@ void GenericCAO::processMessage(const std::string &data)
|
|||||||
m_position = readV3F1000(is);
|
m_position = readV3F1000(is);
|
||||||
m_velocity = readV3F1000(is);
|
m_velocity = readV3F1000(is);
|
||||||
m_acceleration = readV3F1000(is);
|
m_acceleration = readV3F1000(is);
|
||||||
if(fabs(m_prop.automatic_rotate) < 0.001)
|
if (std::fabs(m_prop.automatic_rotate) < 0.001f)
|
||||||
m_yaw = readF1000(is);
|
m_yaw = readF1000(is);
|
||||||
else
|
else
|
||||||
readF1000(is);
|
readF1000(is);
|
||||||
|
@ -199,7 +199,7 @@ public:
|
|||||||
|
|
||||||
// std::string copy is mandatory as mod can be a class member and there is a swap
|
// std::string copy is mandatory as mod can be a class member and there is a swap
|
||||||
// on those class members
|
// on those class members
|
||||||
void updateTextures(std::string mod);
|
void updateTextures(const std::string &mod);
|
||||||
|
|
||||||
void updateAnimation();
|
void updateAnimation();
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "fontengine.h"
|
#include "fontengine.h"
|
||||||
|
#include <cmath>
|
||||||
#include "client/renderingengine.h"
|
#include "client/renderingengine.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "porting.h"
|
#include "porting.h"
|
||||||
@ -309,10 +310,10 @@ void FontEngine::initFont(unsigned int basesize, FontMode mode)
|
|||||||
}
|
}
|
||||||
#if USE_FREETYPE
|
#if USE_FREETYPE
|
||||||
else {
|
else {
|
||||||
if (! is_yes(m_settings->get("freetype"))) {
|
if (!is_yes(m_settings->get("freetype"))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
unsigned int size = floor(RenderingEngine::getDisplayDensity() *
|
u32 size = std::floor(RenderingEngine::getDisplayDensity() *
|
||||||
m_settings->getFloat("gui_scaling") * basesize);
|
m_settings->getFloat("gui_scaling") * basesize);
|
||||||
u32 font_shadow = 0;
|
u32 font_shadow = 0;
|
||||||
u32 font_shadow_alpha = 0;
|
u32 font_shadow_alpha = 0;
|
||||||
@ -428,7 +429,7 @@ void FontEngine::initSimpleFont(unsigned int basesize, FontMode mode)
|
|||||||
if (basesize == FONT_SIZE_UNSPECIFIED)
|
if (basesize == FONT_SIZE_UNSPECIFIED)
|
||||||
basesize = DEFAULT_FONT_SIZE;
|
basesize = DEFAULT_FONT_SIZE;
|
||||||
|
|
||||||
unsigned int size = floor(
|
u32 size = std::floor(
|
||||||
RenderingEngine::getDisplayDensity() *
|
RenderingEngine::getDisplayDensity() *
|
||||||
m_settings->getFloat("gui_scaling") *
|
m_settings->getFloat("gui_scaling") *
|
||||||
basesize);
|
basesize);
|
||||||
|
@ -3131,9 +3131,9 @@ PointedThing Game::updatePointedThing(
|
|||||||
// Modify final color a bit with time
|
// Modify final color a bit with time
|
||||||
u32 timer = porting::getTimeMs() % 5000;
|
u32 timer = porting::getTimeMs() % 5000;
|
||||||
float timerf = (float) (irr::core::PI * ((timer / 2500.0) - 0.5));
|
float timerf = (float) (irr::core::PI * ((timer / 2500.0) - 0.5));
|
||||||
float sin_r = 0.08 * sin(timerf);
|
float sin_r = 0.08f * std::sin(timerf);
|
||||||
float sin_g = 0.08 * sin(timerf + irr::core::PI * 0.5);
|
float sin_g = 0.08f * std::sin(timerf + irr::core::PI * 0.5f);
|
||||||
float sin_b = 0.08 * sin(timerf + irr::core::PI);
|
float sin_b = 0.08f * std::sin(timerf + irr::core::PI);
|
||||||
c.setRed(core::clamp(core::round32(c.getRed() * (0.8 + sin_r)), 0, 255));
|
c.setRed(core::clamp(core::round32(c.getRed() * (0.8 + sin_r)), 0, 255));
|
||||||
c.setGreen(core::clamp(core::round32(c.getGreen() * (0.8 + sin_g)), 0, 255));
|
c.setGreen(core::clamp(core::round32(c.getGreen() * (0.8 + sin_g)), 0, 255));
|
||||||
c.setBlue(core::clamp(core::round32(c.getBlue() * (0.8 + sin_b)), 0, 255));
|
c.setBlue(core::clamp(core::round32(c.getBlue() * (0.8 + sin_b)), 0, 255));
|
||||||
|
@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "particles.h"
|
#include "particles.h"
|
||||||
|
#include <cmath>
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "collision.h"
|
#include "collision.h"
|
||||||
#include "client/clientevent.h"
|
#include "client/clientevent.h"
|
||||||
@ -227,7 +228,8 @@ void Particle::updateVertices()
|
|||||||
for (video::S3DVertex &vertex : m_vertices) {
|
for (video::S3DVertex &vertex : m_vertices) {
|
||||||
if (m_vertical) {
|
if (m_vertical) {
|
||||||
v3f ppos = m_player->getPosition()/BS;
|
v3f ppos = m_player->getPosition()/BS;
|
||||||
vertex.Pos.rotateXZBy(atan2(ppos.Z-m_pos.Z, ppos.X-m_pos.X)/core::DEGTORAD+90);
|
vertex.Pos.rotateXZBy(std::atan2(ppos.Z - m_pos.Z, ppos.X - m_pos.X) /
|
||||||
|
core::DEGTORAD + 90);
|
||||||
} else {
|
} else {
|
||||||
vertex.Pos.rotateYZBy(m_player->getPitch());
|
vertex.Pos.rotateYZBy(m_player->getPitch());
|
||||||
vertex.Pos.rotateXZBy(m_player->getYaw());
|
vertex.Pos.rotateXZBy(m_player->getYaw());
|
||||||
|
23
src/sky.cpp
23
src/sky.cpp
@ -1,3 +1,22 @@
|
|||||||
|
/*
|
||||||
|
Minetest
|
||||||
|
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2.1 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include "sky.h"
|
#include "sky.h"
|
||||||
#include "IVideoDriver.h"
|
#include "IVideoDriver.h"
|
||||||
#include "ISceneManager.h"
|
#include "ISceneManager.h"
|
||||||
@ -243,7 +262,7 @@ void Sky::render()
|
|||||||
{
|
{
|
||||||
float mid1 = 0.25;
|
float mid1 = 0.25;
|
||||||
float mid = wicked_time_of_day < 0.5 ? mid1 : (1.0 - mid1);
|
float mid = wicked_time_of_day < 0.5 ? mid1 : (1.0 - mid1);
|
||||||
float a_ = 1.0 - fabs(wicked_time_of_day - mid) * 35.0;
|
float a_ = 1.0f - std::fabs(wicked_time_of_day - mid) * 35.0f;
|
||||||
float a = easeCurve(MYMAX(0, MYMIN(1, a_)));
|
float a = easeCurve(MYMAX(0, MYMIN(1, a_)));
|
||||||
//std::cerr<<"a_="<<a_<<" a="<<a<<std::endl;
|
//std::cerr<<"a_="<<a_<<" a="<<a<<std::endl;
|
||||||
video::SColor c(255, 255, 255, 255);
|
video::SColor c(255, 255, 255, 255);
|
||||||
@ -539,7 +558,7 @@ void Sky::update(float time_of_day, float time_brightness,
|
|||||||
|
|
||||||
float cloud_color_change_fraction = 0.95;
|
float cloud_color_change_fraction = 0.95;
|
||||||
if (sunlight_seen) {
|
if (sunlight_seen) {
|
||||||
if (fabs(time_brightness - m_brightness) < 0.2) {
|
if (std::fabs(time_brightness - m_brightness) < 0.2f) {
|
||||||
m_brightness = m_brightness * 0.95 + time_brightness * 0.05;
|
m_brightness = m_brightness * 0.95 + time_brightness * 0.05;
|
||||||
} else {
|
} else {
|
||||||
m_brightness = m_brightness * 0.80 + time_brightness * 0.20;
|
m_brightness = m_brightness * 0.80 + time_brightness * 0.20;
|
||||||
|
@ -173,6 +173,6 @@ s16 adjustDist(s16 dist, float zoom_fov)
|
|||||||
|
|
||||||
// new_dist = dist * ((1 - cos(FOV / 2)) / (1-cos(zoomFOV /2))) ^ (1/3)
|
// new_dist = dist * ((1 - cos(FOV / 2)) / (1-cos(zoomFOV /2))) ^ (1/3)
|
||||||
// note: FOV is calculated at compilation time
|
// note: FOV is calculated at compilation time
|
||||||
return round(dist * std::cbrt((1.0f - std::cos(default_fov)) /
|
return std::round(dist * std::cbrt((1.0f - std::cos(default_fov)) /
|
||||||
(1.0f - std::cos(zoom_fov / 2.0f))));
|
(1.0f - std::cos(zoom_fov / 2.0f))));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user