Code/Entity/Common/AngularVelocity.cs
using Sandbox;

namespace MANIFOLD.BHLib.Components {
    [Title("Angular Velocity")]
    [Category("Transform")]
    [Icon("360")]
    public class AngularVelocityDefiniton : ComponentDefinition {
        public Angles Velocity { get; set; }
        
        public override EntityComponent Create(GameObject obj) {
            var comp = obj.AddComponent<AngularVelocity>();
            comp.Data = this;
            return comp;
        }
    }
    
    /// <summary>
    /// Rotates the entity every frame.
    /// </summary>
    [Category(LibraryData.CATEGORY + "/Transform")]
    [Icon("360")]
    [Hide]
    public class AngularVelocity : EntityComponent {
        public AngularVelocityDefiniton Data { get; set; }

        public override void SimulateFrame(float deltaTime) {
            base.SimulateFrame(deltaTime);
            
            LocalRotation *= Data.Velocity * deltaTime;
        }
    }
}