namespace Sand.Core; public sealed class ParticleDef { public string Id { get; init; } = ""; public string Name { get; init; } = ""; public ParticleKind Kind { get; init; } = ParticleKind.Solid; public bool IsStatic { get; init; } public bool IsSpecial { get; init; } public float Mass { get; init; } = 1f; public float Hardness { get; init; } = 0.5f; public float Velocity { get; init; } public float Conductivity { get; init; } public bool Conductive { get; init; } public float Flamability { get; init; } public float Durability { get; init; } = 100f; public float HeatCapacity { get; init; } = 1f; public float Friction { get; init; } public float Viscosity { get; init; } public float Pressure { get; init; } public float Temperature { get; init; } = 22f; public string? Melt { get; init; } public float? MeltTemperature { get; init; } public string? Evaporate { get; init; } public float? EvaporateTemperature { get; init; } public string? Solidify { get; init; } public float? SolidifyTemperature { get; init; } public string? Freeze { get; init; } public float? FreezeTemperature { get; init; } public float BurnDuration { get; init; } public float BurnTemperature { get; init; } public float BurnRate { get; init; } = 1f; public bool Burning { get; init; } public float? Lifetime { get; init; } public bool Explosive { get; init; } public int ExplosionRadius { get; init; } public Rgb24? ExplosionColor { get; init; } public float ExplosionForce { get; init; } public int ExplosionDuration { get; init; } public float PressureResistance { get; init; } public float PressureTolerance { get; init; } public float PressureThreshold { get; init; } public int PressureThresholdDuration { get; init; } public string? Broken { get; init; } public string? Produces { get; init; } public string? ProducesOnDeath { get; init; } public float HeatEmission { get; init; } public float EnergyTransfer { get; init; } public float Radius { get; init; } public float ForceFalloff { get; init; } public float Turbulence { get; init; } public string[] Affects { get; init; } = []; public bool IsWind { get; init; } public float WindStrength { get; init; } public float[]? WindDirection { get; init; } public bool IsGravity { get; init; } public float GravityStrength { get; init; } public string? PullDirection { get; init; } public bool IsRepulsor { get; init; } public float RepulsionStrength { get; init; } public string? PushDirection { get; init; } public Rgb24 Color { get; init; } = new(255, 255, 255); }