summaryrefslogtreecommitdiffstats
path: root/servers
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2023-06-06 17:58:09 +0200
committerGitHub <noreply@github.com>2023-06-06 17:58:09 +0200
commit46c406882140427b2d454b67ae0a857bf8a7d818 (patch)
treed06084af0844ef30eb51fccdfab68774849d9d73 /servers
parented63b9ea236addd0d9cb6e0c6a862bd8fdf4978e (diff)
parentb69c8b47916e4b3511c1aeff254ebfa6deef37ba (diff)
downloadredot-engine-46c406882140427b2d454b67ae0a857bf8a7d818.tar.gz
Merge pull request #77170 from lawnjelly/scu_build_master
Add support for single compilation unit builds
Diffstat (limited to 'servers')
-rw-r--r--servers/physics_3d/godot_joint_3d.h33
-rw-r--r--servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp33
-rw-r--r--servers/physics_3d/joints/godot_hinge_joint_3d.cpp33
-rw-r--r--servers/physics_3d/joints/godot_slider_joint_3d.cpp19
-rw-r--r--servers/rendering/renderer_canvas_cull.cpp2
-rw-r--r--servers/rendering/renderer_canvas_cull.h2
6 files changed, 35 insertions, 87 deletions
diff --git a/servers/physics_3d/godot_joint_3d.h b/servers/physics_3d/godot_joint_3d.h
index 438970e2c9..3207723cb4 100644
--- a/servers/physics_3d/godot_joint_3d.h
+++ b/servers/physics_3d/godot_joint_3d.h
@@ -39,6 +39,39 @@ protected:
bool dynamic_A = false;
bool dynamic_B = false;
+ void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) {
+ if (Math::abs(n.z) > Math_SQRT12) {
+ // choose p in y-z plane
+ real_t a = n[1] * n[1] + n[2] * n[2];
+ real_t k = 1.0 / Math::sqrt(a);
+ p = Vector3(0, -n[2] * k, n[1] * k);
+ // set q = n x p
+ q = Vector3(a * k, -n[0] * p[2], n[0] * p[1]);
+ } else {
+ // choose p in x-y plane
+ real_t a = n.x * n.x + n.y * n.y;
+ real_t k = 1.0 / Math::sqrt(a);
+ p = Vector3(-n.y * k, n.x * k, 0);
+ // set q = n x p
+ q = Vector3(-n.z * p.y, n.z * p.x, a * k);
+ }
+ }
+
+ _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
+ real_t coeff_1 = Math_PI / 4.0f;
+ real_t coeff_2 = 3.0f * coeff_1;
+ real_t abs_y = Math::abs(y);
+ real_t angle;
+ if (x >= 0.0f) {
+ real_t r = (x - abs_y) / (x + abs_y);
+ angle = coeff_1 - coeff_1 * r;
+ } else {
+ real_t r = (x + abs_y) / (abs_y - x);
+ angle = coeff_2 - coeff_1 * r;
+ }
+ return (y < 0.0f) ? -angle : angle;
+ }
+
public:
virtual bool setup(real_t p_step) override { return false; }
virtual bool pre_solve(real_t p_step) override { return true; }
diff --git a/servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp b/servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp
index 72d6e33c68..c654756d3c 100644
--- a/servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp
+++ b/servers/physics_3d/joints/godot_cone_twist_joint_3d.cpp
@@ -51,39 +51,6 @@ Written by: Marcus Hennix
#include "godot_cone_twist_joint_3d.h"
-static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) {
- if (Math::abs(n.z) > Math_SQRT12) {
- // choose p in y-z plane
- real_t a = n[1] * n[1] + n[2] * n[2];
- real_t k = 1.0 / Math::sqrt(a);
- p = Vector3(0, -n[2] * k, n[1] * k);
- // set q = n x p
- q = Vector3(a * k, -n[0] * p[2], n[0] * p[1]);
- } else {
- // choose p in x-y plane
- real_t a = n.x * n.x + n.y * n.y;
- real_t k = 1.0 / Math::sqrt(a);
- p = Vector3(-n.y * k, n.x * k, 0);
- // set q = n x p
- q = Vector3(-n.z * p.y, n.z * p.x, a * k);
- }
-}
-
-static _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
- real_t coeff_1 = Math_PI / 4.0f;
- real_t coeff_2 = 3.0f * coeff_1;
- real_t abs_y = Math::abs(y);
- real_t angle;
- if (x >= 0.0f) {
- real_t r = (x - abs_y) / (x + abs_y);
- angle = coeff_1 - coeff_1 * r;
- } else {
- real_t r = (x + abs_y) / (abs_y - x);
- angle = coeff_2 - coeff_1 * r;
- }
- return (y < 0.0f) ? -angle : angle;
-}
-
GodotConeTwistJoint3D::GodotConeTwistJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame) :
GodotJoint3D(_arr, 2) {
A = rbA;
diff --git a/servers/physics_3d/joints/godot_hinge_joint_3d.cpp b/servers/physics_3d/joints/godot_hinge_joint_3d.cpp
index 826401bafb..3d423f70e2 100644
--- a/servers/physics_3d/joints/godot_hinge_joint_3d.cpp
+++ b/servers/physics_3d/joints/godot_hinge_joint_3d.cpp
@@ -49,24 +49,6 @@ subject to the following restrictions:
#include "godot_hinge_joint_3d.h"
-static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) {
- if (Math::abs(n.z) > Math_SQRT12) {
- // choose p in y-z plane
- real_t a = n[1] * n[1] + n[2] * n[2];
- real_t k = 1.0 / Math::sqrt(a);
- p = Vector3(0, -n[2] * k, n[1] * k);
- // set q = n x p
- q = Vector3(a * k, -n[0] * p[2], n[0] * p[1]);
- } else {
- // choose p in x-y plane
- real_t a = n.x * n.x + n.y * n.y;
- real_t k = 1.0 / Math::sqrt(a);
- p = Vector3(-n.y * k, n.x * k, 0);
- // set q = n x p
- q = Vector3(-n.z * p.y, n.z * p.x, a * k);
- }
-}
-
GodotHingeJoint3D::GodotHingeJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameA, const Transform3D &frameB) :
GodotJoint3D(_arr, 2) {
A = rbA;
@@ -368,21 +350,6 @@ void HingeJointSW::updateRHS(real_t timeStep)
*/
-static _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
- real_t coeff_1 = Math_PI / 4.0f;
- real_t coeff_2 = 3.0f * coeff_1;
- real_t abs_y = Math::abs(y);
- real_t angle;
- if (x >= 0.0f) {
- real_t r = (x - abs_y) / (x + abs_y);
- angle = coeff_1 - coeff_1 * r;
- } else {
- real_t r = (x + abs_y) / (abs_y - x);
- angle = coeff_2 - coeff_1 * r;
- }
- return (y < 0.0f) ? -angle : angle;
-}
-
real_t GodotHingeJoint3D::get_hinge_angle() {
const Vector3 refAxis0 = A->get_transform().basis.xform(m_rbAFrame.basis.get_column(0));
const Vector3 refAxis1 = A->get_transform().basis.xform(m_rbAFrame.basis.get_column(1));
diff --git a/servers/physics_3d/joints/godot_slider_joint_3d.cpp b/servers/physics_3d/joints/godot_slider_joint_3d.cpp
index 21004b3395..b9dca94b37 100644
--- a/servers/physics_3d/joints/godot_slider_joint_3d.cpp
+++ b/servers/physics_3d/joints/godot_slider_joint_3d.cpp
@@ -57,25 +57,6 @@ April 04, 2008
//-----------------------------------------------------------------------------
-static _FORCE_INLINE_ real_t atan2fast(real_t y, real_t x) {
- real_t coeff_1 = Math_PI / 4.0f;
- real_t coeff_2 = 3.0f * coeff_1;
- real_t abs_y = Math::abs(y);
- real_t angle;
- if (x >= 0.0f) {
- real_t r = (x - abs_y) / (x + abs_y);
- angle = coeff_1 - coeff_1 * r;
- } else {
- real_t r = (x + abs_y) / (abs_y - x);
- angle = coeff_2 - coeff_1 * r;
- }
- return (y < 0.0f) ? -angle : angle;
-}
-
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-
GodotSliderJoint3D::GodotSliderJoint3D(GodotBody3D *rbA, GodotBody3D *rbB, const Transform3D &frameInA, const Transform3D &frameInB) :
GodotJoint3D(_arr, 2),
m_frameInA(frameInA),
diff --git a/servers/rendering/renderer_canvas_cull.cpp b/servers/rendering/renderer_canvas_cull.cpp
index 097580f3bd..011f0327c9 100644
--- a/servers/rendering/renderer_canvas_cull.cpp
+++ b/servers/rendering/renderer_canvas_cull.cpp
@@ -36,8 +36,6 @@
#include "rendering_server_globals.h"
#include "servers/rendering/storage/texture_storage.h"
-static const int z_range = RS::CANVAS_ITEM_Z_MAX - RS::CANVAS_ITEM_Z_MIN + 1;
-
void RendererCanvasCull::_render_canvas_item_tree(RID p_to_render_target, Canvas::ChildItem *p_child_items, int p_child_item_count, Item *p_canvas_item, const Transform2D &p_transform, const Rect2 &p_clip_rect, const Color &p_modulate, RendererCanvasRender::Light *p_lights, RendererCanvasRender::Light *p_directional_lights, RenderingServer::CanvasItemTextureFilter p_default_filter, RenderingServer::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, uint32_t canvas_cull_mask) {
RENDER_TIMESTAMP("Cull CanvasItem Tree");
diff --git a/servers/rendering/renderer_canvas_cull.h b/servers/rendering/renderer_canvas_cull.h
index 1106fc4f1e..4f11d2c7b1 100644
--- a/servers/rendering/renderer_canvas_cull.h
+++ b/servers/rendering/renderer_canvas_cull.h
@@ -183,6 +183,8 @@ private:
void _render_canvas_item_tree(RID p_to_render_target, Canvas::ChildItem *p_child_items, int p_child_item_count, Item *p_canvas_item, const Transform2D &p_transform, const Rect2 &p_clip_rect, const Color &p_modulate, RendererCanvasRender::Light *p_lights, RendererCanvasRender::Light *p_directional_lights, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, uint32_t canvas_cull_mask);
void _cull_canvas_item(Item *p_canvas_item, const Transform2D &p_transform, const Rect2 &p_clip_rect, const Color &p_modulate, int p_z, RendererCanvasRender::Item **r_z_list, RendererCanvasRender::Item **r_z_last_list, Item *p_canvas_clip, Item *p_material_owner, bool allow_y_sort, uint32_t canvas_cull_mask);
+ static constexpr int z_range = RS::CANVAS_ITEM_Z_MAX - RS::CANVAS_ITEM_Z_MIN + 1;
+
RendererCanvasRender::Item **z_list;
RendererCanvasRender::Item **z_last_list;