Exemplo n.º 1
0
    public static int Print(IntPtr L)
    {
        int    nargs = LuaAPI.GetTop(L);
        string s     = "LUA: ";

        for (int i = 1; i <= nargs; i++)
        {
            if (LuaAPI.IsString(L, i))
            {
                s += ToString(L, i);
                if (i != nargs)
                {
                    s += "\t";
                }
            }
        }
        Debug.Log(s);
        return(0);
    }
Exemplo n.º 2
0
    public void RegisterFuncByMethodInfo(MethodInfo m, LuaAPI.lua_CFunction cfunc)
    {
        if (m == null)
        {
            return; // FIX add warnning
        }
        else
        {
            methods_.Add(m);
            paramters_.Add(m.GetParameters());

            int a = LuaInstance.MergeInt(register_funtion_, classIndex);
            lua_.PushInteger(a);
            LuaAPI.lua_pushcclosure(lua_.GetLuaPtr(), cfunc, 1);
            lua_.SetField(1, m.Name);

            register_funtion_++;
        }
    }
Exemplo n.º 3
0
    public static int BroadcastMessage(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 4 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2) && LuaAPI.IsObject(L, 3) && LuaAPI.IsNumber(L, 4))
        {
            UnityEngine.Component          arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.String                  arg1 = (System.String)LuaCallback.ToString(L, 2);
            System.Object                  arg2 = (System.Object)LuaCallback.ToObject(L, 3);
            UnityEngine.SendMessageOptions arg3 = (UnityEngine.SendMessageOptions)LuaCallback.ToNumber(L, 4);
            arg0.BroadcastMessage(arg1, arg2, arg3);

            return(0);
        }
        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2) && LuaAPI.IsObject(L, 3))
        {
            UnityEngine.Component arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.String         arg1 = (System.String)LuaCallback.ToString(L, 2);
            System.Object         arg2 = (System.Object)LuaCallback.ToObject(L, 3);
            arg0.BroadcastMessage(arg1, arg2);

            return(0);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2))
        {
            UnityEngine.Component arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.String         arg1 = (System.String)LuaCallback.ToString(L, 2);
            arg0.BroadcastMessage(arg1);

            return(0);
        }
        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2) && LuaAPI.IsNumber(L, 3))
        {
            UnityEngine.Component          arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.String                  arg1 = (System.String)LuaCallback.ToString(L, 2);
            UnityEngine.SendMessageOptions arg2 = (UnityEngine.SendMessageOptions)LuaCallback.ToNumber(L, 3);
            arg0.BroadcastMessage(arg1, arg2);

            return(0);
        }
        return(0);
    }
Exemplo n.º 4
0
    public void Init()
    {
        _luaState = LuaAPI.NewState();
        _luaState.L_OpenLibs();
        _luaState.L_RequireF("LuaLib", LuaLib.Init, false);
        LuaLib.InitGlobal(_luaState);
        LuaLib.RegisterLightUserDataLuaInterface();
        _luaState.Pop(_luaState.GetTop());
        // 添加错误log函数
        _luaState.PushCSharpFunction(Traceback);
        _traceBackIndex = _luaState.GetTop();
        // 加载Constants.lua
        var status = _luaState.L_DoFile("Constants.lua");

        if (status != ThreadStatus.LUA_OK)
        {
            throw new Exception(_luaState.ToString(-1));
        }
        InitGlobalFields();
    }
Exemplo n.º 5
0
    public static int IsInvoking(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 1 && LuaAPI.IsObject(L, 1))
        {
            UnityEngine.MonoBehaviour arg0 = (UnityEngine.MonoBehaviour)LuaCallback.ToObject(L, 1);
            System.Boolean            res  = arg0.IsInvoking();
            LuaCallback.PushBool(L, res);
            return(1);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2))
        {
            UnityEngine.MonoBehaviour arg0 = (UnityEngine.MonoBehaviour)LuaCallback.ToObject(L, 1);
            System.String             arg1 = (System.String)LuaCallback.ToString(L, 2);
            System.Boolean            res  = arg0.IsInvoking(arg1);
            LuaCallback.PushBool(L, res);
            return(1);
        }
        return(0);
    }
