diff options
Diffstat (limited to 'Runtime/Misc/GraphicsScriptingUtility.cpp')
-rw-r--r-- | Runtime/Misc/GraphicsScriptingUtility.cpp | 36 |
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 |