Code/Entity/Common/Velocity.cs
using Sandbox;
namespace MANIFOLD.BHLib.Components {
/// <summary>
/// Move without collision checks.
/// </summary>
[Title("Velocity")]
[Category("Transform")]
[Icon("speed")]
public class VelocityDefinition : ComponentDefinition {
public bool Global { get; set; }
public Vector3 Velocity { get; set; }
public override EntityComponent Create(GameObject obj) {
var comp = obj.AddComponent<Velocity>();
comp.Data = this;
return comp;
}
}
/// <summary>
/// Moves an entity every frame.
/// </summary>
[Category(LibraryData.CATEGORY + "/Transform")]
[Icon("speed")]
[Hide]
public class Velocity : EntityComponent {
public VelocityDefinition Data { get; set; }
public override void SimulateFrame(float deltaTime) {
var vec = Data.Global ? Data.Velocity : WorldRotation * Data.Velocity;
WorldPosition += vec * deltaTime;
}
}
}