#ifndef EDITSCENE_BUOYANCYINFO_HPP
#define EDITSCENE_BUOYANCYINFO_HPP
#pragma once

#include <Ogre.h>

/**
 * BuoyancyInfo component
 * Provides per-entity buoyancy settings for water physics
 * If an entity has this component, it will use these settings
 * Otherwise, default settings from the buoyancy system will be used
 */
struct BuoyancyInfo {
	// Enable/disable buoyancy for this entity
	bool enabled = true;

	// Buoyancy strength (0 = no buoyancy, 1 = neutral buoyancy, >1 = floats)
	float buoyancy = 1.0f;

	// Linear drag when submerged (0 = no drag, 1 = full drag)
	float linearDrag = 0.1f;

	// Angular drag when submerged (0 = no drag, 1 = full drag)
	float angularDrag = 0.05f;

	// Water surface Y level for this entity (world space)
	// If not set (0), uses global water level from buoyancy system
	float waterSurfaceY = 0.0f;

	// Submergedness threshold (0-1) - how much of the body must be submerged
	// before buoyancy is applied (0 = any contact, 1 = fully submerged)
	float submergedThreshold = 0.3f;

	// Use custom water surface level (if false, uses global water level)
	bool useCustomWaterLevel = false;

	// Mark component as dirty (needs update)
	bool dirty = true;

	void markDirty()
	{
		dirty = true;
	}
};

#endif // EDITSCENE_BUOYANCYINFO_HPP