Changes

Jump to navigation Jump to search

Category:Physics Engine/Shapes

14,981 bytes added, 10:46, 18 July 2012
no edit summary
Line 1: Line 1: −
Shapes contain the surface properties of an object such as how much friction or elasticity
+
Shapes contain the surface properties of an object such as how much friction or elasticity it has. All collision shapes implement the following accessor routines.
it has. All collision shapes implement the following accessor routines.
+
 
 +
----
 +
===== BB =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
bb = physics.Shape:BB()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  bb
 +
|  '''in''' physics.BB
 +
|  Bounding box of the Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the [[#BB|bounding box]] of the shape.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== body =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
body = physics.Shape:body()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  body
 +
|  '''out''' physics.Body
 +
|  The Body associated with the Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the [[#Body|body]] attached to the shape. If the shape is static, then it will return nil.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
 
 +
 
 +
===== collisionType =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
coll = physics.Shape:collisionType()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  coll
 +
|  '''out''' number
 +
|  The programmer-assigned integer collision type
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the integer collision type of the Shape.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== data =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
obj = physics.Shape:data()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  obj
 +
|  '''out''' Lua object
 +
|  The programmer-assigned data object assigned to this Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the contents of the programmer data field of the Shape.
 +
 
 +
Introducted in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== friction =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
f = physics.Shape:friction()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  f
 +
|  '''out''' number
 +
|  The coefficient of friction for this Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the friction coefficient of the shape.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== group =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
g = physics.Shape:group()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  g
 +
|  '''out''' number
 +
|  The assigned group number
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the group number of the shape.
 +
{|  width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 +
|-
 +
|  <span style="color:#AAAA00">'''NOTE'''</span><hr>
 +
|-
 +
 
 +
<div style="white-space: pre">
 +
 
 +
The group number is converted to a positive whole number when stored.
 +
 
 +
</div>
 +
|}
 +
<br/>
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== layers =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
layers = physics.Shape:layers()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  layers
 +
|  '''out''' number
 +
|  A bitmap of the layers this shape occupies
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the bitmap of layers the shape occupies.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== rawBB =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
bb = physics.Shape:rawBB()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  bb
 +
|  '''out''' physics.BB
 +
|  The bounding box of the Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the [[#BB|bounding box]] of the shape. Only valid after a call to [[#BB|physics.Shape:BB()]] or [[#step|physics.Space:step()]].
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== restitution =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
r = physics.Shape:restitution()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  r
 +
|  '''out''' number
 +
|  The restitution of the Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the restitution (or elasticity) of the shape.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== sensor =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
s = physics.Shape:sensor()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  s
 +
|  '''out''' boolean
 +
|  True if the Shape is a sensor
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns true if the shape is a sensor.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setCollisionType =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setCollisionType(collisionType)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  collisionType
 +
|  '''in''' number
 +
|  Programmer-defined type of collision
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Assigns a collision type (an integer value of your choosing) to the shape. It is used to determine which handler to call when a collision occurs. Returns ''self''.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setData =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setData(obj)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  obj
 +
|  '''in''' Lua object
 +
|  An object defined by the programmer
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Sets the programmer data field of the Shape. The programmer can store any Lua object in this field. Returns ''self''.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setFriction =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setFriction(f)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  f
 +
|  '''in''' number
 +
|  Coefficient of friction for the surface of the Shape
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Sets the friction coefficient for the shape. Returns ''self''.
 +
{|  width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 +
|-
 +
|  <span style="color:#AAAA00">'''NOTE'''</span><hr>
 +
|-
 +
 
 +
<div style="white-space: pre">
 +
 
 +
May not behave as expected for f larger than 1.0 or less than 0.
 +
 
 +
</div>
 +
|}
 +
<br/>
 +
 
 +
 
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setGroup =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setGroup(group)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  group
 +
|  '''in''' number
 +
|  Group number
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Sets the group (a number defined by the programmer) of the shape. Shapes in the same group do not generate collisions. Returns ''self''.
 +
{|  width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 +
|-
 +
|  <span style="color:#AAAA00">'''NOTE'''</span><hr>
 +
|-
 +
 
 +
<div style="white-space: pre">
 +
 
 +
The group number is converted to a positive whole number when stored.
 +
 
 +
</div>
 +
|}
 +
<br/>
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setLayers =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setLayers(layers)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  layers
 +
|  '''in''' number
 +
|  A bitmap of integer layer numbers. This implementation permits 32 layers
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Sets the layers that the shape inhabits. Shapes only collide if they are in the same layer. ''layers'' is an integer bitmap of all the layers that the shape occupies. Returns ''self''.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setRestitution =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setRestitution(r)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  r
 +
|  '''in''' number
 +
|  The new value for the shape's restitution
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Sets the restitution (or elasticity) of the shape. A value of 0.0 gives no bounce and a value of 1.0 gives a perfect bounce. Returns ''self''.
 +
{|  width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#FFFFCE;"
 +
|-
 +
|  <span style="color:#AAAA00">'''NOTE'''</span><hr>
 +
|-
 +
 
 +
<div style="white-space: pre">
 +
 
 +
May not behave as expected for r larger than 1.0 or less than 0.
 +
 
 +
</div>
 +
|}
 +
<br/>
 +
 
 +
----
 +
===== setSensor =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setSensor(bool)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  bool
 +
|  '''in''' boolean
 +
|  True if the shape is a sensor
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Determines if the shape is a sensor (true) or not (false). Sensors call [[#CollisionHandler|collision handlers]] but do not generate collisions. Returns ''self''.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== setSurfaceV =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
self = physics.Shape:setSurfaceV(vel)
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  vel
 +
|  '''in''' physics.Vect
 +
|  The new vector for the surface velocity
 +
|-
 +
|  self
 +
|  '''out''' physics.Shape
 +
|  The input Shape is returned as the output
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Sets the surface velocity of the shape. Returns ''self''.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
 +
 
 +
----
 +
===== surfaceV =====
 +
 
 +
 
 +
<!-- code start-->
 +
<pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
 +
sv = physics.Shape:surfaceV()
 +
</pre><!-- code end-->
 +
 
 +
 
 +
<!-- table start -->
 +
{| border=1  width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable"
 +
<!-- header row start -->
 +
! Parameter !! Type !! Description
 +
<!-- header row end -->
 +
|-
 +
|  self
 +
|  '''in''' physics.Shape
 +
|  The input Shape
 +
|-
 +
|  sv
 +
|  '''out''' physics.Vect
 +
|  The surface velocity of the Shape
 +
|}<!-- table end -->
 +
 
 +
<br/>
 +
Returns the surface velocity [[#vector|vector]] of the shape.
 +
 
 +
Introduced in platform.apiLevel = '2.0'
    
[[Category:Physics_Engine]]
 
[[Category:Physics_Engine]]

Navigation menu