/// <summary>
 /// Add a Modifier script to an Entity, based on a code block (delegate) and a VectorFunction
 /// </summary>
 /// <param name="e">Entity to add modifier script to</param>
 /// <param name="scriptCode">Code block (delegate) that is the script</param>
 /// <param name="func">Function whose value will be passed in ScriptContext.FunctionValue to script</param>
 /// <returns></returns>
 public static VectorModifierScript AddModifier(Entity e, VectorModifierDelegate scriptCode, IVectorFunction func)
 {
     if (!e.HasComponent<ScriptComp>())
     {
         e.AddComponent(new ScriptComp());
         e.Refresh();
     }
     var sc = e.GetComponent<ScriptComp>();
     var script = new VectorModifierScript(scriptCode, func);
     sc.Add(script);
     return script;
 }
 /// <summary>
 /// Create new ModifierScript
 /// </summary>
 /// <param name="code"></param>
 /// <param name="function">if null is passed, the unity function f(x)=x is applied as Function</param>
 public VectorModifierScript(VectorModifierDelegate code, IVectorFunction function)
 {
     this.ScriptCode = code;
     this.Function = function;
 }