summaryrefslogtreecommitdiff
path: root/Runtime/Misc/GraphicsScriptingUtility.cpp
blob: 64c209f796e8daf6238c536e84fb292ea547eef4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
}