Uso de javascript para fines personalizados

Estoy escribiendo un raytracer como parte de mi motor 3d completo. Estoy planeando usar javascript para el lenguaje de scripting en lugar de escribir el mío. La pregunta es ¿cómo puedo usarlo? Por cierto, raytracer y la interfaz de usuario están escritos en C #.

Esto muestra la interacción bidireccional entre Javascript y c #.

  1. Javascript llama el método ac #
  2. C # obtiene el resultado de una expresión en Javascript

Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC")); dynamic obj = Activator.CreateInstance(scriptType, false); obj.Language = "javascript"; obj.AddObject("MyClass",new JSAccessibleClass()); obj.Eval("MyClass.MsgBox('Hello World')"); //<--1 var result = obj.Eval("3+5"); //<--2 [ComVisible(true)] public class JSAccessibleClass { public void MsgBox(string s) { MessageBox.Show(s); } } 

Hay muchas implementaciones independientes de JavaScript que puede aprovechar para este propósito:

Aquí hay un enlace a la página de información stackoverflow en JavaScript que enumera en la parte superior muchas de estas implementaciones: https://stackoverflow.com/tags/javascript/info

Si bien es posible usar JavaScript como scripting para la aplicación .Net, no es la opción más popular. Si puede elegir otro idioma, IronPython o LUA.Net pueden ser opciones, obtendrá un mejor soporte. Enumeré varios enlaces en una pregunta similar recientemente: Escribir scripts npc para ser ejecutados por c # usando clase con métodos npc .

De lo contrario, JavaScript.Net (parte de .Net framework) u otras implementaciones ya sea explícitamente .Net o con enlaces .Net funcionarán como lenguaje de scripting.