Exemplo n.º 6
0
    public static int CancelInvoke(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 1 && LuaAPI.IsObject(L, 1))
        {
            UnityEngine.MonoBehaviour arg0 = (UnityEngine.MonoBehaviour)LuaCallback.ToObject(L, 1);
            arg0.CancelInvoke();

            return(0);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2))
        {
            UnityEngine.MonoBehaviour arg0 = (UnityEngine.MonoBehaviour)LuaCallback.ToObject(L, 1);
            System.String             arg1 = (System.String)LuaCallback.ToString(L, 2);
            arg0.CancelInvoke(arg1);

            return(0);
        }
        return(0);
    }
Exemplo n.º 7
0
    public static int DestroyImmediate(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsBool(L, 2))
        {
            UnityEngine.Object arg0 = (UnityEngine.Object)LuaCallback.ToObject(L, 1);
            System.Boolean     arg1 = (System.Boolean)LuaCallback.ToBool(L, 2);
            UnityEngine.Object.DestroyImmediate(arg0, arg1);

            return(0);
        }
        if (nargs == 1 && LuaAPI.IsObject(L, 1))
        {
            UnityEngine.Object arg0 = (UnityEngine.Object)LuaCallback.ToObject(L, 1);
            UnityEngine.Object.DestroyImmediate(arg0);

            return(0);
        }
        return(0);
    }
Exemplo n.º 8
0
    public static int Destroy(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2))
        {
            UnityEngine.Object arg0 = (UnityEngine.Object)LuaCallback.ToObject(L, 1);
            System.Single      arg1 = (System.Single)LuaCallback.ToNumber(L, 2);
            UnityEngine.Object.Destroy(arg0, arg1);

            return(0);
        }
        if (nargs == 1 && LuaAPI.IsObject(L, 1))
        {
            UnityEngine.Object arg0 = (UnityEngine.Object)LuaCallback.ToObject(L, 1);
            UnityEngine.Object.Destroy(arg0);

            return(0);
        }
        return(0);
    }
Exemplo n.º 9
0
    private bool Load()
    {
        string LuaFile = "config.lua";

        Lua = LuaAPI.NewState();
        Lua.L_OpenLibs();
        ThreadStatus status = Lua.L_DoFile(LuaFile);

        if (status != ThreadStatus.LUA_OK)
        {
            Debug.LogError("Load Lua File Error!");
            return(false);
        }
        if (!Lua.IsTable(-1))
        {
            Debug.LogError("Load Lua File Error!");
            return(false);
        }
        this.CacheToGlobalConfig();
        return(true);
    }
Exemplo n.º 10
0
    public static int LookAt(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsObject(L, 2) && LuaAPI.IsVector3(L, 3))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Transform arg1 = (UnityEngine.Transform)LuaCallback.ToObject(L, 2);
            UnityEngine.Vector3   arg2 = (UnityEngine.Vector3)LuaCallback.ToVector3(L, 3);
            arg0.LookAt(arg1, arg2);

            return(0);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsObject(L, 2))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Transform arg1 = (UnityEngine.Transform)LuaCallback.ToObject(L, 2);
            arg0.LookAt(arg1);

            return(0);
        }
        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsVector3(L, 2) && LuaAPI.IsVector3(L, 3))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Vector3   arg1 = (UnityEngine.Vector3)LuaCallback.ToVector3(L, 2);
            UnityEngine.Vector3   arg2 = (UnityEngine.Vector3)LuaCallback.ToVector3(L, 3);
            arg0.LookAt(arg1, arg2);

            return(0);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsVector3(L, 2))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Vector3   arg1 = (UnityEngine.Vector3)LuaCallback.ToVector3(L, 2);
            arg0.LookAt(arg1);

            return(0);
        }
        return(0);
    }
