void LuaStack::pushLuaValue(const LuaValue& value) { const LuaValueType type = value.getType(); if (type == LuaValueTypeInt) { return pushInt(value.intValue()); } else if (type == LuaValueTypeFloat) { return pushFloat(value.floatValue()); } else if (type == LuaValueTypeBoolean) { return pushBoolean(value.booleanValue()); } else if (type == LuaValueTypeString) { return pushString(value.stringValue().c_str()); } else if (type == LuaValueTypeDict) { pushLuaValueDict(value.dictValue()); } else if (type == LuaValueTypeArray) { pushLuaValueArray(value.arrayValue()); } else if (type == LuaValueTypeObject) { pushObject(value.ccobjectValue(), value.getObjectTypename().c_str()); } }
int Viewport::pushValueToLua(CXLUAFUNC handler,const Vec2 &point1, const Vec2 &point2) { int ret = -1; if (0 == handler) { return ret; } auto stack = LuaEngine::getInstance()->getLuaStack(); LuaValueArray array1; LuaValue value1 = LuaValue::intValue(point1.x); LuaValue value2 = LuaValue::intValue(point1.y); array1.push_back(value1); array1.push_back(value2); stack->pushLuaValueArray(array1); LuaValueArray array2; LuaValue value3 = LuaValue::intValue(point2.x); LuaValue value4 = LuaValue::intValue(point2.y); array2.push_back(value3); array2.push_back(value4); stack->pushLuaValueArray(array2); ret = stack->executeFunctionByHandler(handler, 2); stack->clean(); return ret; }