#ifndef RENDER_H
#define RENDER_H

#include "camera_node.h"
#include "renderable.h"
#include "raylib.h"

//! Initialize the rendering subsystem.
extern void InitializeRenderingSubsystem();
//! Cleanup after rendering system,
//! assumes you won't want to re-initialize after.
extern void CleanupRenderingSubsystem();

//! Register a renderable object through a typeclass.
extern void AddRenderable(Renderable renderable);
//! Remove a renderable object from draw list
extern void RemoveRenderable(Renderable renderable);

//! Set a camera as the main rendering camera.
extern void SetMainCamera(CameraNode *camera);
//! Get the current main rendering camera.
extern void GetMainCamera(CameraNode *camera);

//! Draw a frame to the screen based on the current state of the game.
extern void RenderNextFrame();

#endif // !RENDER_H