Exemplo n.º 11
0
        public void Action(float a)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            var L          = luaEnv.L;
            var translator = luaEnv.translator;
            int oldTop     = LuaAPI.lua_gettop(L);
            int errFunc    = LuaAPI.load_error_func(L, luaEnv.errorFuncRef);
            LuaAPI.lua_getref(L, luaReference);
            LuaAPI.lua_pushnumber(L, a);
            int error = LuaAPI.lua_pcall(L, 1, 0, errFunc);
            if (error != 0)
            {
                luaEnv.ThrowExceptionFromError(oldTop);
            }
            LuaAPI.lua_settop(L, oldTop);
#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Exemplo n.º 12
0
    public static int GetComponent(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2))
        {
            UnityEngine.Component arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.Type           arg1 = (System.Type)LuaCallback.ToType(L, 2);
            UnityEngine.Component res  = arg0.GetComponent(arg1);
            LuaCallback.PushObject(L, res);
            return(1);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2))
        {
            UnityEngine.Component arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.String         arg1 = (System.String)LuaCallback.ToString(L, 2);
            UnityEngine.Component res  = arg0.GetComponent(arg1);
            LuaCallback.PushObject(L, res);
            return(1);
        }
        return(0);
    }
Exemplo n.º 13
0
    public static int SetParent(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsObject(L, 2))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Transform arg1 = (UnityEngine.Transform)LuaCallback.ToObject(L, 2);
            arg0.SetParent(arg1);

            return(0);
        }
        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsObject(L, 2) && LuaAPI.IsBool(L, 3))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Transform arg1 = (UnityEngine.Transform)LuaCallback.ToObject(L, 2);
            System.Boolean        arg2 = (System.Boolean)LuaCallback.ToBool(L, 3);
            arg0.SetParent(arg1, arg2);

            return(0);
        }
        return(0);
    }
Exemplo n.º 14
0
    public static int GetComponentsInChildren(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2) && LuaAPI.IsBool(L, 3))
        {
            UnityEngine.Component   arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.Type             arg1 = (System.Type)LuaCallback.ToType(L, 2);
            System.Boolean          arg2 = (System.Boolean)LuaCallback.ToBool(L, 3);
            UnityEngine.Component[] res  = arg0.GetComponentsInChildren(arg1, arg2);
            LuaCallback.PushArray(L, res);
            return(1);
        }
        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2))
        {
            UnityEngine.Component   arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.Type             arg1 = (System.Type)LuaCallback.ToType(L, 2);
            UnityEngine.Component[] res  = arg0.GetComponentsInChildren(arg1);
            LuaCallback.PushArray(L, res);
            return(1);
        }
        return(0);
    }
Exemplo n.º 15
0
    public static int GetComponents(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2))
        {
            UnityEngine.Component   arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.Type             arg1 = (System.Type)LuaCallback.ToType(L, 2);
            UnityEngine.Component[] res  = arg0.GetComponents(arg1);
            LuaCallback.PushArray(L, res);
            return(1);
        }
        if (nargs == 3 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2) && LuaAPI.IsObject(L, 3))
        {
            UnityEngine.Component arg0 = (UnityEngine.Component)LuaCallback.ToObject(L, 1);
            System.Type           arg1 = (System.Type)LuaCallback.ToType(L, 2);
            System.Collections.Generic.List <UnityEngine.Component> arg2 = (System.Collections.Generic.List <UnityEngine.Component>)LuaCallback.ToObject(L, 3);
            arg0.GetComponents(arg1, arg2);

            return(0);
        }
        return(0);
    }
