namespace GlitchyEngine.World { class ScriptableEntity { internal Entity _entity; protected TransformComponent* transform => GetComponent(); public T* AddComponent(T value = T()) where T: struct, new { return _entity.AddComponent(value); } public T* GetComponent() where T: struct, new { return _entity.GetComponent(); } public bool HasComponent() where T: struct, new { return _entity.HasComponent(); } public void RemoveComponent() where T: struct, new { _entity.RemoveComponent(); } protected virtual void OnCreate() {} protected virtual void OnDestroy() {} protected virtual void OnUpdate(GameTime gt) {} } }