1

I'm using Lua for the first time, and of course need to check around to learn how to implement certain code.

To create a vertex in Gideros, there's this code:

 mesh:setVertex(index, x, y)

However, I would also like to use the z coordinate. I've been checking around, but haven't found any help. Does anyone know if Gideros has a method for this, or are there any tips and tricks on setting the z coordinates?

Piglet
  • 27,501
  • 3
  • 20
  • 43
Jillinger
  • 172
  • 2
  • 11

1 Answers1

1

First of all these functions are not provided by Lua, but by the Gideros Lua API. There are no meshes or things like that in native Lua.

Referring to the reference Gideros Lua API reference manual would give you some valuable hints:

http://docs.giderosmobile.com/reference/gideros/Mesh#Mesh

Mesh can be 2D or 3D, the latter expects an additionnal Z coordinate in its vertices.

http://docs.giderosmobile.com/reference/gideros/Mesh/new

Mesh.new([is3d])

Parameters:

is3d: (boolean) Specifies that this mesh expect Z coordinate in its vertex array and is thus a 3D mesh

So in order to create a 3d mesh you have to do something like:

local myMesh = Mesh.new(true)

Although the manual does not say that you can use a z coordinate in setVertex

http://docs.giderosmobile.com/reference/gideros/Mesh/setVertex

It is very likely that you can do that.

So let's have a look at Gideros source code:

https://github.com/gideros/gideros/blob/1d4894fb5d39ef6c2375e7e3819cfc836da7672b/luabinding/meshbinder.cpp#L96-L109

int MeshBinder::setVertex(lua_State *L)
{
    Binder binder(L);
    GMesh *mesh = static_cast<GMesh*>(binder.getInstance("Mesh", 1));

    int i = luaL_checkinteger(L, 2) - 1;
    float x = luaL_checknumber(L, 3);
    float y = luaL_checknumber(L, 4);
    float z = luaL_optnumber(L, 5, 0.0);

    mesh->setVertex(i, x, y, z);

    return 0;
}

Here you can see that you can indeed provide a z coordinate and that it will be used.

So

local myMesh = Mesh.new(true)
myMesh:SetVertex(1, 100, 20, 40)

should work just fine.

You could have simply tried that btw. It's for free, it doesn't hurt and it's the best way to learn!

Community
  • 1
  • 1
Piglet
  • 27,501
  • 3
  • 20
  • 43
  • Thank you. Sometimes when I keep trying things and and there is a lot of complaining, I tend to think to myself, 'Okay J, it's about time you quit nagging this program and go get some help." I'll take your advice though. it can't hurt... the PC at least. – Jillinger Apr 10 '18 at 12:25