Exemplo n.º 16
0
        private static int Print(RealStatePtr L)
        {
            try
            {
                int    n = LuaAPI.lua_gettop(L);
                string s = String.Empty;

                if (0 != LuaAPI.xlua_getglobal(L, "tostring"))
                {
                    return(LuaAPI.luaL_error(L, "can not get tostring in print:"));
                }

                for (int i = 1; i <= n; i++)
                {
                    LuaAPI.lua_pushvalue(L, -1);  /* function to be called */
                    LuaAPI.lua_pushvalue(L, i);   /* value to print */
                    if (0 != LuaAPI.lua_pcall(L, 1, 1, 0))
                    {
                        return(LuaAPI.lua_error(L));
                    }
                    s += LuaAPI.lua_tostring(L, -1);

                    if (i != n)
                    {
                        s += "\t";
                    }

                    LuaAPI.lua_pop(L, 1);  /* pop result */
                }
                onNewOutput.Invoke(s);
                return(0);
            }
            catch (System.Exception e)
            {
                return(LuaAPI.luaL_error(L, "c# exception in print:" + e));
            }
        }
Exemplo n.º 17
0
    public static int InverseTransformPoint(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 2 && LuaAPI.IsObject(L, 1) && LuaAPI.IsVector3(L, 2))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            UnityEngine.Vector3   arg1 = (UnityEngine.Vector3)LuaCallback.ToVector3(L, 2);
            UnityEngine.Vector3   res  = arg0.InverseTransformPoint(arg1);
            LuaCallback.PushVector(L, res);
            return(1);
        }
        if (nargs == 4 && LuaAPI.IsObject(L, 1) && LuaAPI.IsNumber(L, 2) && LuaAPI.IsNumber(L, 3) && LuaAPI.IsNumber(L, 4))
        {
            UnityEngine.Transform arg0 = (UnityEngine.Transform)LuaCallback.ToObject(L, 1);
            System.Single         arg1 = (System.Single)LuaCallback.ToNumber(L, 2);
            System.Single         arg2 = (System.Single)LuaCallback.ToNumber(L, 3);
            System.Single         arg3 = (System.Single)LuaCallback.ToNumber(L, 4);
            UnityEngine.Vector3   res  = arg0.InverseTransformPoint(arg1, arg2, arg3);
            LuaCallback.PushVector(L, res);
            return(1);
        }
        return(0);
    }
Exemplo n.º 18
0
        public static void Init()
        {
            SettingManager.Ins.PropertyChanged += OnSettingChanged;

            const string initScript = @"Vector3 = CS.UnityEngine.Vector3
                                        Vector2 = CS.UnityEngine.Vector2
                                        Color = CS.UnityEngine.Color
                                        IntVector2 = CS.Nes3D.Utils.IntVector2
                                        IntVector3 = CS.Nes3D.Utils.IntVector3
                                       ";

            FNames = new string[(int)Function.Count];
            for (int i = 0; i < FNames.Length; i++)
            {
                FNames[i] = ((Function)i).ToString();
            }

            session = new LuaEnv();

            // overide default implementation of print function
            LuaAPI.lua_pushstdcallcfunction(session.L, Print);
            LuaAPI.xlua_setglobal(session.L, "print");

            DoString(initScript);

            AssignSetting();

            session.Global.Set("gamepad", Gamepads.Ins);
            session.Global.Set("gamepad1", Gamepads.Ins[0]);
            session.Global.Set("gamepad2", Gamepads.Ins[1]);

            session.Global.Set("Script", ScriptManager.Ins);
            session.Global.Set("Frame", FrameManager.Ins);

            session.Global.Set("clear", new Action(Clear));
        }
Exemplo n.º 19
0
 public static bool CheckArgsCount(IntPtr L, int count)
 {
     return(LuaAPI.GetTop(L) == count);
 }
Exemplo n.º 20
0
 public static void PushVector3(IntPtr L, Vector3 v)
 {
     LuaAPI.PushVector3(L, v.x, v.y, v.z);
 }
Exemplo n.º 21
0
 public static void EndClass()
 {
     LuaAPI.EndClass(LuaEnv.L);
 }
Exemplo n.º 22
0
 public static void RegisterFunc(string funcname, LuaCFunction funccallback)
 {
     LuaAPI.RegisterFunc(LuaEnv.L, funcname, Marshal.GetFunctionPointerForDelegate(funccallback));
 }
