aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ViewportCuller.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/ViewportCuller.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/ViewportCuller.h')
-rw-r--r--Minecraft.Client/ViewportCuller.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/Minecraft.Client/ViewportCuller.h b/Minecraft.Client/ViewportCuller.h
new file mode 100644
index 00000000..2a975de9
--- /dev/null
+++ b/Minecraft.Client/ViewportCuller.h
@@ -0,0 +1,35 @@
+#pragma once
+#include "Culler.h"
+#include "..\Minecraft.World\mob.h"
+
+class Mob;
+class ViewportCuller : public Culler
+{
+private:
+ class Face
+ {
+ private:
+ double xc, yc, zc;
+ double xd, yd, zd;
+ double cullOffs;
+ public:
+ Face() {} // 4J - added so we can declare an array of these (unitialised) in the class
+ Face(double x, double y, double z, float yRot, float xRot);
+ bool inFront(double x, double y, double z, double r);
+ bool inFront(double x0, double y0, double z0, double x1, double y1, double z1);
+ bool fullyInFront(double x0, double y0, double z0, double x1, double y1, double z1);
+ };
+
+private:
+ Face faces[6];
+ double xOff, yOff, zOff;
+public:
+ ViewportCuller(shared_ptr<Mob> mob, double fogDistance, float a);
+ virtual bool isVisible(AABB bb);
+ virtual bool cubeInFrustum(double x0, double y0, double z0, double x1, double y1, double z1);
+ virtual bool cubeFullyInFrustum(double x0, double y0, double z0, double x1, double y1, double z1);
+private:
+ double _max(double a, double b, double c); // 4J - renamed from _max due to #define conflict in stdlib
+public:
+ virtual void prepare(double xOff, double yOff, double zOff);
+};