int LuaFonts::SetOutlineColor(lua_State* L) { CglFont* font = tofont(L, 1); const int args = lua_gettop(L); // number of arguments if (args < 2) { luaL_error(L, "Incorrect arguments to font:SetOutlineColor([\"outlineColor\"])"); } float4* color = NULL; if (lua_istable(L, 2)) { color = new float4; const int count = ParseFloatArray(L, 2, *color, 4); if (count < 3) { luaL_error(L, "Incorrect arguments to font:SetOutlineColor([\"outlineColor\"])"); } if (count == 3) { color->w = 1.0f; } } else if (args >= 4) { color = new float4; color->x = luaL_checkfloat(L, 2); color->y = luaL_checkfloat(L, 3); color->z = luaL_checkfloat(L, 4); color->w = luaL_optfloat(L, 5, 1.0f); } else if (!lua_isnil(L, 2)) { luaL_error(L, "Incorrect arguments to font:SetOutlineColor([\"outlineColor\"])"); } font->SetOutlineColor(color); delete color; return 0; }
int LuaSyncedMoveCtrl::SetRotationVelocity(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 rotVel(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); ASSERT_SYNCED(rotVel); moveType->SetRotationVelocity(rotVel); return 0; }
int LuaSyncedMoveCtrl::SetPosition(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 pos(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); ASSERT_SYNCED(pos); moveType->SetPosition(pos); return 0; }
int LuaSyncedMoveCtrl::SetWindFactor(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->windFactor = luaL_checkfloat(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetGroundOffset(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->groundOffset = luaL_checkfloat(L, 2); return 0; }
int LuaMetalMap::SetMetalAmount(lua_State* L) { const int x = luaL_checkint(L, 1); const int z = luaL_checkint(L, 2); const float m = luaL_checkfloat(L, 3); // SetMetalAmount automatically clamps the value readMap->metalMap->SetMetalAmount(x, z, m); return 0; }
int LuaSyncedMoveCtrl::SetDrag(lua_State* L) { CScriptMoveType* moveType = ParseScriptMoveType(L, __FUNCTION__, 1); if (moveType == NULL) return 0; moveType->drag = luaL_checkfloat(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetGravity(lua_State* L) { CScriptMoveType* moveType = ParseScriptMoveType(L, __FUNCTION__, 1); if (moveType == NULL) return 0; moveType->gravityFactor = luaL_checkfloat(L, 2); return 0; }
int LuaFonts::Print(lua_State* L) { CheckDrawingEnabled(L, __FUNCTION__); const int args = lua_gettop(L); // number of arguments CglFont* font = tofont(L, 1); const string text(luaL_checkstring(L, 2),lua_strlen(L, 2)); const float x = luaL_checkfloat(L, 3); const float y = luaL_checkfloat(L, 4); const float size = luaL_optfloat(L, 5, font->GetSize()); int options = FONT_NEAREST; if ((args >= 6) && lua_isstring(L, 6)) { const char* c = lua_tostring(L, 6); while (*c != 0) { switch (*c) { case 'c': { options |= FONT_CENTER; break; } case 'r': { options |= FONT_RIGHT; break; } case 'a': { options |= FONT_ASCENDER; break; } case 't': { options |= FONT_TOP; break; } case 'v': { options |= FONT_VCENTER; break; } case 'x': { options |= FONT_BASELINE; break; } case 'b': { options |= FONT_BOTTOM; break; } case 'd': { options |= FONT_DESCENDER; break; } case 's': { options |= FONT_SHADOW; break; } case 'o': case 'O': { options |= FONT_OUTLINE; break; } case 'n': { options ^= FONT_NEAREST; break; } } c++; } } font->glPrint(x, y, size, options, text); return 0; }
static int SetLODLengthCommon(lua_State* L, CSolidObject* obj, float scale) { if (obj == nullptr) return 0; LuaObjectMaterialData* lmd = obj->GetLuaMaterialData(); // actual Length-Per-Pixel lmd->SetLODLength(luaL_checknumber(L, 2) - 1, luaL_checkfloat(L, 3) * scale); return 0; }
int LuaFonts::WrapText(lua_State* L) { CglFont* font = tofont(L, 1); string text(luaL_checkstring(L, 2),lua_strlen(L, 2)); const float maxWidth = luaL_checkfloat(L, 3); const float maxHeight = luaL_optfloat(L, 4, 1e9); const float size = luaL_optfloat(L, 5, font->GetSize()); const int lines = font->WrapInPlace(text,size,maxWidth,maxHeight); lua_pushsstring(L, text); lua_pushnumber(L, lines); return 2; }
int LuaSyncedMoveCtrl::SetPhysics(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 pos(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); const float3 vel(luaL_checkfloat(L, 5), luaL_checkfloat(L, 6), luaL_checkfloat(L, 7)); const float3 rot(luaL_checkfloat(L, 8), luaL_checkfloat(L, 9), luaL_checkfloat(L, 10)); ASSERT_SYNCED(pos); ASSERT_SYNCED(vel); ASSERT_SYNCED(rot); moveType->SetPhysics(pos, vel, rot); return 0; }
int LuaSyncedMoveCtrl::SetLimits(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 mins(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); const float3 maxs(luaL_checkfloat(L, 5), luaL_checkfloat(L, 6), luaL_checkfloat(L, 7)); moveType->mins = mins; moveType->maxs = maxs; return 0; }