Skip to content
Ryan Ward edited this page Jun 14, 2017 · 7 revisions

Objects

There are 4 main types of objects in the multi library

  1. Runners
  2. Actors
  3. Semi-Actors
  4. Non-Actors

Runners

As of right now there are only 2 Runners.

  • Processors
  • Queues (WIP) Note: I will document this when I get it working properly.

Processors inherit all of their methods from the multi namespace, while also adding a few methods of their own. A process acts exactly like the multi namespace as well. It does differ in some ways though. With the multi namespace you are not able to "pause" the main runner. Note: There are ways to do so, but it is important to know what you are doing first. Which you will when you are done reading this wiki 😄.

All processors are able to have Actors constructed and created on them. For example:

require("multi.all")
process=multi:newProcess() -- this can also load a file, to keep things really organized, I will show a simple example first then show the same thing being done within another file.
process:newTLoop(function(self)
    print("Looping every second...")
end,1)
process:Start() -- starts the process
multi:mainloop() -- start the main runner

Note: I will not be giving the output to all examples on the wiki

As mentioned above you can load a process from file. This can only work if your lua environment allows for the usage of loadstring! testfile.lua

process:newTLoop(function(self)
    print("Looping every second...")
end,1)

main.lua

require("multi.all")
pro=multi:newProcess("testfile.lua")
pro:Start() -- starts the process
multi:mainloop() -- start the main runner

So as seen above Actors can be created on a process, however the objects we created were not on the main process. To create one on the main process we can do the same as above with just a slight change

require("multi.all")
multi:newTLoop(function(self)
    print("Looping every second...")
end,1)
multi:mainloop() -- start the main runner

Now that we see how we can use Actors on a runner let's get into each Actor and how they work

Actors

Here is a list of every actor within the library

  • events - runner:newEvent(function task(self))
  • alarms - runner:newAlarm(number set)
  • loops - runner:newLoop(function loop(dt,self)) Note: dt stands for the change in time from the objects creation
  • tloops - runner:newTLoop(function loop(self), number set)
  • steps - runner:newStep(number start,number endAt, [number count - defualts to 1 or -1], [number skip - defualts to 0])
  • tsteps - runner:newTStep(number start,number endAt, [number count - defualts to 1 or -1], [number set - defualts to 1])
  • updaters - runner:newUpdater([number skip -- defualts to 0])
  • watchers - runnet:newWatcher(table namespace, string name)

Semi-Actors

Non-Actors

Clone this wiki locally