GetClone

From MaratisWiki
Revision as of 18:29, 6 February 2014 by Vegas (Talk | contribs)
Jump to: navigation, search

Clone an object.


  • Some notes about clones :
    • They keeps the base object active behavior
    • They keeps physics proprieties
    • They don't keep the translate/force/etc.. values of the base object from lua script (because they are new objects)


  • Warning : Spawning a lot of clones in a very short time may cause slow-down, because :
    • memory allocation : each cloning allocate new memory, fast games (like a shoot'em'up) usually pre-allocate memory.
    • when using physics, the new object need to be also allocated to the physics world
    • when using sound, the source need to be also allocated to the sound context




Basic usage :

   object = getObject("object")
   objectClone = getClone(object)

For referencing you can store them into a table :

   object = getObject("object")
   cloneList = {}
   function onSceneUpdate()
           if onKeyDown("SPACE") then
               table.insert(cloneList, #cloneList + 1, getClone(object)) -- create a clone
           end
   end

With that method, the first clone will be cloneList[1], second clone will be cloneList[2], and so on..

To manage all these clones at once you could add to the script, for example :

   for i=1, #cloneList do 
       rotate(cloneList[i], {0, 0, 1}, 1, "local")
   end 

In this case all the clones currently on the scene and the newly created ones will rotate.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox