|
|
@@ -834,6 +834,33 @@ template <class T> void RegisterResource(asIScriptEngine* engine, const char* cl
|
|
|
engine->RegisterObjectMethod(className, "uint get_useTimer()" ,asMETHODPR(T, GetUseTimer, (), unsigned), asCALL_THISCALL);
|
|
|
}
|
|
|
|
|
|
+static void ResourceAddMetadata(const String& name, const Variant& value, ResourceWithMetadata* ptr)
|
|
|
+{
|
|
|
+ ptr->AddMetadata(name, value);
|
|
|
+}
|
|
|
+
|
|
|
+static const Variant& ResourceGetMetadata(const String& name, ResourceWithMetadata* ptr)
|
|
|
+{
|
|
|
+ return ptr->GetMetadata(name);
|
|
|
+}
|
|
|
+
|
|
|
+static bool ResourceHasMetadata(ResourceWithMetadata* ptr)
|
|
|
+{
|
|
|
+ return ptr->HasMetadata();
|
|
|
+}
|
|
|
+
|
|
|
+/// Template function for registering a class derived from ResourceWithMetadata.
|
|
|
+template <class T> void RegisterResourceWithMetadata(asIScriptEngine* engine, const char* className)
|
|
|
+{
|
|
|
+ RegisterResource<T>(engine, className);
|
|
|
+ engine->RegisterObjectMethod(className, "void AddMetadata(const String&in, const Variant&in)", asFUNCTION(ResourceAddMetadata), asCALL_CDECL_OBJLAST);
|
|
|
+ engine->RegisterObjectMethod(className, "void RemoveMetadata(const String&in)", asMETHODPR(T, RemoveMetadata, (const String&), void), asCALL_THISCALL);
|
|
|
+ engine->RegisterObjectMethod(className, "void RemoveAllMetadata()", asMETHOD(T, RemoveAllMetadata), asCALL_THISCALL);
|
|
|
+ engine->RegisterObjectMethod(className, "void set_metadata(const String&in, const Variant&in)", asFUNCTION(ResourceAddMetadata), asCALL_CDECL_OBJLAST);
|
|
|
+ engine->RegisterObjectMethod(className, "const Variant& get_metadata(const String&in) const", asFUNCTION(ResourceGetMetadata), asCALL_CDECL_OBJLAST);
|
|
|
+ engine->RegisterObjectMethod(className, "bool get_hasMetadata() const", asFUNCTION(ResourceHasMetadata), asCALL_CDECL_OBJLAST);
|
|
|
+}
|
|
|
+
|
|
|
/// Template function for registering a class derived from Drawable.
|
|
|
template <class T> void RegisterDrawable(asIScriptEngine* engine, const char* className)
|
|
|
{
|
|
|
@@ -897,7 +924,7 @@ template <class T> void RegisterSoundSource(asIScriptEngine* engine, const char*
|
|
|
/// Template function for registering a class derived from Texture.
|
|
|
template <class T> void RegisterTexture(asIScriptEngine* engine, const char* className)
|
|
|
{
|
|
|
- RegisterResource<T>(engine, className);
|
|
|
+ RegisterResourceWithMetadata<T>(engine, className);
|
|
|
RegisterSubclass<Texture, T>(engine, "Texture", className);
|
|
|
engine->RegisterObjectMethod(className, "void SetNumLevels(uint)", asMETHOD(T, SetNumLevels), asCALL_THISCALL);
|
|
|
engine->RegisterObjectMethod(className, "void ClearDataLost()", asMETHODPR(T, ClearDataLost, (), void), asCALL_THISCALL);
|