Explorar o código

Small fixes for the script interpreter.

Jeff Hutchinson %!s(int64=4) %!d(string=hai) anos
pai
achega
8fc0db21c1

+ 7 - 7
Engine/source/console/compiledEval.cpp

@@ -518,17 +518,17 @@ TORQUE_NOINLINE void doSlowMathOp()
 
    // Logical
    if constexpr (Op == FloatOperation::LT)
-      stack[_STK - 1].setFastInt(a.getFloat() < b.getFloat());
+      stack[_STK - 1].setInt(a.getFloat() < b.getFloat());
    if constexpr (Op == FloatOperation::LE)
-      stack[_STK - 1].setFastInt(a.getFloat() <= b.getFloat());
+      stack[_STK - 1].setInt(a.getFloat() <= b.getFloat());
    if constexpr (Op == FloatOperation::GR)
-      stack[_STK - 1].setFastInt(a.getFloat() > b.getFloat());
+      stack[_STK - 1].setInt(a.getFloat() > b.getFloat());
    if constexpr (Op == FloatOperation::GE)
-      stack[_STK - 1].setFastInt(a.getFloat() >= b.getFloat());
+      stack[_STK - 1].setInt(a.getFloat() >= b.getFloat());
    if constexpr (Op == FloatOperation::EQ)
-      stack[_STK - 1].setFastInt(a.getFloat() == b.getFloat());
+      stack[_STK - 1].setInt(a.getFloat() == b.getFloat());
    if constexpr (Op == FloatOperation::NE)
-      stack[_STK - 1].setFastInt(a.getFloat() != b.getFloat());
+      stack[_STK - 1].setInt(a.getFloat() != b.getFloat());
 
    _STK--;
 }
@@ -1276,7 +1276,7 @@ ConsoleValue CodeBlock::exec(U32 ip, const char* functionName, Namespace* thisNa
             _STK++; // Not nice but works.
          }
 
-         returnValue.setString(stack[_STK].getString());
+         returnValue = std::move(stack[_STK]);
          _STK--;
 
          goto execFinished;

+ 2 - 2
Engine/source/console/simManager.cpp

@@ -389,14 +389,14 @@ SimObject* findObject(const char* name)
 SimObject* findObject(const ConsoleValue &val)
 {
    if (val.getType() == ConsoleValueType::cvInteger)
-      return findObject((SimObjectId)val.getInt());
+      return findObject((SimObjectId)val.getFastInt());
    return findObject(val.getString());
 }
 
 SimObject* findObject(ConsoleValue* val)
 {
    if (val->getType() == ConsoleValueType::cvInteger)
-      return findObject((SimObjectId)val->getInt());
+      return findObject((SimObjectId)val->getFastInt());
    return findObject(val->getString());
 }
 

+ 2 - 2
Engine/source/console/test/ScriptTest.cpp

@@ -410,14 +410,14 @@ TEST(Script, ForEachLoop)
 TEST(Script, TorqueScript_Array_Testing)
 {
    ConsoleValue value = RunScript(R"(
-         function t(%idx) { %a[idx] = 2; return %a[idx]; }
+         function t(%idx) { %a[%idx] = 2; return %a[%idx]; }
          return t(5);
    )");
 
    ASSERT_EQ(value.getInt(), 2);
 
    ConsoleValue value2 = RunScript(R"(
-         function t(%idx) { %a[idx, 0] = 2; return %a[idx, 0]; }
+         function t(%idx) { %a[%idx, 0] = 2; return %a[%idx, 0]; }
          return t(5);
    )");