GetClone

From MaratisWiki
(Difference between revisions)
Jump to: navigation, search
(Created page with "Get an object clone object = getObject("object") objectClone = getClone(object)")
 
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Get an object clone
+
{{lua-function|getClone|object}}
  
    object = getObject("object")
+
Clone an object.
    objectClone = getClone(object)
+
 
 +
{{lua-function-param|object|object to operate on}}
 +
 
 +
<nowiki>object = getObject("object")
 +
objectClone = getClone(object)</nowiki>
 +
 
 +
For referencing you can store them into a table :
 +
 
 +
<nowiki>object = getObject("object")
 +
cloneList = {}
 +
function onSceneUpdate()
 +
    if onKeyDown("SPACE") then
 +
        table.insert(cloneList, #cloneList + 1, getClone(object)) -- create a clone
 +
    end
 +
end</nowiki>
 +
 
 +
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 :
 +
 
 +
<nowiki>for i=1, #cloneList do
 +
    rotate(cloneList[i], {0, 0, 1}, 1, "local")
 +
end</nowiki>
 +
 
 +
In this case all the clones currently on the scene and the newly created ones will rotate.
 +
 
 +
'''Notes:'''
 +
* 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
 +
 
 +
[[Category:Lua scripting]]
 +
[[Category:Lua function]]
 +
[[Category:Object]]

Latest revision as of 16:03, 15 February 2014

getClone(object)

Clone an object.

  • object : object to operate on
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.

Notes:

  • 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
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox