Я пытаюсь создать несколько общий физический модуль xna, подобный этому:
class PhysicsModule<T> : where T : Vector2, Vector3
{
private List<PhysicsForce<T>> _globalForces;
public PhysicsModule()
{
_globalForces = new List<PhysicsForce<T>>();
}
/// <summary>
/// Updates the resultant which will be sent to be applied on all entities.
/// </summary>
/// <param name="gameTime">...</param>
public override void UpdateResultant(GameTime gameTime)
{
_resultant = T.Zero;
foreach (PhysicsForce<T> force in _globalForces)
{
T vector = T.Multiply(force.Direction, force.Magnitude);
T modifiedByTime = T.Multiply(vector, (float)gameTime.ElapsedGameTime.TotalSeconds);
_resultant = T.Add(_resultant, modifiedByTime);
}
}
}
class PhysicsForce<T> where T : Vector2, Vector3
{
public T Direction;
public float Magnitude;
}
Я знаю, что этот код не будет работать, он служит только примером, чтобы прояснить, что я хочу сделать.Возможно ли это, или мне лучше иметь такую абстрактную базу
class PhysicsModule2D : PhysicsModule
class PhysicsForce2D : PhysicsForce