48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
using Q01_Cálculos;
|
|
using System.Numerics;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
|
|
/// <summary>
|
|
/// Clase que representa un componente sólido
|
|
/// </summary>
|
|
public class Component : IRigidBody
|
|
{
|
|
/// <summary>
|
|
/// Centro de masas arbitrario, respecto el centro de rotación del objeto
|
|
/// </summary>
|
|
public Vector3 CenterOfMass { get; set; }
|
|
/// <summary>
|
|
/// Masa del objeto
|
|
/// </summary>
|
|
public float Mass { get; set; }
|
|
/// <summary>
|
|
/// Peso del objeto para la gravedad definida en la simulación actual
|
|
/// </summary>
|
|
public Vector3 Weight => Mass * Physics.CurrentGravity;
|
|
/// <summary>
|
|
/// Nombre del objeto
|
|
/// </summary>
|
|
public string Name { get; set; } = String.Empty;
|
|
/// <summary>
|
|
/// Devuelve el recuento de sub-componentes
|
|
/// </summary>
|
|
/// <returns>Siempre será 0 ya que este es un elemento básico y no puede tener hijos</returns>
|
|
public int GetChildItemCount(bool Recursive) => 0;
|
|
|
|
/// <summary>
|
|
/// Devuelve un resumen de las características del componente
|
|
/// </summary>
|
|
/// <param name="pad"></param>
|
|
/// <returns></returns>
|
|
public string Summary(int pad = 0)
|
|
{
|
|
StringBuilder sb = new();
|
|
sb.AppendLinePadded($"Component Name: {Name}", pad);
|
|
sb.AppendLinePadded($"- Mass: {Mass}", pad);
|
|
sb.AppendLinePadded($"- Weight: {Weight}", pad);
|
|
sb.AppendLinePadded($"- Center Of Mass: {CenterOfMass}", pad);
|
|
return sb.ToString();
|
|
}
|
|
}
|