Bladeren bron

Initialize MaterialManager and UnitManager

Daniele Bartolini 10 jaren geleden
bovenliggende
commit
56b21d2f99
2 gewijzigde bestanden met toevoegingen van 35 en 10 verwijderingen
  1. 24 9
      src/device.cpp
  2. 11 1
      src/device.h

+ 24 - 9
src/device.cpp

@@ -63,6 +63,8 @@ Device::Device(const DeviceOptions& opts)
 	, _resource_manager(NULL)
 	, _input_manager(NULL)
 	, _shader_manager(NULL)
+	, _material_manager(NULL)
+	, _unit_manager(NULL)
 	, _worlds(default_allocator())
 	, _bgfx_allocator(default_allocator())
 {
@@ -86,8 +88,6 @@ void Device::init()
 
 	read_config();
 
-	_input_manager = CE_NEW(_allocator, InputManager)(default_allocator());
-
 	bgfx::init(bgfx::RendererType::Count
 		, BGFX_PCI_ID_NONE
 		, 0
@@ -96,8 +96,9 @@ void Device::init()
 		);
 
 	_shader_manager = CE_NEW(_allocator, ShaderManager)(default_allocator());
-
-	material_manager::init();
+	_material_manager = CE_NEW(_allocator, MaterialManager)(default_allocator(), *_resource_manager);
+	_input_manager = CE_NEW(_allocator, InputManager)(default_allocator());
+	_unit_manager = CE_NEW(_allocator, UnitManager)(default_allocator());
 
 	audio_globals::init();
 	physics_globals::init();
@@ -134,10 +135,10 @@ void Device::shutdown()
 	physics_globals::shutdown();
 	audio_globals::shutdown();
 
-	material_manager::shutdown();
-
-	CE_DELETE(_allocator, _shader_manager);
+	CE_DELETE(_allocator, _unit_manager);
 	CE_DELETE(_allocator, _input_manager);
+	CE_DELETE(_allocator, _material_manager);
+	CE_DELETE(_allocator, _shader_manager);
 	CE_DELETE(_allocator, _resource_manager);
 	CE_DELETE(_allocator, _resource_loader);
 	CE_DELETE(_allocator, _bundle_filesystem);
@@ -231,14 +232,18 @@ void Device::update()
 	}
 }
 
-void Device::render_world(World& world, Camera* camera)
+void Device::render_world(World& world, CameraInstance camera)
 {
 	world.render(camera);
 }
 
 World* Device::create_world()
 {
-	World* w = CE_NEW(default_allocator(), World)(*_resource_manager, *_lua_environment);
+	World* w = CE_NEW(default_allocator(), World)(*_resource_manager
+		, *_lua_environment
+		, *_material_manager
+		, *_unit_manager
+		);
 	array::push_back(_worlds, w);
 	return w;
 }
@@ -301,6 +306,16 @@ ShaderManager* Device::shader_manager()
 	return _shader_manager;
 }
 
+MaterialManager* Device::material_manager()
+{
+	return _material_manager;
+}
+
+UnitManager* Device::unit_manager()
+{
+	return _unit_manager;
+}
+
 bool Device::process_events()
 {
 	OsEvent event;

+ 11 - 1
src/device.h

@@ -22,6 +22,8 @@
 #include "proxy_allocator.h"
 #include "string_utils.h"
 #include "shader_manager.h"
+#include "material_manager.h"
+#include "unit_manager.h"
 #include <bx/allocator.h>
 #include <bgfx/bgfx.h>
 
@@ -81,7 +83,7 @@ struct Device
 	void update();
 
 	/// Renders the given @a world from the point of view of @a camera.
-	void render_world(World& world, Camera* camera);
+	void render_world(World& world, CameraInstance camera);
 
 	/// Creates a new world.
 	World* create_world();
@@ -113,6 +115,12 @@ struct Device
 	/// Returns the shader manager.
 	ShaderManager* shader_manager();
 
+	/// Returns the material manager.
+	MaterialManager* material_manager();
+
+	/// Returns the unit manager.
+	UnitManager* unit_manager();
+
 private:
 
 	bool process_events();
@@ -151,6 +159,8 @@ private:
 	ResourceManager* _resource_manager;
 	InputManager* _input_manager;
 	ShaderManager* _shader_manager;
+	MaterialManager* _material_manager;
+	UnitManager* _unit_manager;
 
 	Array<World*> _worlds;