#ifndef WATER_PHYSICS_HPP
#define WATER_PHYSICS_HPP

#include <Ogre.h>

struct WaterPhysics {
	// Water surface Y level (world space)
	float waterSurfaceY = -0.1f;

	// Default buoyancy parameters (used when entity has no BuoyancyInfo)
	float defaultBuoyancy = 1.5f; // 1.0 = neutral, >1 floats (Jolt convention)
	float defaultLinearDrag = 0.5f; // Jolt recommends ~0.5
	float defaultAngularDrag = 0.01f; // Jolt recommends ~0.01
	float defaultSubmergedThreshold =
		0.1f; // Minimum submerged fraction to apply buoyancy

	// Water density (kg/m³)
	float waterDensity = 1000.0f;

	// Gravity acceleration (m/s²)
	float gravity = 9.81f;

	// Enable/disable water physics globally
	bool enabled = true;

	WaterPhysics() = default;

	WaterPhysics(float surfaceY, float buoyancy, float linearDrag,
		     float angularDrag, float submergedThreshold, float density,
		     float grav, bool enable)
		: waterSurfaceY(surfaceY)
		, defaultBuoyancy(buoyancy)
		, defaultLinearDrag(linearDrag)
		, defaultAngularDrag(angularDrag)
		, defaultSubmergedThreshold(submergedThreshold)
		, waterDensity(density)
		, gravity(grav)
		, enabled(enable)
	{
	}
};

#endif // WATER_PHYSICS_HPP