ActiveProtect/SimulationEnvironment/SimulationElement.cs

27 lines
910 B
C#

using ActiveProtect.Models;
namespace ActiveProtect.SimulationEnvironment
{
public abstract class SimulationElement(string id, Vector3D position, Orientation orientation, ISimulationManager simulationManager)
{
public string Id { get; set; } = id;
public Vector3D Position { get; set; } = position;
public Orientation Orientation { get; set; } = orientation;
public ISimulationManager SimulationManager { get; set; } = simulationManager;
public abstract void Update(double deltaTime);
public virtual string GetStatus()
{
return $"{GetType().Name} {Id} at {Position}, Orientation: {Orientation}";
}
protected void PublishEvent(SimulationEvent evt)
{
evt.SenderId = Id;
evt.Timestamp = SimulationManager.CurrentTime;
SimulationManager.PublishEvent(evt);
}
}
}