summaryrefslogtreecommitdiff
path: root/Runtime/Misc/GraphicsScriptingUtility.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Misc/GraphicsScriptingUtility.cpp')
-rw-r--r--Runtime/Misc/GraphicsScriptingUtility.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/Runtime/Misc/GraphicsScriptingUtility.cpp b/Runtime/Misc/GraphicsScriptingUtility.cpp
new file mode 100644
index 0000000..64c209f
--- /dev/null
+++ b/Runtime/Misc/GraphicsScriptingUtility.cpp
@@ -0,0 +1,36 @@
+#include "GraphicsScriptingUtility.h"
+#include "Runtime/Scripting/ICallString.h"
+
+#if ENABLE_MONO
+# include "Runtime/Mono/MonoIncludes.h"
+# include "Runtime/Scripting/ScriptingUtility.h"
+#endif
+
+ShaderLab::FastPropertyName ScriptingStringToProperty(ICallString& iCallString)
+{
+ if(iCallString.IsNull())
+ return ShaderLab::FastPropertyName();
+
+#if ENABLE_MONO
+ MonoString* msname = iCallString.str;
+ int const kShortString = 255;
+ char namebuf [kShortString+1];
+
+ if( msname->length <= kShortString && FastTestAndConvertUtf16ToAscii(namebuf, mono_string_chars(msname), mono_string_length(msname)))
+ {
+ namebuf [mono_string_length(msname)] = '\0';
+ return ShaderLab::Property(namebuf);
+ }
+
+ char* name = mono_string_to_utf8(msname);
+ ShaderLab::FastPropertyName propertyName(ShaderLab::Property(name));
+ g_free(name);
+
+ return propertyName;
+
+#else
+
+ return ShaderLab::Property(iCallString.AsUTF8().c_str());
+
+#endif
+} \ No newline at end of file