GetClone
(Difference between revisions)
Dahnielson (Talk | contribs) |
|||
Line 1: | Line 1: | ||
Clone an object. | 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 : | Basic usage : | ||
Line 30: | Line 41: | ||
In this case all the clones currently on the scene and the newly created ones will rotate. | In this case all the clones currently on the scene and the newly created ones will rotate. | ||
+ | |||
[[Category:Lua scripting]] | [[Category:Lua scripting]] | ||
[[Category:Lua function]] | [[Category:Lua function]] | ||
[[Category:Object]] | [[Category:Object]] |
Revision as of 18:29, 6 February 2014
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.