static int __CreateInstance(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); if (LuaAPI.lua_gettop(L) == 2 && translator.Assignable <AstarPath>(L, 2)) { AstarPath _active = (AstarPath)translator.GetObject(L, 2, typeof(AstarPath)); Pathfinding.Util.RetainedGizmos.Hasher gen_ret = new Pathfinding.Util.RetainedGizmos.Hasher(_active); translator.Push(L, gen_ret); return(1); } if (LuaAPI.lua_gettop(L) == 1) { translator.Push(L, default(Pathfinding.Util.RetainedGizmos.Hasher)); return(1); } } catch (System.Exception gen_e) { return(LuaAPI.luaL_error(L, "c# exception:" + gen_e)); } return(LuaAPI.luaL_error(L, "invalid arguments to Pathfinding.Util.RetainedGizmos.Hasher constructor!")); }
public void OnDrawGizmos(Pathfinding.Util.RetainedGizmos gizmos) { var hasher = new Pathfinding.Util.RetainedGizmos.Hasher(AstarPath.active); hasher.AddHash(gizmoVersion); if (!gizmos.Draw(hasher)) { var builder = ObjectPool <RetainedGizmos.Builder> .Claim(); var centers = ArrayPool <UnityEngine.Vector3> .Claim(areas.Length); for (int i = 0; i < areas.Length; i++) { Int3 center = Int3.zero; var childs = children[i]; if (childs.Count > 0) { for (int j = 0; j < childs.Count; j++) { center += childs[j].position; } center /= childs.Count; centers[i] = (UnityEngine.Vector3)center; } } for (int i = 0; i < areas.Length; i++) { if (children[i].Count > 0) { for (int j = 0; j < connections[i].Count; j++) { if (connections[i][j] > i) { builder.DrawLine(centers[i], centers[connections[i][j]], UnityEngine.Color.black); } } } } builder.Submit(gizmos, hasher); } }