51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using Godot;
|
|
|
|
namespace Particles.ParticleSimulation
|
|
{
|
|
public struct ParticleRelationshipProps
|
|
{
|
|
public ParticleRelationshipProps(float minRadius, float maxRadius, float force)
|
|
{
|
|
MinRadius = minRadius;
|
|
MaxRadius = maxRadius;
|
|
Force = force;
|
|
}
|
|
|
|
public float MinRadius { get; }
|
|
public float MaxRadius { get; }
|
|
public float Force { get; }
|
|
}
|
|
|
|
public class ParticleType
|
|
{
|
|
private readonly Dictionary<ParticleType, ParticleRelationshipProps> _particleRelationships =
|
|
new Dictionary<ParticleType, ParticleRelationshipProps>();
|
|
|
|
private float _hue;
|
|
|
|
public float Hue
|
|
{
|
|
get => _hue;
|
|
set => _hue = Mathf.Clamp(value, 0, 1);
|
|
}
|
|
|
|
public void AddRelationship(ParticleType type, ParticleRelationshipProps props)
|
|
{
|
|
if (_particleRelationships.ContainsKey(type))
|
|
return;
|
|
_particleRelationships[type] = props;
|
|
}
|
|
|
|
public void RemoveRelationship(ParticleType type)
|
|
{
|
|
if (_particleRelationships.ContainsKey(type))
|
|
_particleRelationships.Remove(type);
|
|
}
|
|
|
|
public ParticleRelationshipProps GetRelationship(ParticleType type)
|
|
{
|
|
return _particleRelationships[type];
|
|
}
|
|
}
|
|
} |