I want to implement C# as the scripting language in my game.
My problem is, that my script will not compile if I want to use classes defined in the game core (exe).
The script looks like this:
using System; using ConsoleApplication1; class Script { private static void Call() { Console.WriteLine("called"); } public static void Init() { Console.WriteLine("Script"); Call(); GameObject myO; // THIS IS WHAT I WANT TO GET WORKED, //IF THIS IS COMMENTED OUT, IT COMPILES FINE, GAMEOBJECT // IS DEFINED IN THE "ConsoleApplication1" NAMESPACE. } } The script is compiled like in the MDX sample:
static void Main(string[] args) { CodeDomProvider provider = new CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters(); //cp.CompilerOptions = "/target:library"; cp.GenerateExecutable = false; cp.GenerateInMemory = true; cp.IncludeDebugInformation = false; cp.ReferencedAssemblies.Add("ConsoleApplication2.exe"); cp.ReferencedAssemblies.Add("System.dll"); CompilerResults cr = provider.CompileAssemblyFromFile(cp, "script.cs"); if (!cr.Errors.HasErrors) { Console.WriteLine("Success"); cr.CompiledAssembly.GetType("Script").GetMethod("Init").Invoke(null, null); } Console.ReadLine(); } Is there any way to call functions or create objects defined in the "ConsoleApplication1" namespace via the script?