Smoovement.lua

From Moondust Wiki
Revision as of 21:41, 30 July 2016 by Spinda (talk | contribs)
Jump to navigation Jump to search

Smoovement is an API that introduces sprite objects and ways to transform them as well as parent-children relationships.

Installation

Just download this and extract it. Then, copy the file into your level's graphics folder.

Setup

To enable the smoovement library for a specific level, add this line to lunadll.lua:

local smoovement = API.load ("smoovement");

This will load the smoovement API.


Documentation

Values

These are variables you can access.

world sprite The sprite object used for referencing everything. Any transformations applied to this sprite will get applied to every sprite.
customDraw boolean If this is set to true, sprites will not be drawn in smoovement.lua but can instead be drawn at will through smoovement.draw().
customTick boolean If this is set to true, there won't be any calculations in smoovement.lua but they can be called through smoovement.tick().

Sprite

Values

Sprite.img The LuaImageResource that the sprite is currently displaying
Sprite.x The x translation relative to its parent
Sprite.y The y translation relative to its parent
Sprite.rotation The current rotation of the sprite relative to its parent in degrees
Sprite.pivotX The x coordinate of the pivot point, the point that's used as the center for scaling and rotation, where 0 represents the leftmost side of the sprite and 1 the rightmost
Sprite.pivotY The y coordinate of the pivot point, the point that's used as the center for scaling and rotation, where 0 represents the top of the sprite and 1 the bottom
Sprite.scaleX The value by which the sprite is scaled horizontally
Sprite.scaleX The value by which the sprite is scaled vartically
Sprite.visible boolean containing whether the sprite is visible
Sprite.usesSceneCoords boolean containing whether the will be drawn to the scene instead of to the screen. False by default
Sprite.hasParent boolean containing whether the sprite has a parent. Don't edit this manually.
Sprite.parent Parent sprite. Don't edit this manually.
Sprite.children table of children. Don't edit this manually.
Sprite.hasAnimation boolean containing whether the sprite is animated
Sprite.dTime Number of frames between animations
Sprite.counter A counter that increases from 0 to Sprite.dTime - 1 and is used to keep track of animation
Sprite.frame The index of the frame that the sprite is currently on
Sprite.frames table of LuaImageResource, with each one representing one frame of animation
Sprite.priority Priority with which the sprite is drawn. See LunaLua Render Priority
Sprite.transform The transform of the sprite; only used for rendering
Sprite.deleted boolean containing whether the sprite, as well as its children, are to be deleted on the next frame

Functions

Sprite:moveTo x y
Moves the sprite to the specified coordinates nil number

The new x coordinate

number

The new y coordinate

Sprite:setPivot x y
Sets the pivot point to the specified coordinates nil number

The new x coordinate of the pivot point

number

The new y coordinate of the pivot point

Sprite:setScale x y
Sets the scale of the sprite nil number

The new x scale

number

The new y scale

Sprite:setParent sprite
Sets a new parent sprite nil sprite

The parent sprite

Sprite:removeParent
Removes the parent sprite nil
Sprite:setAnimation frames dTime
Sets the sprite's animation nil table of LuaImageResource

The animation frames

number

The amount of frames between frames of animation

Sprite:setSprite sprite
Sets the image of the sprite nil LuaImageResource

The new sprite

External Use Functions

These are functions you will need to use the library

createSprite properties
Creates a Sprite object Sprite table

The properties of the sprite

draw
Executes the drawing operations nil
tick
Executes the calculating operations nil
translateM x y
Creates a transformation matrix from the x and y coordinates matrix3 number

The x coordinate

number

The y coordinate

rotateM sin cos
Creates a rotation matrix from the sin and cosin of an angle matrix3 number

The sin

number

The cosin

scaleM x y
Creates a scalation matrix from the amount of stretching of the x and y axis matrix3 number

How much the x-axis is stretched

number

How much the y-axis is stretched

vectorTransToXY vector trans
Takes a vector2 and a transformation matrix and outputs the new x and y coordinates number, number vector2

The vector2 to transform

matrix3

The transformation matrix