From ae69aaf5ce8eca137bd5da85e26c63a5027e049d Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 23 Jul 2019 22:55:23 +0200 Subject: implemented cBuoyancy --- src/vehicles/Floater.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/vehicles/Floater.h (limited to 'src/vehicles/Floater.h') diff --git a/src/vehicles/Floater.h b/src/vehicles/Floater.h new file mode 100644 index 00000000..ede2b9d0 --- /dev/null +++ b/src/vehicles/Floater.h @@ -0,0 +1,45 @@ +#pragma once + +class Physical; + +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_impulse; + + bool ProcessBuoyancy(CPhysical *phys, float buoyancy, CVector *impulse, CVector *point); + void PreCalcSetup(CPhysical *phys, float buoyancy); + void SimpleCalcBuoyancy(void); + float SimpleSumBuoyancyData(CVector &waterLevel, tWaterLevel waterPosition); + void FindWaterLevel(const CVector &zpos, CVector *waterLevel, tWaterLevel *waterPosition); + bool CalcBuoyancyForce(CPhysical *phys, CVector *impulse, CVector *point); +}; +extern cBuoyancy &mod_Buoyancy; -- cgit v1.2.3