Exemplo n.º 23
0
 public static void BeginClass(string classname, string baseclassname)
 {
     LuaAPI.BeginClass(LuaEnv.L, classname, baseclassname);
 }
Exemplo n.º 24
0
 private LuaMgr()
 {
     m_luaState = LuaAPI.NewState();
     m_luaState.L_OpenLibs();
 }
Exemplo n.º 25
0
	// Use this for initialization
	void Start ()
	{
		// pass boat reference to Lua API
		myLua = new LuaAPI();
		GDLog.log("LuaConsole.cs: Lua instance created.");
	}
Exemplo n.º 26
0
 public ScriptManager(MainForm mainForm)
 {
     _luaAPI        = new LuaAPI(mainForm);
     _scriptObjects = new Dictionary <string, NLua.Lua>();
 }
    public void Initialize()
    {
        Script.GlobalOptions.RethrowExceptionNested = true;

        if (File.Exists(Application.dataPath + "/lua/" + scriptPath))
        {
            luaScript = new Script();
            luaScript.Options.ScriptLoader =
                new MoonSharp.Interpreter.Loaders.FileSystemScriptLoader();

            ((MoonSharp.Interpreter.Loaders.ScriptLoaderBase)
             luaScript.Options.ScriptLoader).ModulePaths =
                new string[] { Application.dataPath + "/lua/?",
                               Application.dataPath + "/lua/?.lua" /*,
                                                                    * Application.dataPath + "/?",
                                                                    * Application.dataPath + "/?.lua"*/};
            luaScript.Options.DebugPrint = Debug.Log;

            LuaAPI.Register(luaScript);
            luaScript.Globals["this"]          = luaScript;
            luaScript.Globals["gameObject"]    = gameObject;
            luaScript.Globals["sharedContext"] =
                new SharedContextProxy(sharedContext, luaScript);
            luaScript.Globals["Vector3"] = typeof(Vector3);
            luaScript.Globals["GO"]      = typeof(GameObject);
            luaScript.Globals["destroy"] =
                (Action <UnityEngine.Object>)GameObject.Destroy;
            luaScript.Globals["Time"]  = typeof(Time);
            luaScript.Globals["Input"] = typeof(Input);
            //luaScript.Globals["PhysicsAPI"] = typeof(PhysicsAPI);
            luaScript.Globals["Physics"]                 = typeof(Physics);
            luaScript.Globals["KeyCode"]                 = UserData.CreateStatic <KeyCode>();
            luaScript.Globals["Random"]                  = typeof(UnityEngine.Random);
            luaScript.Globals["MoveAction"]              = typeof(MoveAction);
            luaScript.Globals["ActionScripted"]          = typeof(ActionScripted);
            luaScript.Globals["ActionGetAsleep"]         = typeof(ActionGetAsleep);
            luaScript.Globals["ActionSleep"]             = typeof(ActionSleep);
            luaScript.Globals["ActionExecuteAfterDelay"] =
                typeof(ActionExecuteAfterDelay);

            Entity entity = gameObject.GetComponent <Entity>();
            if (entity != null)
            {
                luaScript.Globals["entity"] = entity;
            }

            if (simulation != null)
            {
                luaScript.Globals["simulation"] = simulation;
            }

            try {
                luaScript.DoFile(Application.dataPath + "/lua/" + scriptPath);
            } catch (ScriptRuntimeException ex) {
                Debug.LogError("[Initialize] Could not read script: "
                               + ex.DecoratedMessage);
            } catch (SyntaxErrorException ex) {
                Debug.LogError("[Initialize] Could not read script: "
                               + ex.DecoratedMessage);
            }
        }
        else
        {
            Debug.LogError("The specified script file <" + scriptPath
                           + "> doesn't exist.");
        }
    }
