mirror of
https://github.com/Relintai/codot.git
synced 2024-11-08 20:22:09 +01:00
Fix more issues with math funcs, and link to the math library.
This commit is contained in:
parent
c6cec44559
commit
e8bbb13f85
@ -86,7 +86,7 @@ env["CXXFLAGS"] = ""
|
||||
env.Append(CXXFLAGS=str(CXXFLAGS).split())
|
||||
|
||||
LINKFLAGS = env.get("LINKFLAGS", "")
|
||||
env["LINKFLAGS"] = ""
|
||||
env["LINKFLAGS"] = "-lm"
|
||||
env.Append(LINKFLAGS=str(LINKFLAGS).split())
|
||||
|
||||
methods.no_verbose(sys, env)
|
||||
|
@ -29,6 +29,7 @@
|
||||
/*************************************************************************/
|
||||
|
||||
#include "math_funcs.h"
|
||||
#include <math.h>
|
||||
|
||||
//#include "core/error_macros.h"
|
||||
|
||||
@ -85,25 +86,6 @@ int math_step_decimals(double p_step) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Only meant for editor usage in float ranges, where a step of 0
|
||||
// means that decimal digits should not be limited in String::num.
|
||||
int math_range_step_decimals(double p_step) {
|
||||
if (p_step < 0.0000000000001) {
|
||||
return 16; // Max value hardcoded in String::num
|
||||
}
|
||||
return step_decimals(p_step);
|
||||
}
|
||||
|
||||
double math_dectime(double p_value, double p_amount, double p_step) {
|
||||
//WARN_DEPRECATED_MSG("The `dectime()` function has been deprecated and will be removed in Godot 4.0. Use `move_toward()` instead.");
|
||||
double sgn = p_value < 0 ? -1.0 : 1.0;
|
||||
double val = math_absd(p_value);
|
||||
val -= p_amount * p_step;
|
||||
if (val < 0.0) {
|
||||
val = 0.0;
|
||||
}
|
||||
return val * sgn;
|
||||
}
|
||||
|
||||
double math_ease(double p_x, double p_c) {
|
||||
if (p_x < 0) {
|
||||
@ -130,6 +112,26 @@ double math_ease(double p_x, double p_c) {
|
||||
}
|
||||
}
|
||||
|
||||
// Only meant for editor usage in float ranges, where a step of 0
|
||||
// means that decimal digits should not be limited in String::num.
|
||||
int math_range_step_decimals(double p_step) {
|
||||
if (p_step < 0.0000000000001) {
|
||||
return 16; // Max value hardcoded in String::num
|
||||
}
|
||||
return math_step_decimals(p_step);
|
||||
}
|
||||
|
||||
double math_dectime(double p_value, double p_amount, double p_step) {
|
||||
//WARN_DEPRECATED_MSG("The `dectime()` function has been deprecated and will be removed in Godot 4.0. Use `move_toward()` instead.");
|
||||
double sgn = p_value < 0 ? -1.0 : 1.0;
|
||||
double val = math_absd(p_value);
|
||||
val -= p_amount * p_step;
|
||||
if (val < 0.0) {
|
||||
val = 0.0;
|
||||
}
|
||||
return val * sgn;
|
||||
}
|
||||
|
||||
float math_stepifyf(float p_value, float p_step) {
|
||||
if (p_step != 0) {
|
||||
p_value = math_floorf(p_value / p_step + 0.5) * p_step;
|
||||
|
@ -365,27 +365,27 @@ static _ALWAYS_INLINE_ float math_roundf(float p_val) {
|
||||
}
|
||||
|
||||
// double only, as these functions are mainly used by the editor and not performance-critical,
|
||||
static double ease(double p_x, double p_c);
|
||||
int step_decimals(double p_step);
|
||||
static int range_step_decimals(double p_step);
|
||||
static double stepify(double p_value, double p_step);
|
||||
static double dectime(double p_value, double p_amount, double p_step);
|
||||
int math_step_decimals(double p_step);
|
||||
static int math_range_step_decimals(double p_step);
|
||||
double math_ease(double p_x, double p_c);
|
||||
double math_stepify(double p_value, double p_step);
|
||||
double math_dectime(double p_value, double p_amount, double p_step);
|
||||
|
||||
static uint32_t larger_prime(uint32_t p_val);
|
||||
uint32_t math_larger_prime(uint32_t p_val);
|
||||
|
||||
static void seed(uint64_t x);
|
||||
static void randomize();
|
||||
static uint32_t rand_from_seed(uint64_t *seed);
|
||||
uint32_t rand();
|
||||
void math_seed(uint64_t x);
|
||||
void math_randomize();
|
||||
uint32_t rand_from_seed(uint64_t *seed);
|
||||
uint32_t math_rand();
|
||||
static _ALWAYS_INLINE_ double randd() {
|
||||
return (double)rand() / (double)MATH_RANDOM_32BIT_MAX;
|
||||
return (double)math_rand() / (double)MATH_RANDOM_32BIT_MAX;
|
||||
}
|
||||
static _ALWAYS_INLINE_ float randf() {
|
||||
return (float)rand() / (float)MATH_RANDOM_32BIT_MAX;
|
||||
return (float)math_rand() / (float)MATH_RANDOM_32BIT_MAX;
|
||||
}
|
||||
|
||||
static double math_randomd(double from, double to);
|
||||
static float math_randomf(float from, float to);
|
||||
double math_randomd(double from, double to);
|
||||
float math_randomf(float from, float to);
|
||||
|
||||
static real_t math_randomr(int from, int to) {
|
||||
return (real_t)math_randomf((real_t)from, (real_t)to);
|
||||
|
Loading…
Reference in New Issue
Block a user