View on GitHub

3DreamEngine

3DreamEngine is an *awesome* 3d engine for LÖVE.

InstancedMesh

Extends Mesh

Uses a mesh to create instances from it. Especially helpful when rendering many small instances

Constructors

InstancedMesh:newInstancedMesh(mesh)

Arguments

mesh (Mesh) The source mesh to create instances from

Returns

(InstancedMesh)


Methods

InstancedMesh:getInstancesCount()

Returns the current amount of instances

Returns

(number)


InstancedMesh:clear()

Clear all instances


InstancedMesh:resize(count)

Resize the instanced mesh, preserving previous entries

Arguments

count (number)


InstancedMesh:addInstance(transform, index)

Add another instance

Arguments

transform (Mat4) a mat3x4 matrix, instances do not support shearing, e.g. the last row

index (number) Optional index, else it will append


InstancedMesh:setInstances(instances)

Place instances from an array of mat3x4 transformations, represented as a flat array (mat3 rotation, vec3 position, basically a transposed DreamMat4 with missing last row)

Arguments

instances (number[]) [][]


InstancedMesh:updateBoundingSphere()

Updates the bounding sphere from scratch, called internally when needed


InstancedMesh:extendBoundingSphere(instance)

Extend the bounding sphere by another instance, called internally

Arguments

instance (Mat4)


Mesh:setMaterial(material)

Sets the meshes material

Arguments

material (Material)


Mesh:getMaterial()

Returns

(Material)


Mesh:setVisible(visibility)

Arguments

visibility (boolean)


Mesh:setRenderVisibility(visibility)

Arguments

visibility (boolean)


Mesh:getRenderVisibility()


Mesh:setShadowVisibility(visibility)

Arguments

visibility (boolean)


Mesh:getShadowVisibility()


Mesh:setSkeleton(skeleton)

Arguments

skeleton (Skeleton)


Mesh:getSkeleton()


Mesh:getPixelShader()


Mesh:getVertexShader()


Mesh:getWorldShader()


Mesh:updateBoundingSphere()

Updates the bounding sphere based on mesh data


Mesh:cleanup()


Mesh:preload(force)

Load textures and similar

Arguments

force (boolean) Bypass threaded loading and immediately load things


Mesh:clearMesh()

Deletes the mesh, will regenerate next time needed


Mesh:getMesh(name)

Get a mesh, load automatically if required

Arguments

name (string) optional, default “mesh”


Mesh:applyTransform(transform)

Apply a transformation matrix to all vertices

Arguments

transform (Mat4)


Mesh:applyBones(skeleton)

Apply joints to mesh data directly

Arguments

skeleton (Skeleton) optional


Mesh:getJointMatrix(skeleton, jointIndex)

Returns the final joint transformation based on vertex weights

Arguments

skeleton (Skeleton)

jointIndex (number)

Returns

(Mat4)


Mesh:recalculateTangents()


Mesh:createVertexMap()


Mesh:getMeshFormat()

Returns the required mesh format set by the current pixel shader

Returns

(MeshFormat)


Mesh:create()

Makes this mesh render-able


Mesh:separate()

Separates by loose parts and returns a list of new meshes

Returns

(Mesh[])


Mesh:setMeshDrawMode(meshDrawMode)

Sets the current meshDrawMode, rarely makes sense to set manually

Arguments

meshDrawMode (MeshDrawMode)


Mesh:getMeshDrawMode()

Gets the current meshDrawMode

Returns

(MeshDrawMode)


Mesh:getOrCreateBuffer(name)

Gets or creates an dynamic, typeless buffer

Arguments

name (string) name of buffer


Clonable:clone()

Slow and deep clone


Clonable:instance()

Creates an fast instance


HasShaders:setPixelShader(shader)

Arguments

shader (Shader)


HasShaders:setVertexShader(shader)

Arguments

shader (Shader)


HasShaders:setWorldShader(shader)

Arguments

shader (Shader)


IsNamed:setName(name)

A name has no influence other than being able to print more nicely

Arguments

name (string)


IsNamed:getName()

Gets the name, or “unnamed”

Returns

(string)