Lots of changes
This commit is contained in:
parent
363fd4e639
commit
8063aa432c
@ -4,7 +4,7 @@ Table of contents
|
||||
---
|
||||
|
||||
|
||||
# Update 14.2.0 - Oh my let's Stringify
|
||||
# Update 14.2.0 - Destroy!
|
||||
Full Update Showcase
|
||||
---
|
||||
```lua
|
||||
@ -71,7 +71,7 @@ multi:lightloop()
|
||||
```
|
||||
Going Forward:
|
||||
---
|
||||
-
|
||||
- There is no longer any plans for sterilization! Functions do not play nice on different platforms and there is no simple way to ensure that things work.
|
||||
|
||||
Added:
|
||||
---
|
||||
@ -80,7 +80,7 @@ Added:
|
||||
|
||||
Fixed:
|
||||
---
|
||||
- Issue with connections not returning a handler for managing a specified conn object.
|
||||
- Issue with connections not returning a handle for managing a specific conn object.
|
||||
- Issue with connections where connection chaining wasn't working properly. This has been addressed.
|
||||
```lua
|
||||
package.path="?.lua;?/init.lua;?.lua;?/?/init.lua;"..package.path
|
||||
@ -104,7 +104,7 @@ Changed:
|
||||
- Destroying an object converts the object into a 'destroyed' type.
|
||||
- connections now have type 'connector_link'
|
||||
```lua
|
||||
OnExample = multi:newConnection()
|
||||
OnExample = multi:newConnection() -- Type Connector, Im debating if I should change this name to multi:newConnector() and have connections to it have type connection
|
||||
conn = OnExample(...)
|
||||
print(conn.Type) -- connector_link
|
||||
```
|
||||
|
||||
@ -1,75 +0,0 @@
|
||||
--[[
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Ryan Ward
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sub-license, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
]]
|
||||
local bin = pcall(require,"bin")
|
||||
if not bin then return error("The bin library is required to use sterilization!") end
|
||||
local multi,thread = require("multi"):init()
|
||||
local sterilizer = {}
|
||||
----------
|
||||
-- Helpers
|
||||
----------
|
||||
local function inList(t,o)
|
||||
for i,v in pairs(t) do
|
||||
if v==o then
|
||||
return v
|
||||
end
|
||||
end
|
||||
end
|
||||
---------------------
|
||||
-- State Saving Stuff
|
||||
---------------------
|
||||
multi.OnObjectCreated(function(obj)
|
||||
print(obj.Type)
|
||||
end)
|
||||
|
||||
function IngoreObject()
|
||||
-- Tells system to not sterilize this object
|
||||
end
|
||||
function sterilizer:ToString()
|
||||
-- Turns the object into a string
|
||||
end
|
||||
function sterilizer:newFromString(str)
|
||||
-- Creates an object from string
|
||||
end
|
||||
function sterilizer:ToFile(path)
|
||||
-- Turns multi object into a string
|
||||
end
|
||||
function sterilizer:fromFile(path)
|
||||
-- Loads multi object form file
|
||||
end
|
||||
function sterilizer:SetStateFlag(opt)
|
||||
-- manage the states
|
||||
end
|
||||
function sterilizer:quickStateSave(b)
|
||||
-- enables quick state saving
|
||||
end
|
||||
function sterilizer:saveState(path,opt)
|
||||
-- Saves entire state to file
|
||||
end
|
||||
function sterilizer:loadState(path)
|
||||
-- Loads entire state from file
|
||||
end
|
||||
function sterilizer:setDefualtStateFlag(opt)
|
||||
-- sets the default flags for managing states
|
||||
end
|
||||
return sterilizer
|
||||
85
test.lua
85
test.lua
@ -1,85 +1,4 @@
|
||||
package.path="?.lua;?/init.lua;?.lua;?/?/init.lua;"..package.path
|
||||
-- local sterilizer = require("multi.integration.sterilization")
|
||||
multi,thread = require("multi"):init()
|
||||
local function inList(t,o,n)
|
||||
local c = 1
|
||||
if not o["$__COUNTER__$"] then
|
||||
o["$__COUNTER__$"] = 1
|
||||
end
|
||||
if o["$__COUNTER__$"]==n then
|
||||
return o
|
||||
end
|
||||
for i,v in pairs(t) do
|
||||
if v==o then
|
||||
o["$__COUNTER__$"] = o["$__COUNTER__$"] + 1
|
||||
if o["$__COUNTER__$"]==n then
|
||||
return o
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local function initLoop(t,max)
|
||||
for i,v in pairs(t) do
|
||||
v["$__COUNTER__$"] = max
|
||||
end
|
||||
return t
|
||||
end
|
||||
function _getPath(tbl, obj, conn, loop, path, orig)
|
||||
local max = 100
|
||||
if not loop then loop = initLoop({package,_G,math,io,os,debug,string,table,coroutine},max) end
|
||||
if not path then path = {} end
|
||||
if not ref then ref = {} end
|
||||
for k, v in pairs(tbl) do
|
||||
if type(v) == "table" and type(k)~="number" and not inList(loop,v,max) then -- Only go this deep
|
||||
if v~=orig and k=="Parent" then
|
||||
--
|
||||
else
|
||||
--print(table.concat(path,".").."."..k)
|
||||
table.insert(ref,v)
|
||||
table.insert(loop,v)
|
||||
table.insert(path,k)
|
||||
if v==obj then
|
||||
conn(table.concat(path,".").."."..k,ref)
|
||||
end
|
||||
_getPath(v, obj, conn, loop, path, orig)
|
||||
table.remove(path)
|
||||
table.remove(ref)
|
||||
end
|
||||
end
|
||||
if v==obj and orig[k] then
|
||||
conn(k,ref)
|
||||
elseif v==obj then
|
||||
if type(k)=="number" then return end
|
||||
local str = table.concat(path,".").."."..k
|
||||
conn(str,ref)
|
||||
end
|
||||
end
|
||||
end
|
||||
function getPath(tbl,obj)
|
||||
local instances = {}
|
||||
_getPath(tbl, obj, function(ins)
|
||||
table.insert(instances,ins)
|
||||
end,nil,nil,tbl)
|
||||
local min = math.huge
|
||||
local ins
|
||||
for i,v in pairs(instances) do
|
||||
if #v<min then
|
||||
ins = v
|
||||
min = #v
|
||||
end
|
||||
end
|
||||
return ins or false
|
||||
end
|
||||
test = {}
|
||||
test.temp = {}
|
||||
test.temp.hello = multi:newAlarm(3)
|
||||
test.temp.yo = multi:newEvent()
|
||||
local hmm = test.temp.hello
|
||||
local hmm2 = test.temp.yo
|
||||
local hmm3 = multi.DestroyedObj.t()
|
||||
for i,v in pairs(hmm3) do
|
||||
print(i,v)
|
||||
end
|
||||
-- print(getPath(_G, hmm))
|
||||
-- print(getPath(_G, hmm2)) -- Cannot index into multi because of __index
|
||||
-- print(getPath(multi, hmm3))
|
||||
|
||||
multi:lightloop()
|
||||
Loading…
x
Reference in New Issue
Block a user