void Start() { lua = new LuaSvr(); self = (LuaTable)lua.start("LuaFiles/building_txt"); //self = (LuaTable)lua.luaState.getObject("data"); //object o = lua.luaState.getFunction("GetData").call(); Debug.Log("table " + ((LuaTable)self[1])["name"]); LuaFunction dataFunction = ((LuaFunction)self["GetData"]); LuaTable dataTable = (LuaTable)dataFunction.call(); LuaFunction callFunction = (LuaFunction)self["CallBack"]; callFunction.call(222); //lua.luaState.getFunction("CallBack").call(); lua.luaState.getFunction("Call").call(2); Debug.Log("table " + ((LuaTable)dataTable[1])["use_money"] + " is Null " + (callFunction == null)); LuaTable d = (LuaTable)((LuaFunction)self["GetData1"]).call(); Debug.Log("---------------- : " + ((LuaTable)d[1])["use_money"]); LuaTable table2 = (LuaTable)lua.start("LuaFiles/building_txt1"); test2 = (LuaFunction)self["test"]; object o = test2.call(self,9,1); Debug.Log("add function :"+o); SetTransform = (LuaFunction)self["SetTransform"]; SetTransform.call(self, tr); //tr.localPosition = new Vector3(2, 2, 2); }
public static void ShowMsg(string msg) { SLua.LuaFunction luaFunc = MyLuaSrv.Instance.GetFunction("BridgingClass.ShowMsg"); if (null != luaFunc) { luaFunc.call(msg); } }
public void Init(string ip, int port, LuaFunction recvCallback) { _ip = ip; _port = port; _recvCallback = recvCallback; _socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); }
void OnDestroy() { if (onDestroyFn != null) onDestroyFn.call(); updateFn = null; lua = null; _instance = null; luacache.Clear(); }
void Start () { svr = new LuaSvr(); svr.init(null, () => { self = (LuaTable)svr.start("circle/circle"); update = (LuaFunction)self["update"]; }); }
public static void AddClick(int id, string path, SLua.LuaFunction function) { Transform child = GetComponent <Transform>(id, path); if (child) { AddClick(child, function); } }
// 处理消息 public void DealWithSocketData(ReceiveMsg msgData) { // lua 处理协议 SLua.LuaFunction func = LuaGameManager.Instance().GetState().getFunction("OnProtobufCallBack"); if (func != null) { func.call(msgData.data.handleId, new SLua.ByteArray(msgData.data.data)); } }
public void RemoveAllEvents() { onAllCompleteFn = null; onProgressFn = null; onSharedCompleteFn = null; onCacheFn = null; onSharedErrFn = null; onAssetBundleCompleteFn = null; onAssetBundleErrFn = null; }
public void ClearPrefab() { _prefab = null; _callBack = null; if (_dependenciesPath != null) { _dependenciesPath.Clear(); _dependenciesPath = null; } }
public static void AddClick(int id, SLua.LuaFunction function) { var go = LuaReference.Get(id); if (go == null) { return; } AddClick(go.transform, function); }
/// <summary> /// /// </summary> /// <param name="parent"></param> /// <param name="eachFn"></param> public static void ForeachChild(GameObject parent, LuaFunction eachFn) { Transform pr=parent.transform; int count = pr.childCount; Transform child = null; for (int i = 0; i < count; i++) { child = pr.GetChild(i); eachFn.call(i, child.gameObject); } }
// CS 向Lua发送事件 public static void PostLuaEvent(string eventName, params object[] args) { if (!LuaGameManager.Instance().CheckAvailable()) { return; } SLua.LuaFunction func = LuaGameManager.Instance().GetState().getFunction("OnHandleEventFromCS"); if (func != null) { func.call(eventName, args); } }
void CallMethod(KeyCode key, bool bDown) { if (!SLua.LuaSvr.inited || null == SLua.LuaSvr.mainState) { return; } SLua.LuaState l = SLua.LuaSvr.mainState; SLua.LuaFunction func = l.getFunction("OnHotKeyInput"); if (null != func) { func.call(key, bDown); func.Dispose(); } }
/// <summary> /// 加载luatable里面的request /// </summary> /// <param name="reqs"></param> public void LoadLuaTable(LuaTable reqs, LuaFunction groupCompleteFn) { pushGroup = true; foreach (var pair in reqs) { AddReqToQueue((CRequest)pair.value); } this.groupCompleteFn = groupCompleteFn; pushGroup = false; BeginQueue(); }
public void Load(LuaFunction func) { _callBack = func; if (_prefab != null) { LoadFinished(); } if (_isAssetBundle) { StartLoadResource(); } else { ResourceManager.Instance.StartCoroutine(StartLoadAssetBundle()); } }
private static void AddClick(Transform transform, SLua.LuaFunction function) { if (transform == null) { return; } var button = transform.GetComponent <UIButton>(); if (button) { button.onClick.Add(new EventDelegate(delegate() { if (function != null) { function.call(); } })); } }
static bool ReportLog(LogType type, string str) { if (!SLua.LuaSvr.inited || null == SLua.LuaSvr.mainState) { return(false); } SLua.LuaState l = SLua.LuaSvr.mainState; if (null == l) { return(false); } SLua.LuaFunction func = l.getFunction("OnUnityLog"); if (null != func) { func.call(new object[] { type, str }); func.Dispose(); return(true); } return(false); }
void InitKeyCodeMap() { if (bInited) { return; } if (null == LuaSvr.main || !LuaSvr.main.inited || null == LuaSvr.main.luaState) { return; } SLua.LuaState l = SLua.LuaSvr.main.luaState; if (null == l) { return; } bInited = true; SLua.LuaFunction func = l.getFunction("OnHotKeyCodeMap"); if (null != func) { LuaTable ret = func.call() as LuaTable; foreach (var obj in ret) { object value = obj.value; int ival = Convert.ToInt32(value); KeyCode key = (KeyCode)Enum.ToObject(typeof(KeyCode), ival); if (!sKeyCodeMap.ContainsKey(key)) { sKeyCodeMap.Add(key, true); } else { sKeyCodeMap[key] = true; } } func.Dispose(); } }
public void Update() { if (mWriteTxt != null && mWriteTxt.Count > 0) { if (_luaTable != null) { SLua.LuaFunction callback = _luaTable["OnLogCallback"] as SLua.LuaFunction; if (callback != null) { callback.call(mWriteTxt[0]); } } using (StreamWriter writer = new StreamWriter(logPath, true, Encoding.UTF8)) { FLog log = mWriteTxt[0] as FLog; string s = string.Format("{0}\n{1}", log.content, log.track); writer.WriteLine(s); writer.Close(); } mWriteTxt.RemoveAt(0); } }
public ConditionWaitNode(LuaFunction fn,string name) : base(fn,name) { }
/// <summary> /// 条件节点 /// </summary> /// <param name="fn">条件委托 luafunction(input,output)</param> public ConditionNode(LuaFunction fn) : base() { this._fn = fn; _condition = null; }
/// <summary> /// 条件节点 /// </summary> /// <param name="condition">条件委托 bool Condition(object input, object output)</param> public ConditionNode(Condition condition) : base() { this._condition = condition; _fn = null; }
public int removeDataAt(int index) { if(index>=0 && index<this.recordCount) { if (onDataRemove == null) onDataRemove = PLua.instance.lua.luaState.loadString(DataRemoveStr, "onDataRemove"); onDataRemove.call(data,index+1,this); this.CalcPage(); return index; } return -1; }
public int insertData(object item,int index) { if(index<0)index=0; if(index>=this.recordCount)index=this.recordCount; if (onDataInsert == null) onDataInsert = PLua.instance.lua.luaState.loadString(DataInsertStr, "onDataInsert"); onDataInsert.call(item,index+1,this); this.CalcPage(); return index; }
void OnDestroy() { if (onDestroyFn != null) onDestroyFn.call(); updateFn = null; if (lua != null) lua.luaState.Close(); lua = null; _instance = null; if(net!=null)net.Dispose(); net = null; if(ChatNet!=null)ChatNet.Dispose(); ChatNet = null; luacache.Clear(); }
public static void Delay(LuaFunction luafun, float time, object args = null) { _instance.StartCoroutine(DelayDo(luafun, args, time)); }
static internal UnityEngine.RectOffset Lua_DG_Tweening_Core_DOGetter_1_UnityEngine_RectOffset(LuaFunction ld) { IntPtr l = ld.L; int error = pushTry(l); ld.pcall(0, error); UnityEngine.RectOffset ret; checkType(l, error + 1, out ret); LuaDLL.lua_settop(l, error - 1); return(ret); }
// Methods // [IteratorStateMachine] // 0x0063B730-0x0063B7A0 internal static IEnumerator LuaCoroutine(LuaFunction func) => default; // 0x00CB21D0-0x00CB2240
static internal void Lua_UnityEngine_AudioSettings_AudioConfigurationChangeHandler(LuaFunction ld, bool a1) { IntPtr l = ld.L; int error = pushTry(l); pushValue(l, a1); ld.pcall(1, error); LuaDLL.lua_settop(l, error - 1); }
public static void init(IntPtr l) { string newindexfun = @" local getmetatable=getmetatable local rawget=rawget local error=error local type=type local function newindex(ud,k,v) local t=getmetatable(ud) repeat local h=rawget(t,k) if h then if h[2] then h[2](ud,v) return else error('property '..k..' is read only') end end t=rawget(t,'__parent') until t==nil error('can not find '..k) end return newindex "; string indexfun = @" local type=type local error=error local rawget=rawget local getmetatable=getmetatable local function index(ud,k) local t=getmetatable(ud) repeat local fun=rawget(t,k) local tp=type(fun) if tp=='function' then return fun elseif tp=='table' then local f=fun[1] if f then return f(ud) else error('property '..k..' is write only') end end t = rawget(t,'__parent') until t==nil error('Can not find '..k) end return index "; LuaState L = LuaState.get(l); newindex_func = (LuaFunction)L.doString(newindexfun); index_func = (LuaFunction)L.doString(indexfun); // object method LuaDLL.lua_createtable(l, 0, 4); addMember(l, ToString); addMember(l, GetHashCode); addMember(l, Equals); addMember(l, GetType); LuaDLL.lua_setfield(l, LuaIndexes.LUA_REGISTRYINDEX, "__luabaseobject"); LuaArray.init(l); LuaVarObject.init(l); LuaDLL.lua_newtable(l); LuaDLL.lua_setglobal(l, DelgateTable); setupPushVar(); }
static public object checkVar(IntPtr l, int p) { LuaTypes type = LuaDLL.lua_type(l, p); switch (type) { case LuaTypes.LUA_TNUMBER: { return(LuaDLL.lua_tonumber(l, p)); } case LuaTypes.LUA_TSTRING: { return(LuaDLL.lua_tostring(l, p)); } case LuaTypes.LUA_TBOOLEAN: { return(LuaDLL.lua_toboolean(l, p)); } case LuaTypes.LUA_TFUNCTION: { LuaDLL.lua_pushvalue(l, p); int r = LuaDLL.luaL_ref(l, LuaIndexes.LUA_REGISTRYINDEX); LuaFunction v = new LuaFunction(l, r); return(v); } case LuaTypes.LUA_TTABLE: { if (isLuaValueType(l, p)) { if (luaTypeCheck(l, p, "Vector2")) { Vector2 v; checkType(l, p, out v); return(v); } else if (luaTypeCheck(l, p, "Vector3")) { Vector3 v; checkType(l, p, out v); return(v); } else if (luaTypeCheck(l, p, "Vector4")) { Vector4 v; checkType(l, p, out v); return(v); } else if (luaTypeCheck(l, p, "Quaternion")) { Quaternion v; checkType(l, p, out v); return(v); } else if (luaTypeCheck(l, p, "Color")) { Color c; checkType(l, p, out c); return(c); } LuaDLL.luaL_error(l, "unknown lua value type"); return(null); } else if (isLuaClass(l, p)) { return(checkObj(l, p)); } else { LuaDLL.lua_pushvalue(l, p); int r = LuaDLL.luaL_ref(l, LuaIndexes.LUA_REGISTRYINDEX); LuaTable v = new LuaTable(l, r); return(v); } } case LuaTypes.LUA_TUSERDATA: return(LuaObject.checkObj(l, p)); default: return(null); } }
/// <summary> /// 按一定时间执行的条件节点 /// </summary> /// <param name="fn">luafunction</param> public DeltaConditionNode(float delta,LuaFunction fn) : base(fn) { this.delta = delta; }
internal static IEnumerator LuaCoroutine(LuaFunction func) => default; // 0x00CB21D0-0x00CB2240 // Extension methods public static void StartCoroutine(this MonoBehaviour mb, LuaFunction func) {} // 0x00CB2150-0x00CB21D0
public void InitFromLuaFile() { SLua.LuaTable _table; //Script prefix path: Assets/Scripts/Lua/ //read file _table = (SLua.LuaTable)SLua.LuaSvr.getInstance().doFile("Items/" + m_LuaScript); //onuse function SLua.LuaFunction _func = (SLua.LuaFunction)SLua.LuaSvr.mainState["OnUse"]; if (_func != null) { m_UsageDelegate += _func.cast <ItemUsage>(); } //load all the properties _table = (SLua.LuaTable)SLua.LuaSvr.mainState["properties"]; //load mesh m_Prefab = (string)_table["Mesh"]; //GameObject _tmp = Resources.Load<GameObject>("Prefabs/"+m_Prefab); GameObject _tmp = Resources.Load <GameObject>("Meshes/" + m_Prefab); _tmp = Instantiate(_tmp); gameObject.AddComponent <MeshFilter>(); gameObject.AddComponent <MeshRenderer>(); gameObject.GetComponent <MeshFilter>().mesh = _tmp.GetComponent <MeshFilter>().mesh; gameObject.GetComponent <Renderer>().material = _tmp.GetComponent <Renderer>().material; gameObject.transform.localScale = _tmp.transform.localScale; GameObject.Destroy(_tmp); //attributes m_ItemName = (string)_table["Name"]; m_Description = (string)_table["Description"]; m_Type = (ItemType)System.Convert.ToInt32(_table["Type"]); switch (m_Type) { case ItemType.ITEM_PRIMARY: m_ShotType = (ShotType)System.Convert.ToInt32(_table["ShotType"]); m_AttackSpeed = System.Convert.ToSingle(_table["AttackSpeed"]); m_EnergyCost = System.Convert.ToSingle(_table["EnergyCost"]); m_Damage = System.Convert.ToSingle(_table["FirePower"]); break; case ItemType.ITEM_MELEE: m_Damage = System.Convert.ToSingle(_table["Damage"]); m_AttackSpeed = System.Convert.ToSingle(_table["AttackSpeed"]); break; case ItemType.ITEM_PARTS: m_Damage = System.Convert.ToSingle(_table["Damage"]); m_Projectile = (string)_table["Ammo"]; break; case ItemType.ITEM_ARMOR: m_Armor = System.Convert.ToSingle(_table["Armor"]); break; default: break; } m_Weight = System.Convert.ToSingle(_table["Weight"]); SLua.LuaTable _bonus = (SLua.LuaTable)_table["Bonus"]; m_BonusList = new DAttributeBonus[_bonus.length()]; for (int i = 1; i <= _bonus.length(); i++) { SLua.LuaTable _oneBonus = (SLua.LuaTable)_bonus[i]; m_BonusList[i - 1] = new DAttributeBonus( (AttrType)System.Convert.ToInt32(_oneBonus[1]), System.Convert.ToSingle(_oneBonus[3]), System.Convert.ToBoolean(_oneBonus[2]) ); } m_bIfLoaded = true; }
private static IEnumerator DelayDo(LuaFunction luafun, object arg, float time) { yield return new WaitForSeconds(time); luafun.call(arg); }
public LuaState() { if (mainThread == 0) { mainThread = System.Threading.Thread.CurrentThread.ManagedThreadId; } L = LuaDLL.luaL_newstate(); statemap[L] = this; refQueue = new Queue <UnrefPair>(); ObjectCache.make(L); LuaDLL.lua_atpanic(L, panicCallback); LuaDLL.luaL_openlibs(L); string PCallCSFunction = @" local assert = assert local function check(ok,...) assert(ok, ...) return ... end return function(cs_func) return function(...) return check(cs_func(...)) end end "; LuaDLL.lua_dostring(L, PCallCSFunction); PCallCSFunctionRef = LuaDLL.luaL_ref(L, LuaIndexes.LUA_REGISTRYINDEX); string newindexfun = @" local getmetatable=getmetatable local rawget=rawget local error=error local type=type local function newindex(ud,k,v) local t=getmetatable(ud) repeat local h=rawget(t,k) if h then if h[2] then h[2](ud,v) return else error('property '..k..' is read only') end end t=rawget(t,'__parent') until t==nil error('can not find '..k) end return newindex "; string indexfun = @" local type=type local error=error local rawget=rawget local getmetatable=getmetatable local function index(ud,k) local t=getmetatable(ud) repeat local fun=rawget(t,k) local tp=type(fun) if tp=='function' then return fun elseif tp=='table' then local f=fun[1] if f then return f(ud) else error('property '..k..' is write only') end end t = rawget(t,'__parent') until t==nil error('Can not find '..k) end return index "; newindex_func = (LuaFunction)doString(newindexfun); index_func = (LuaFunction)doString(indexfun); setupPushVar(); pcall(L, init); createGameObject(); }
void Awake() { if (null != sInstance) return; sInstance = this; // keep alive on change scene DontDestroyOnLoad(this.gameObject); // if exist gameobject called "UIRoot". Destory it. // this maybe we add to desing ui temply GameObject gameObjectUIRoot = GameObject.Find("UIRoot"); if (null != gameObjectUIRoot) GameObject.Destroy (gameObjectUIRoot); GameObject uiPageMain = GameObject.Find("UIPageMain"); if (null != uiPageMain) GameObject.Destroy (uiPageMain); mAssetsMgr = AssetsManager.GetInstance (); mUIMgr = UIManager.GetInstance (); // asset manager update path string updatePath = Application.persistentDataPath + "Update"; if (!Directory.Exists(updatePath)) Directory.CreateDirectory(updatePath); mAssetsMgr.AddUpdatePath (updatePath); // ui manager _Load(0, () => { // lua LuaState.loaderDelegate = LuaLoadFunction; luaSvr_GM = new LuaSvr(); luaSelf_GM =(LuaTable)luaSvr_GM.start("Lua/GameManager"); luaUpdate_GM = (LuaFunction)luaSelf_GM["update"]; }); }
static internal void Lua_System_Action_1_UnityEngine_EventSystems_RaycastResult(LuaFunction ld, UnityEngine.EventSystems.RaycastResult a1) { IntPtr l = ld.L; int error = pushTry(l); pushValue(l, a1); ld.pcall(1, error); LuaDLL.lua_settop(l, error - 1); }
public int removeChild(ScrollRectItem item) { int i=getIndex(item); if(i>=0) { if (onDataRemove == null) onDataRemove = PLua.instance.lua.luaState.loadString(DataRemoveStr, "onDataRemove"); onDataRemove.call(this.data,i+1,this); this.CalcPage(); } return i; }
/** * Call a lua method. * * @param ref LuaFunction cFunc - The out function. If it is not null, will call it instead of look up from table by strFunc. * @param string strFunc - The function name. * @param object cParam1 - The first param. * @param object cParam2 - The second param. * @param object cParam3 - The third param. * @return object - The number of result. */ public object CallMethod(ref LuaFunction cFunc, string strFunc, object cParam1, object cParam2, object cParam3) { if (null == m_cLuaTableOpt) { return null; } return m_cLuaTableOpt.CallMethod(ref cFunc, strFunc, cParam1, cParam2, cParam3); }
void preRender(ScrollRectItem item,int index) { setPosition(item.transform,index); if (this.onPreRender == null) onPreRender = PLua.instance.lua.luaState.loadString(PreRenderStr, "onPreRenderStr"); object dataI=index+1<=recordCount?data[index+1]:null; onPreRender.call(item,index,dataI); }
public static IEnumerator YieldReturn(object yieldObject, LuaFunction function) { yield return(yieldObject is IEnumerator?Behaviour.StartCoroutine((IEnumerator)yieldObject) : yieldObject); function.Call(); }
/// <summary> /// 条件节点 /// </summary> /// <param name="condition">条件委托 bool Condition(object input, object output)</param> public ConditionNode(Condition condition,string name) : base(name) { this._condition = condition; _fn = null; }
public override void Dispose() { base.Dispose(); onCompleteFn = null; onEndFn = null; }
/// <summary> /// 条件节点 /// </summary> /// <param name="fn">条件委托 luafunction(input,output)</param> /// <param name="name">节点名</param> public ConditionNode(LuaFunction fn,string name) : base(name) { this._fn = fn; _condition = null; }
/// <summary> /// 加载lua bundle /// </summary> /// <returns></returns> private IEnumerator loadLuaBundle(bool domain,LuaFunction onLoadedFn) { string keyName = ""; string luaP = CUtils.GetAssetFullPath("font.u3d"); //Debug.Log("load lua bundle" + luaP); WWW luaLoader = new WWW(luaP); yield return luaLoader; if (luaLoader.error == null) { byte[] byts=CryptographHelper.Decrypt(luaLoader.bytes,DESHelper.instance.Key,DESHelper.instance.IV); AssetBundle item = AssetBundle.CreateFromMemoryImmediate(byts); // item = luaLoader.assetBundle; #if UNITY_5 TextAsset[] all = item.LoadAllAssets<TextAsset>(); foreach (var ass in all) { keyName = Regex.Replace(ass.name,@"\.",""); //Debug.Log("cache : " + keyName); luacache[keyName] = ass; } #else UnityEngine.Object[] all = item.LoadAll(typeof(TextAsset)); foreach (var ass in all) { keyName = Regex.Replace(ass.name,@"\.",""); Debug.Log(keyName + " complete"); luacache[keyName] = ass as TextAsset; } #endif //Debug.Log("loaded lua bundle complete" + luaP); // luaLoader.assetBundle.Unload(false); item.Unload(false); luaLoader.Dispose(); } DoUnity3dLua(); if (domain) DoMain(); if (onLoadedFn != null) onLoadedFn.call(); }
public ConditionWaitNode(LuaFunction fn) : base(fn) { }
/// <summary> /// 加载lua 打包文件 /// </summary> public void LoadBundle(LuaFunction onLoadedFn) { //Debug.Log(" refresh LoadBundle "); StopCoroutine(loadLuaBundle(false, onLoadedFn)); StartCoroutine(loadLuaBundle(false, onLoadedFn)); }
/// <summary> /// 按一定时间执行的条件节点 /// </summary> /// <param name="fn">luafunction</param> public DeltaConditionNode(float delta, LuaFunction fn, string name) : base(fn,name) { this.delta = delta; }
static internal System.Object Lua_System_Func_2_System_String___System_Object(LuaFunction ld, System.String[] a1) { IntPtr l = ld.L; int error = pushTry(l); pushValue(l, a1); ld.pcall(1, error); System.Object ret; checkType(l, error + 1, out ret); LuaDLL.lua_settop(l, error - 1); return(ret); }
/** * Call a lua method. * * @param ref LuaFunction cFunc - The out function. If it is not null, will call it instead of look up from table by strFunc. * @param string strFunc - The function name. * @param params object[] aParams - The params. * @return object - The number of result. */ public object CallMethod(ref LuaFunction cFunc, string strFunc, params object[] aParams) { if (null == m_cLuaTableOpt) { return null; } return m_cLuaTableOpt.CallMethod(ref cFunc, strFunc, aParams); }
static internal void Lua_UnityEngine_EventSystems_ExecuteEvents_EventFunction_1_UnityEngine_EventSystems_IPointerClickHandler(LuaFunction ld, UnityEngine.EventSystems.IPointerClickHandler a1, UnityEngine.EventSystems.BaseEventData a2) { IntPtr l = ld.L; int error = pushTry(l); pushValue(l, a1); pushValue(l, a2); ld.pcall(2, error); LuaDLL.lua_settop(l, error - 1); }