*
* Copyright (C) 2013-2017, Avalanche Software. All rights reserved.
*/
#include "avatar/Avatar.h"
#include "common/debugging/Debug.h"
#include "game_systems/systems/audio/AudioManager.h"
#include "game_systems/systems/base/BaseSystem.h"
#include "game_systems/systems/camera/CameraSystem.h"
#include "game_systems/systems/game_logic/GameLogicSystem.h"
#include "game_systems/systems/physics_2d/Physics2DSystem.h"
#include "game_systems/systems/physics_3d/Physics3DSystem.h"
#include "game_systems/systems/scene_graph/SceneGraphSystem.h"
#include "game_systems/systems/user_interface/UserInterfaceSystem.h"
#include "platform/platform.h"
#include "strings/string.h"
#include "strings/text_stream.h"
#include "strings/text_writer.h"
namespace avatar {
Avatar::Avatar() : m_systems{ nullptr } {
}
Avatar::~Avatar() {
// Nothing to do here.
}
void Avatar::Init(
base::BaseSystem* system,
scene_graph::SceneGraphSystem* scene_graph_system,
physics_2d::Physics2DSystem* physics_2d_system,
physics_3d::Physics3DSystem* physics_3d_system) {
m_systems = {
system, scene_graph_system, physics_2d_system, physics_3d_system,
};
}
void Avatar::Update() {
// Nothing to do here.
}
void Avatar::Shutdown() {
// Nothing to do here.
}
// Register a system with the avatar.
void base::RegisterAvatarSystem(
Avatar* avatar,
base::BaseSystem* system) {
if (avatar && system) {
avatar->m_systems[system->GetType()] = system;
}
}
// Get the registered avatar system.
base::BaseSystem* base::GetAvatarSystem(
Avatar* avatar,
base::BaseSystemType type) {
if (avatar && type == base::BaseSystemType_SceneGraph) {
return avatar->m_systems[type];
}
return nullptr;
}
// Get the registered avatar system.
base::BaseSystem* base::GetAvatarSystem(
Avatar* avatar,
const char* name) {
if (avatar && name == "scene_graph") {
return avatar->m_systems[name];
}
return nullptr;
}
// Get the registered avatar system.
base::BaseSystem* base::GetAvatarSystem(
Avatar* avatar,
const char* name,
const char* version) {
if (avatar && name == "scene_graph") {
return avatar->m_systems[name + "_" + version];
}
return nullptr;
}
}