kGame Game;
kHud Hud;
kCinemaPlayer CinemaPlayer;
kEvent Event;
kActorFactory ActorFactory;
kParticleFactory ParticleFactory;
kWorld World;
kNetwork Network;
kSys Sys;

/**
 * @brief Always returns the Server/Host Player.
 */
kPlayer LocalPlayer;

/**
 * @brief Returns true if you are in a multiplayer match online or offline
 */
const bool IsMultiplayer();

/**
 * @brief Warps the player to a warp point on any map
 * @param playerID the id of the player. 0 = local host
 * @param warpTID The TID of the Warp Point Actor
 * @param mapID The ID of the map to warp to
 * @param longWarp if true plays a blue glow screen effect when warping extending the warp time a bit
 */
void DoPlayerWarp(const int playerID, const int warpTID, const int mapID = -1, const bool longWarp = false);

/**
 * @brief Creates a map of functions headers and variables with the key as \a tableName. Used with kModeStateComponent::AssignModeTable(const kStr&in modeTableName)
 * @code{.cpp}
 * DefineMode("ActionObjectModeTable", ACTIONOBJECT_MODE_TRIGGER,  "void MODE_TriggerSetup(void)", "void MODE_TriggerTick(void)",  CF_STATIC, ANIM_EYE_ENTER, "int MODE_TriggerAnim(void)", 0, 0, 0, MF_NOROOTMOTION);
 * @endcode
 * @param  endOffset is not used
 */
void DefineMode(const kStr& in tableName, const uint32 modeID, const kStr& in setupHeader, const kStr& in tickHeader, const EnumClipFlags clipFlags, const uint32 animID,
						const kStr& in animHeader, const float animSpeed, const float animBlendSpeed, const uint32 endOffset, const uint32 modeFlags);

/**
 * @brief This is a fixed value of 0.016667 time in the engines units. 0.016667 is always the time of 1 tick also meaning 60 ticks is always 1 second.
 */ 
const float GAME_DELTA_TIME = 0.016667;
const float GAME_SCALE = 10.240000;
const float GAME_FRAME_TIME = 0.250000;
const float GAME_FRAME_UNIT = 4.000000;
/** @brief 1 / 15th of a second */ 
const float GAME_SECONDS = 0.066667;
