Beispiel #1
0
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());
    }
}
Beispiel #2
0
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;
}