Exemplo n.º 28
0
 public static int get_timeScale(IntPtr L)
 {
     Debug.Log(Time.timeScale);
     LuaAPI.PushNumber(L, UnityEngine.Time.timeScale);
     return(1);
 }
Exemplo n.º 29
0
	// Here is where we can present the console and handle input
	void OnGUI()
	{
		// button to toggle on/off the console
		if (GUI.Button(new Rect(0, 0, 110, 25), "Toggle Console"))
		{
			showConsole = !showConsole;
			GDLog.log("LuaConsole.cs: showConsole = " + showConsole.ToString());
		}
		
		if (showConsole)
		{
			toolbarInt = GUI.Toolbar(new Rect(0, 30, 230, 25), toolbarInt, toolbarStrings);
			
			bool timeToExecute = false;
			// Check to see if user has pressed the "return" key
			if (Event.current.Equals(Event.KeyboardEvent("return")))
				timeToExecute = true;
			
			float displayHeight = 0; // height of display
			float scrollHeight = 0;  // height of scrollbar
			
			// calculate height of display and scrollbar based on
			// how many commands have been entered
			if (textHeight < 170)
			{
				displayHeight = textHeight;
				scrollHeight = 0;
			}
			else
			{
				displayHeight = 170;
				scrollHeight = textHeight;
			}
			
			// Create display area with (or possibly without) scrollbar
			scrollPosition = GUI.BeginScrollView(new Rect(5, 60, 500, displayHeight), scrollPosition, new Rect(0,0,0,scrollHeight));
			GUI.TextArea(new Rect(0,0,500,textHeight), myDisplay);
			GUI.EndScrollView();
			
			// Create the console for entering in commands
			GUI.SetNextControlName("the_console");
			myConsole = GUI.TextField(new Rect(5, 60 + displayHeight, 500, 22), myConsole);
			
			// If nothing is typed in console, and console is out of focus,
			// display the default text
			if (UnityEngine.Event.current.type == EventType.Repaint)
			{
				if (GUI.GetNameOfFocusedControl() == "the_console")
				{
					if (myConsole == myConsoleDefault) myConsole = "";
				}
				else
				{
					if (myConsole == "") myConsole = myConsoleDefault;
				}
			}
			
			// Ensures commands are only executed when "enter" is pressed
			// and the user has focus on the console
			if (timeToExecute && GUI.GetNameOfFocusedControl() != "the_console")
				timeToExecute = false;
			
			switch (toolbarInt)
			{
				// Single mode
			case 0:
				// detect if we are now exiting Lua Script mode
				if (!newScript)
				{
					myDisplay += "\n" + "**********EXITED: LUA SCRIPT NOT SAVED***********";
					myMultiLineCommand = "";
					textHeight += 15;
					scrollPosition = new Vector2(0, Mathf.Infinity);
					newScript = true;
				}
				
				if (timeToExecute)
				{
					myDisplay += "\n" + myConsole;
					if (!myLua.ExecuteCommand(myConsole))
					{
						myDisplay += "\n" + "ERROR: INVALID COMMAND. REFER TO LOG FOR MORE DETAILS.";
						textHeight += 15;
						scrollPosition = new Vector2(0, Mathf.Infinity);
						myLua = new LuaAPI();
						myConsole = "";
					}
					else
					{
						myConsole = "";
					}
					textHeight += 15;
					scrollPosition = new Vector2(0, Mathf.Infinity);
				}
				break;
			case 1:
				// detect if we are now exiting Lua Script mode
				if (!newScript)
				{
					myDisplay += "\n" + "**********EXITED: LUA SCRIPT NOT SAVED***********";
					GDLog.log("LuaConsole.cs: Lua Script Not Saved");
					myMultiLineCommand = "";
					textHeight += 15;
					scrollPosition = new Vector2(0, Mathf.Infinity);
					newScript = true;
				}
				
				if (timeToExecute)
				{
					myDisplay += "\n" + myConsole;
					if (myConsole == "Execute()")
					{
						GDLog.log("LuaConsole.cs:" + myDisplay + " " + myConsole);
						if (!myLua.ExecuteCommand(myMultiLineCommand))
						{
							myDisplay += "\n" + "ERROR: INVALID COMMAND. REFER TO LOG FOR MORE DETAILS.";

							myLua = new LuaAPI();
							GDLog.log("LuaConsole.cs: New Lua instance created");
						}
						else
						{
							myDisplay += "\n" + "Lua Command successfully executed!";

							GDLog.log("LuaConsole.cs: Lua Command successfully executed.");
						}
						textHeight += 15;
						scrollPosition = new Vector2(0, Mathf.Infinity);
						myConsole = "";
						myMultiLineCommand = "";

					}
					else
					{
						if (myMultiLineCommand == "")
							myMultiLineCommand = myConsole;
						else
							myMultiLineCommand += "\n" + myConsole;
						
						myConsole = "";
					}
					textHeight += 15;
					scrollPosition = new Vector2(0, Mathf.Infinity);
				}
				break;
			case 2:
				if (newScript)
				{
					
					myDisplay += "\n" + "**********BEGIN WRITING LUA SCRIPT**********";
					textHeight += 15;
					scrollPosition = new Vector2(0, Mathf.Infinity);
					newScript = false;
					GDLog.log("LuaConsole.cs: New Lua script being created.");
				}

				if(GUI.Button(new Rect(300, 30, 150, 25), "Change Filename")) {
					LS.changeFileName(myMultiLineCommand);
					myDisplay += "\n" + "**filename Changed**";
					textHeight += 15;
					
						
				}
				
				if (GUI.Button(new Rect(455, 30, 50, 25), "Save"))
				{
					try
					{
						LS.write(myMultiLineCommand);
						myDisplay += "\n" + "**********SUCCESS: LUA SCRIPT SAVED**********";
						GDLog.log("LuaConsole.cs: Lua Script Saved");
					}
					catch
					{
						myDisplay += "\n" + "**********ERROR: COULD NOT SAVE LUA SCRIPT***********";
						GDLog.log("LuaConsole.cs: Lua script cannot be saved");
						myLua = new LuaAPI();
					}
					finally
					{
						toolbarInt = 0; // go back to single mode
						myMultiLineCommand = "";
						textHeight += 15;
						scrollPosition = new Vector2(0, Mathf.Infinity);
						newScript = true;
					}
				}
				if (timeToExecute)
				{
					myDisplay += "\n" + myConsole;
					if (myMultiLineCommand == "")
						myMultiLineCommand = myConsole;
					else
						myMultiLineCommand += "\n" + myConsole;
						
					myConsole = "";
					textHeight += 15;
					scrollPosition = new Vector2(0, Mathf.Infinity);
				}
				break;
			default:
				break;
			}
		}
	}
Exemplo n.º 30
0
 public LuaHolder()
 {
     mLuaState = LuaAPI.NewState();
     mLuaState.L_OpenLibs();
 }
Exemplo n.º 31
0
    public static int InvokeRepeating(System.IntPtr L)
    {
        int nargs = LuaAPI.GetTop(L);

        if (nargs == 4 && LuaAPI.IsObject(L, 1) && LuaAPI.IsString(L, 2) && LuaAPI.IsNumber(L, 3) && LuaAPI.IsNumber(L, 4))
        {
            UnityEngine.MonoBehaviour arg0 = (UnityEngine.MonoBehaviour)LuaCallback.ToObject(L, 1);
            System.String             arg1 = (System.String)LuaCallback.ToString(L, 2);
            System.Single             arg2 = (System.Single)LuaCallback.ToNumber(L, 3);
            System.Single             arg3 = (System.Single)LuaCallback.ToNumber(L, 4);
            arg0.InvokeRepeating(arg1, arg2, arg3);

            return(0);
        }
        return(0);
    }
Exemplo n.º 32
0
 public void Dispose()
 {
     LuaAPI.Close(L);
 }