summaryrefslogtreecommitdiff
path: root/src/vehicles/Floater.h
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
committerclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
commit9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686 (patch)
treea84756b82513739a2672db3a1f0ec579db6d18ff /src/vehicles/Floater.h
downloadre3-9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686.tar.gz
re3-9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686.zip
Import Cai1Hsu/re3 @ miami (reVC / GTA:VC decompilation)HEADmiami
Snapshot import (no upstream history) into git.ancap.in.ua/claude, per @lzcnt. Source: https://github.com/Cai1Hsu/re3 branch miami.
Diffstat (limited to 'src/vehicles/Floater.h')
-rw-r--r--src/vehicles/Floater.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/vehicles/Floater.h b/src/vehicles/Floater.h
new file mode 100644
index 0000000..91ab70a
--- /dev/null
+++ b/src/vehicles/Floater.h
@@ -0,0 +1,47 @@
+#pragma once
+
+class CPhysical;
+
+enum tWaterLevel
+{
+ FLOATER_ABOVE_WATER,
+ FLOATER_IN_WATER,
+ FLOATER_UNDER_WATER,
+};
+
+class cBuoyancy
+{
+public:
+ CVector m_position;
+ CMatrix m_matrix;
+ int m_field_54;
+ CVector m_positionZ;
+ float m_waterlevel;
+ float m_waterLevelInc;
+ float m_buoyancy;
+ CVector m_dimMax;
+ CVector m_dimMin;
+ float m_numPartialVolumes;
+ int m_field_8C;
+ int m_field_90;
+ int m_field_94;
+ bool m_haveVolume;
+ CVector m_step;
+ CVector m_stepRatio;
+ float m_numSteps;
+ bool m_flipAverage;
+ char m_field_B9;
+ bool m_isBoat;
+ float m_volumeUnderWater;
+ CVector m_impulsePoint;
+
+ bool ProcessBuoyancy(CPhysical *phys, float buoyancy, CVector *point, CVector *impulse);
+ bool ProcessBuoyancyBoat(CVehicle *phys, float buoyancy, CVector *point, CVector *impulse, bool bNoTurnForce);
+ void PreCalcSetup(CPhysical *phys, float buoyancy);
+ void SimpleCalcBuoyancy(void);
+ float SimpleSumBuoyancyData(CVector &waterLevel, tWaterLevel waterPosition);
+ void FindWaterLevel(const CVector &zpos, CVector *waterLevel, tWaterLevel *waterPosition);
+ void FindWaterLevelNorm(const CVector &zpos, CVector *waterLevel, tWaterLevel *waterPosition, CVector *normal);
+ bool CalcBuoyancyForce(CPhysical *phys, CVector *impulse, CVector *point);
+};
+extern cBuoyancy mod_Buoyancy;