Explorar el Código

Load package resource in ResourcePackage ctor

Daniele Bartolini hace 11 años
padre
commit
9e7224c5ef
Se han modificado 2 ficheros con 13 adiciones y 23 borrados
  1. 1 12
      engine/Device.cpp
  2. 12 11
      engine/resource/ResourcePackage.h

+ 1 - 12
engine/Device.cpp

@@ -414,23 +414,12 @@ void Device::destroy_world(WorldId world)
 //-----------------------------------------------------------------------------
 ResourcePackage* Device::create_resource_package(const char* name)
 {
-	CE_ASSERT_NOT_NULL(name);
-
-	ResourceId package_id = m_resource_manager->load("package", name);
-	m_resource_manager->flush();
-
-	PackageResource* package_res = (PackageResource*) m_resource_manager->get(package_id);
-	ResourcePackage* package = CE_NEW(default_allocator(), ResourcePackage)(*m_resource_manager, package_id, package_res);
-
-	return package;
+	return CE_NEW(default_allocator(), ResourcePackage)(name, *m_resource_manager);
 }
 
 //-----------------------------------------------------------------------------
 void Device::destroy_resource_package(ResourcePackage* package)
 {
-	CE_ASSERT_NOT_NULL(package);
-
-	m_resource_manager->unload(package->resource_id());
 	CE_DELETE(default_allocator(), package);
 }
 

+ 12 - 11
engine/resource/ResourcePackage.h

@@ -41,13 +41,20 @@ class ResourcePackage
 public:
 
 	//-----------------------------------------------------------------------------
-	ResourcePackage(ResourceManager& resman, const ResourceId id, const PackageResource* package)
+	ResourcePackage(const char* name, ResourceManager& resman)
 		: m_resource_manager(&resman)
-		, m_package_id(id)
-		, m_package(package)
+		, m_id("package", name)
+		, m_package(NULL)
 		, m_has_loaded(false)
 	{
-		CE_ASSERT_NOT_NULL(package);
+		resman.load("package", name);
+		resman.flush();
+		m_package = (const PackageResource*) resman.get(m_id);
+	}
+
+	~ResourcePackage()
+	{
+		m_resource_manager->unload(m_id);
 	}
 
 	/// Loads all the resources in the package.
@@ -184,16 +191,10 @@ public:
 		return m_has_loaded;
 	}
 
-	/// Returns the resource id of the package.
-	ResourceId resource_id() const
-	{
-		return m_package_id;
-	}
-
 private:
 
 	ResourceManager* m_resource_manager;
-	const ResourceId m_package_id;
+	const ResourceId m_id;
 	const PackageResource* m_package;
 	bool m_has_loaded;
 };