47 using std::unique_ptr;
85 const vector<string> LogicMiniScript::CONTEXTFUNCTIONS_ENGINE = {
"initializeEngine",
"updateEngine" };
86 const vector<string> LogicMiniScript::CONTEXTFUNCTIONS_LOGIC = {
"initializeLogic",
"updateLogic",
"onLogicAdded",
"onLogicsProcessed" };
87 const vector<string> LogicMiniScript::CONTEXTFUNCTIONS_ENGINELOGIC = {
89 "initializeEngine",
"updateEngine",
91 "initializeLogic",
"updateLogic",
"onLogicAdded",
"onLogicsProcessed"
94 LogicMiniScript::LogicMiniScript():
EngineMiniScript(), prototypesToAddMutex(
"prototypetoadd-mutex") {
101 return "tdme::engine::logics::LogicMiniScript";
105 auto transpilationUnits = EngineMiniScript::getTranspilationUnits();
106 transpilationUnits.push_back(
"src/tdme/engine/logics/LogicMiniScript.cpp");
107 return transpilationUnits;
112 if (entity ==
nullptr)
return entity;
113 if (childEntityId.empty() ==
false) {
116 return entityHierarchy->
getEntity(childEntityId);
118 Console::println(
"LogicMiniScript::getEntity(): no entity hierarchy: can not resolve child entity by given id: " + childEntityId);
127 EngineMiniScript::registerStateMachineStates();
131 EngineMiniScript::registerMethods();
134 class ScriptMethodApplicationRunsInEditor:
public ScriptMethod {
139 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
140 miniScript(miniScript) {}
141 const string getMethodName()
override {
142 return "application.runsInEditor";
144 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
147 const vector<string>& getContextFunctions() {
148 return CONTEXTFUNCTIONS_ALL;
151 registerMethod(
new ScriptMethodApplicationRunsInEditor(
this));
155 class ScriptMethodApplicationIsFullScreen:
public ScriptMethod {
160 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
161 miniScript(miniScript) {}
162 const string getMethodName()
override {
163 return "application.isFullScreen";
165 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
166 miniScript->
setValue(returnValue, Editor::getInstance() !=
nullptr?Editor::getInstance()->isFullScreen():
false);
168 const vector<string>& getContextFunctions() {
169 return CONTEXTFUNCTIONS_ALL;
172 registerMethod(
new ScriptMethodApplicationIsFullScreen(
this));
176 class ScriptMethodLogicGetId:
public ScriptMethod {
181 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
182 miniScript(miniScript) {}
183 const string getMethodName()
override {
184 return "logic.getId";
186 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
189 const vector<string>& getContextFunctions() {
193 registerMethod(
new ScriptMethodLogicGetId(
this));
197 class ScriptMethodLogicGetHierarchyId:
public ScriptMethod {
202 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
203 miniScript(miniScript) {}
204 const string getMethodName()
override {
205 return "logic.getHierarchyId";
207 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
210 const vector<string>& getContextFunctions() {
214 registerMethod(
new ScriptMethodLogicGetHierarchyId(
this));
218 class ScriptMethodLogicGetHierarchyParentId:
public ScriptMethod {
223 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
224 miniScript(miniScript) {}
225 const string getMethodName()
override {
226 return "logic.getHierarchyParentId";
228 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
231 const vector<string>& getContextFunctions() {
235 registerMethod(
new ScriptMethodLogicGetHierarchyParentId(
this));
239 class ScriptMethodLogicGetLogicIds:
public ScriptMethod {
244 ScriptMethod({}, ScriptVariableType::TYPE_ARRAY),
245 miniScript(miniScript) {}
246 const string getMethodName()
override {
247 return "logic.getLogicIds";
249 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
251 returnValue.setType(EngineMiniScript::TYPE_ARRAY);
252 for (
auto contextLogic: contextLogics) {
253 returnValue.pushArrayEntry(EngineMiniScript::ScriptVariable(contextLogic->getId()));
256 const vector<string>& getContextFunctions() {
260 registerMethod(
new ScriptMethodLogicGetLogicIds(
this));
264 class ScriptMethodAudioGetListenerPosition:
public ScriptMethod {
273 miniScript(miniScript) {}
274 const string getMethodName()
override {
275 return "audio.getListenerPosition";
277 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
280 const vector<string>& getContextFunctions() {
284 registerMethod(
new ScriptMethodAudioGetListenerPosition(
this));
288 class ScriptMethodAudioSetListenerPosition:
public ScriptMethod {
295 { .type =
TYPE_VECTOR3, .name =
"position", .optional =
false, .reference =
false, .nullable =
false }
297 ScriptVariableType::TYPE_NULL
299 miniScript(miniScript) {}
300 const string getMethodName()
override {
301 return "audio.setListenerPosition";
303 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
305 if (miniScript->
getVector3Value(argumentValues, 0, position) ==
true) {
308 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
309 miniScript->startErrorScript();
312 const vector<string>& getContextFunctions() {
316 registerMethod(
new ScriptMethodAudioSetListenerPosition(
this));
320 class ScriptMethodAudioGetListenerOrientationUp:
public ScriptMethod {
324 ScriptMethodAudioGetListenerOrientationUp(
LogicMiniScript* miniScript):
329 miniScript(miniScript) {}
330 const string getMethodName()
override {
331 return "audio.getListenerOrientationUp";
333 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
336 const vector<string>& getContextFunctions() {
340 registerMethod(
new ScriptMethodAudioGetListenerOrientationUp(
this));
344 class ScriptMethodAudioSetListenerOrientationUp:
public ScriptMethod {
348 ScriptMethodAudioSetListenerOrientationUp(
LogicMiniScript* miniScript):
351 { .type =
TYPE_VECTOR3, .name =
"orientation", .optional =
false, .reference =
false, .nullable =
false }
353 ScriptVariableType::TYPE_NULL
355 miniScript(miniScript) {}
356 const string getMethodName()
override {
357 return "audio.setListenerOrientationUp";
359 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
361 if (miniScript->
getVector3Value(argumentValues, 0, orientation) ==
true) {
364 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
365 miniScript->startErrorScript();
368 const vector<string>& getContextFunctions() {
372 registerMethod(
new ScriptMethodAudioSetListenerOrientationUp(
this));
376 class ScriptMethodAudioGetListenerOrientationAt:
public ScriptMethod {
380 ScriptMethodAudioGetListenerOrientationAt(
LogicMiniScript* miniScript):
385 miniScript(miniScript) {}
386 const string getMethodName()
override {
387 return "audio.getListenerOrientationAt";
389 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
392 const vector<string>& getContextFunctions() {
396 registerMethod(
new ScriptMethodAudioGetListenerOrientationAt(
this));
400 class ScriptMethodAudioSetListenerOrientationAt:
public ScriptMethod {
404 ScriptMethodAudioSetListenerOrientationAt(
LogicMiniScript* miniScript):
407 { .type =
TYPE_VECTOR3, .name =
"orientation", .optional =
false, .reference =
false, .nullable =
false }
409 ScriptVariableType::TYPE_NULL
411 miniScript(miniScript) {}
412 const string getMethodName()
override {
413 return "audio.setListenerOrientationAt";
415 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
417 if (miniScript->
getVector3Value(argumentValues, 0, orientation) ==
true) {
420 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
421 miniScript->startErrorScript();
424 const vector<string>& getContextFunctions() {
428 registerMethod(
new ScriptMethodAudioSetListenerOrientationAt(
this));
432 class ScriptMethodAudioPlaySound:
public ScriptMethod {
439 { .type = ScriptVariableType::TYPE_STRING, .name =
"id", .optional =
false, .reference =
false, .nullable =
false },
440 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"delay", .optional =
true, .reference =
false, .nullable =
false },
441 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"gain", .optional =
true, .reference =
false, .nullable =
false },
442 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"pitch", .optional =
true, .reference =
false, .nullable =
false },
443 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"ignoreIfPlaying", .optional =
true, .reference =
false, .nullable =
false }
445 ScriptVariableType::TYPE_NULL
447 miniScript(miniScript) {}
448 const string getMethodName()
override {
451 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
456 auto ignoreIfPlaying =
false;
457 if (miniScript->getStringValue(argumentValues, 0,
id) ==
true &&
458 miniScript->getIntegerValue(argumentValues, 1, delay,
true) ==
true &&
459 miniScript->getFloatValue(argumentValues, 2, gain,
true) ==
true &&
460 miniScript->getFloatValue(argumentValues, 3, pitch,
true) ==
true &&
461 miniScript->getBooleanValue(argumentValues, 4, ignoreIfPlaying,
true) ==
true) {
464 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
465 miniScript->startErrorScript();
468 const vector<string>& getContextFunctions() {
472 registerMethod(
new ScriptMethodAudioPlaySound(
this));
476 class ScriptMethodAudioPlaySoundAtPosition:
public ScriptMethod {
483 { .type = ScriptVariableType::TYPE_STRING, .name =
"id", .optional =
false, .reference =
false, .nullable =
false },
484 { .type =
TYPE_VECTOR3, .name =
"position", .optional =
false, .reference =
false, .nullable =
false },
485 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"delay", .optional =
true, .reference =
false, .nullable =
false },
486 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"gain", .optional =
true, .reference =
false, .nullable =
false },
487 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"pitch", .optional =
true, .reference =
false, .nullable =
false },
488 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"ignoreIfPlaying", .optional =
true, .reference =
false, .nullable =
false }
490 ScriptVariableType::TYPE_NULL
492 miniScript(miniScript) {}
493 const string getMethodName()
override {
494 return "audio.playAtPosition";
496 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
502 auto ignoreIfPlaying =
false;
503 if (miniScript->getStringValue(argumentValues, 0,
id) ==
true &&
505 miniScript->getIntegerValue(argumentValues, 2, delay,
true) ==
true &&
506 miniScript->getFloatValue(argumentValues, 3, gain,
true) ==
true &&
507 miniScript->getFloatValue(argumentValues, 4, pitch,
true) ==
true &&
508 miniScript->getBooleanValue(argumentValues, 5, ignoreIfPlaying,
true) ==
true) {
511 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
512 miniScript->startErrorScript();
515 const vector<string>& getContextFunctions() {
519 registerMethod(
new ScriptMethodAudioPlaySoundAtPosition(
this));
523 class ScriptMethodLogicSignalSend:
public ScriptMethod {
529 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
530 { .type = ScriptVariableType::TYPE_STRING, .name =
"signal", .optional =
false, .reference =
false, .nullable =
false }
532 miniScript(miniScript) {}
533 const string getMethodName()
override {
534 return "logic.signal.send";
536 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
539 if (miniScript->getStringValue(argumentValues, 0, logicId) ==
true &&
540 miniScript->getStringValue(argumentValues, 1, signal) ==
true) {
542 if (
logic ==
nullptr) {
543 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no logic with given id: " + logicId);
544 miniScript->startErrorScript();
546 vector<ScriptVariable> arguments(argumentValues.size() - 2);
547 for (
auto i = 2; i < argumentValues.size(); i++) arguments.push_back(argumentValues[i]);
551 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
552 miniScript->startErrorScript();
555 bool isVariadic()
const override {
558 const vector<string>& getContextFunctions() {
562 registerMethod(
new ScriptMethodLogicSignalSend(
this));
566 class ScriptMethodLogicHas:
public ScriptMethod {
573 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
574 { .type = ScriptVariableType::TYPE_STRING, .name =
"callable", .optional =
false, .reference =
false, .nullable =
false }
576 ScriptVariableType::TYPE_BOOLEAN
578 miniScript(miniScript) {}
579 const string getMethodName()
override {
582 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
585 if (EngineMiniScript::getStringValue(argumentValues, 0, logicId) ==
false ||
586 EngineMiniScript::getStringValue(argumentValues, 1, callable) ==
false) {
587 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
588 miniScript->startErrorScript();
592 miniScript->
setValue(returnValue,
false);
595 auto scriptIdx = logicMiniScript->getFunctionScriptIdx(callable);
596 if (scriptIdx == SCRIPTIDX_NONE || logicMiniScript->getScripts()[scriptIdx].callable ==
false) {
597 miniScript->
setValue(returnValue,
false);
599 miniScript->
setValue(returnValue,
true);
605 registerMethod(
new ScriptMethodLogicHas(
this));
609 class ScriptMethodLogicCall:
public ScriptMethod {
616 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
617 { .type = ScriptVariableType::TYPE_STRING, .name =
"callable", .optional =
false, .reference =
false, .nullable =
false }
619 ScriptVariableType::TYPE_PSEUDO_MIXED
621 miniScript(miniScript) {}
622 const string getMethodName()
override {
625 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
628 if (EngineMiniScript::getStringValue(argumentValues, 0, logicId) ==
false ||
629 EngineMiniScript::getStringValue(argumentValues, 1, callable) ==
false) {
630 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
631 miniScript->startErrorScript();
635 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no mini script logic with given id: " + logicId);
636 miniScript->startErrorScript();
639 auto scriptIdx = logicMiniScript->getFunctionScriptIdx(callable);
640 if (scriptIdx == SCRIPTIDX_NONE || logicMiniScript->getScripts()[scriptIdx].callable ==
false) {
641 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": callable not found: " + callable);
642 miniScript->startErrorScript();
644 #if defined (__APPLE__)
646 vector<ScriptVariable> callArgumentValues(argumentValues.size() - 2);
647 for (
auto i = 2; i < argumentValues.size(); i++) callArgumentValues[i - 2] = move(argumentValues[i]);
649 span callArgumentValuesSpan(callArgumentValues);
650 logicMiniScript->call(scriptIdx, callArgumentValuesSpan, returnValue);
652 for (
auto i = 2; i < argumentValues.size(); i++) argumentValues[i] = move(callArgumentValues[i - 2]);
654 span callArgumentValuesSpan(argumentValues.begin() + 2, argumentValues.end());
655 logicMiniScript->call(scriptIdx, callArgumentValuesSpan, returnValue);
661 bool isVariadic()
const override {
665 registerMethod(
new ScriptMethodLogicCall(
this));
669 class ScriptMethodLogicSignalHas:
public ScriptMethod {
674 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
675 miniScript(miniScript) {}
676 const string getMethodName()
override {
677 return "logic.signal.has";
679 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
682 const vector<string>& getContextFunctions() {
683 return CONTEXTFUNCTIONS_ALL;
686 registerMethod(
new ScriptMethodLogicSignalHas(
this));
690 class ScriptMethodLogicSignalGetName:
public ScriptMethod {
695 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
696 miniScript(miniScript) {}
697 const string getMethodName()
override {
698 return "logic.signal.getName";
700 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
703 const vector<string>& getContextFunctions() {
704 return CONTEXTFUNCTIONS_ALL;
707 registerMethod(
new ScriptMethodLogicSignalGetName(
this));
711 class ScriptMethodLogicSignalGetArgument:
public ScriptMethod {
718 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"argumentIndex", .optional =
false, .reference =
false, .nullable =
false }
720 ScriptVariableType::TYPE_PSEUDO_MIXED
722 miniScript(miniScript) {}
723 const string getMethodName()
override {
724 return "logic.signal.getArgument";
726 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
727 int64_t argumentIndex;
728 if (miniScript->getIntegerValue(argumentValues, 0, argumentIndex) ==
true) {
731 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
732 miniScript->startErrorScript();
735 const vector<string>& getContextFunctions() {
736 return CONTEXTFUNCTIONS_ALL;
739 registerMethod(
new ScriptMethodLogicSignalGetArgument(
this));
743 class ScriptMethodLogicSignalNext:
public ScriptMethod {
749 miniScript(miniScript) {}
750 const string getMethodName()
override {
751 return "logic.signal.next";
753 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
756 const vector<string>& getContextFunctions() {
757 return CONTEXTFUNCTIONS_ALL;
760 registerMethod(
new ScriptMethodLogicSignalNext(
this));
765 class ScriptMethodInputKeyboardKEYCODE_LEFT:
public ScriptMethod {
770 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
771 miniScript(miniScript) {}
772 const string getMethodName()
override {
773 return "input.keyboard.KEYCODE_LEFT";
775 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
776 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_LEFT);
778 const vector<string>& getContextFunctions() {
779 return CONTEXTFUNCTIONS_ALL;
782 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_LEFT(
this));
786 class ScriptMethodInputKeyboardKEYCODE_RIGHT:
public ScriptMethod {
791 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
792 miniScript(miniScript) {}
793 const string getMethodName()
override {
794 return "input.keyboard.KEYCODE_RIGHT";
796 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
797 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_RIGHT);
799 const vector<string>& getContextFunctions() {
800 return CONTEXTFUNCTIONS_ALL;
803 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_RIGHT(
this));
807 class ScriptMethodInputKeyboardKEYCODE_UP:
public ScriptMethod {
812 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
813 miniScript(miniScript) {}
814 const string getMethodName()
override {
815 return "input.keyboard.KEYCODE_UP";
817 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
818 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_UP);
820 const vector<string>& getContextFunctions() {
821 return CONTEXTFUNCTIONS_ALL;
824 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_UP(
this));
828 class ScriptMethodInputKeyboardKEYCODE_DOWN:
public ScriptMethod {
833 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
834 miniScript(miniScript) {}
835 const string getMethodName()
override {
836 return "input.keyboard.KEYCODE_DOWN";
838 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
839 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_DOWN);
841 const vector<string>& getContextFunctions() {
842 return CONTEXTFUNCTIONS_ALL;
845 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_DOWN(
this));
849 class ScriptMethodInputKeyboardKEYCODE_POS1:
public ScriptMethod {
854 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
855 miniScript(miniScript) {}
856 const string getMethodName()
override {
857 return "input.keyboard.KEYCODE_POS1";
859 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
860 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_POS1);
862 const vector<string>& getContextFunctions() {
863 return CONTEXTFUNCTIONS_ALL;
866 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_POS1(
this));
870 class ScriptMethodInputKeyboardKEYCODE_END:
public ScriptMethod {
875 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
876 miniScript(miniScript) {}
877 const string getMethodName()
override {
878 return "input.keyboard.KEYCODE_END";
880 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
881 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_END);
883 const vector<string>& getContextFunctions() {
884 return CONTEXTFUNCTIONS_ALL;
887 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_END(
this));
891 class ScriptMethodInputKeyboardKEYCODE_PAGEUP:
public ScriptMethod {
896 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
897 miniScript(miniScript) {}
898 const string getMethodName()
override {
899 return "input.keyboard.KEYCODE_PAGEUP";
901 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
902 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_PAGE_UP);
904 const vector<string>& getContextFunctions() {
905 return CONTEXTFUNCTIONS_ALL;
908 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_PAGEUP(
this));
912 class ScriptMethodInputKeyboardKEYCODE_PAGEDOWN:
public ScriptMethod {
916 ScriptMethodInputKeyboardKEYCODE_PAGEDOWN(
LogicMiniScript* miniScript):
917 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
918 miniScript(miniScript) {}
919 const string getMethodName()
override {
920 return "input.keyboard.KEYCODE_PAGEDOWN";
922 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
923 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_PAGE_DOWN);
925 const vector<string>& getContextFunctions() {
926 return CONTEXTFUNCTIONS_ALL;
929 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_PAGEDOWN(
this));
933 class ScriptMethodInputKeyboardKEYCODE_BACKSPACE:
public ScriptMethod {
937 ScriptMethodInputKeyboardKEYCODE_BACKSPACE(
LogicMiniScript* miniScript):
938 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
939 miniScript(miniScript) {}
940 const string getMethodName()
override {
941 return "input.keyboard.KEYCODE_BACKSPACE";
943 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
944 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_BACKSPACE);
946 const vector<string>& getContextFunctions() {
947 return CONTEXTFUNCTIONS_ALL;
950 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_BACKSPACE(
this));
954 class ScriptMethodInputKeyboardKEYCODE_DELETE:
public ScriptMethod {
959 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
960 miniScript(miniScript) {}
961 const string getMethodName()
override {
962 return "input.keyboard.KEYCODE_DELETE";
964 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
965 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_DELETE);
967 const vector<string>& getContextFunctions() {
968 return CONTEXTFUNCTIONS_ALL;
971 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_DELETE(
this));
975 class ScriptMethodInputKeyboardKEYCODE_SPACE:
public ScriptMethod {
980 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
981 miniScript(miniScript) {}
982 const string getMethodName()
override {
983 return "input.keyboard.KEYCODE_SPACE";
985 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
986 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_SPACE);
988 const vector<string>& getContextFunctions() {
989 return CONTEXTFUNCTIONS_ALL;
992 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_SPACE(
this));
996 class ScriptMethodInputKeyboardKEYCODE_RETURN:
public ScriptMethod {
1001 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1002 miniScript(miniScript) {}
1003 const string getMethodName()
override {
1004 return "input.keyboard.KEYCODE_RETURN";
1006 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1007 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_RETURN);
1009 const vector<string>& getContextFunctions() {
1010 return CONTEXTFUNCTIONS_ALL;
1013 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_RETURN(
this));
1017 class ScriptMethodInputKeyboardKEYCODE_ESCAPE:
public ScriptMethod {
1022 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1023 miniScript(miniScript) {}
1024 const string getMethodName()
override {
1025 return "input.keyboard.KEYCODE_ESCAPE";
1027 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1028 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_ESCAPE);
1030 const vector<string>& getContextFunctions() {
1031 return CONTEXTFUNCTIONS_ALL;
1034 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_ESCAPE(
this));
1038 class ScriptMethodInputKeyboardKEYCODE_F1:
public ScriptMethod {
1043 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1044 miniScript(miniScript) {}
1045 const string getMethodName()
override {
1046 return "input.keyboard.KEYCODE_F1";
1048 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1049 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F1);
1051 const vector<string>& getContextFunctions() {
1052 return CONTEXTFUNCTIONS_ALL;
1055 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F1(
this));
1059 class ScriptMethodInputKeyboardKEYCODE_F2:
public ScriptMethod {
1064 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1065 miniScript(miniScript) {}
1066 const string getMethodName()
override {
1067 return "input.keyboard.KEYCODE_F2";
1069 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1070 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F2);
1072 const vector<string>& getContextFunctions() {
1073 return CONTEXTFUNCTIONS_ALL;
1076 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F2(
this));
1080 class ScriptMethodInputKeyboardKEYCODE_F3:
public ScriptMethod {
1085 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1086 miniScript(miniScript) {}
1087 const string getMethodName()
override {
1088 return "input.keyboard.KEYCODE_F3";
1090 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1091 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F3);
1093 const vector<string>& getContextFunctions() {
1094 return CONTEXTFUNCTIONS_ALL;
1097 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F3(
this));
1101 class ScriptMethodInputKeyboardKEYCODE_F4:
public ScriptMethod {
1106 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1107 miniScript(miniScript) {}
1108 const string getMethodName()
override {
1109 return "input.keyboard.KEYCODE_F4";
1111 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1112 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F4);
1114 const vector<string>& getContextFunctions() {
1115 return CONTEXTFUNCTIONS_ALL;
1118 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F4(
this));
1122 class ScriptMethodInputKeyboardKEYCODE_F5:
public ScriptMethod {
1127 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1128 miniScript(miniScript) {}
1129 const string getMethodName()
override {
1130 return "input.keyboard.KEYCODE_F5";
1132 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1133 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F5);
1135 const vector<string>& getContextFunctions() {
1136 return CONTEXTFUNCTIONS_ALL;
1139 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F5(
this));
1143 class ScriptMethodInputKeyboardKEYCODE_F6:
public ScriptMethod {
1148 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1149 miniScript(miniScript) {}
1150 const string getMethodName()
override {
1151 return "input.keyboard.KEYCODE_F6";
1153 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1154 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F6);
1156 const vector<string>& getContextFunctions() {
1157 return CONTEXTFUNCTIONS_ALL;
1160 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F6(
this));
1164 class ScriptMethodInputKeyboardKEYCODE_F7:
public ScriptMethod {
1169 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1170 miniScript(miniScript) {}
1171 const string getMethodName()
override {
1172 return "input.keyboard.KEYCODE_F7";
1174 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1175 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F7);
1177 const vector<string>& getContextFunctions() {
1178 return CONTEXTFUNCTIONS_ALL;
1181 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F7(
this));
1185 class ScriptMethodInputKeyboardKEYCODE_F8:
public ScriptMethod {
1190 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1191 miniScript(miniScript) {}
1192 const string getMethodName()
override {
1193 return "input.keyboard.KEYCODE_F8";
1195 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1196 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F8);
1198 const vector<string>& getContextFunctions() {
1199 return CONTEXTFUNCTIONS_ALL;
1202 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F8(
this));
1206 class ScriptMethodInputKeyboardKEYCODE_F9:
public ScriptMethod {
1211 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1212 miniScript(miniScript) {}
1213 const string getMethodName()
override {
1214 return "input.keyboard.KEYCODE_F9";
1216 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1217 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F9);
1219 const vector<string>& getContextFunctions() {
1220 return CONTEXTFUNCTIONS_ALL;
1223 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F9(
this));
1227 class ScriptMethodInputKeyboardKEYCODE_F10:
public ScriptMethod {
1232 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1233 miniScript(miniScript) {}
1234 const string getMethodName()
override {
1235 return "input.keyboard.KEYCODE_F10";
1237 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1238 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F10);
1240 const vector<string>& getContextFunctions() {
1241 return CONTEXTFUNCTIONS_ALL;
1244 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F10(
this));
1248 class ScriptMethodInputKeyboardKEYCODE_F11:
public ScriptMethod {
1253 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1254 miniScript(miniScript) {}
1255 const string getMethodName()
override {
1256 return "input.keyboard.KEYCODE_F11";
1258 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1259 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F11);
1261 const vector<string>& getContextFunctions() {
1262 return CONTEXTFUNCTIONS_ALL;
1265 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F11(
this));
1269 class ScriptMethodInputKeyboardKEYCODE_F12:
public ScriptMethod {
1274 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1275 miniScript(miniScript) {}
1276 const string getMethodName()
override {
1277 return "input.keyboard.KEYCODE_F12";
1279 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1280 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F12);
1282 const vector<string>& getContextFunctions() {
1283 return CONTEXTFUNCTIONS_ALL;
1286 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F12(
this));
1290 class ScriptMethodInputKeyboardIsKeyDown:
public ScriptMethod {
1297 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"keyCode", .optional =
false, .reference =
false, .nullable =
false }
1299 ScriptVariableType::TYPE_BOOLEAN
1301 miniScript(miniScript) {}
1302 const string getMethodName()
override {
1303 return "input.keyboard.isKeyDown";
1305 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1307 if (miniScript->getIntegerValue(argumentValues, 0, keyCode) ==
true) {
1310 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1311 miniScript->startErrorScript();
1314 const vector<string>& getContextFunctions() {
1315 return CONTEXTFUNCTIONS_ALL;
1318 registerMethod(
new ScriptMethodInputKeyboardIsKeyDown(
this));
1322 class ScriptMethodInputKeyboardIsCharDown:
public ScriptMethod {
1329 { .type = ScriptVariableType::TYPE_STRING, .name =
"charAsString", .optional =
false, .reference =
false, .nullable =
false }
1331 ScriptVariableType::TYPE_BOOLEAN
1333 miniScript(miniScript) {}
1334 const string getMethodName()
override {
1335 return "input.keyboard.isCharDown";
1337 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1338 string charAsString;
1339 if (miniScript->getStringValue(argumentValues, 0, charAsString) ==
true) {
1341 auto keyChar = u8It.
hasNext() ==
true?u8It.
next():-1;
1344 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1345 miniScript->startErrorScript();
1348 const vector<string>& getContextFunctions() {
1349 return CONTEXTFUNCTIONS_ALL;
1352 registerMethod(
new ScriptMethodInputKeyboardIsCharDown(
this));
1356 class ScriptMethodInputKeyboardGetTypedString:
public ScriptMethod {
1361 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
1362 miniScript(miniScript) {}
1363 const string getMethodName()
override {
1364 return "input.keyboard.getTypedString";
1366 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1369 const vector<string>& getContextFunctions() {
1370 return CONTEXTFUNCTIONS_ALL;
1373 registerMethod(
new ScriptMethodInputKeyboardGetTypedString(
this));
1377 class ScriptMethodInputKeyboardIsControlDown:
public ScriptMethod {
1382 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
1383 miniScript(miniScript) {}
1384 const string getMethodName()
override {
1385 return "input.keyboard.isControlDown";
1387 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1390 const vector<string>& getContextFunctions() {
1391 return CONTEXTFUNCTIONS_ALL;
1394 registerMethod(
new ScriptMethodInputKeyboardIsControlDown(
this));
1398 class ScriptMethodInputKeyboardIsMetaDown:
public ScriptMethod {
1403 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
1404 miniScript(miniScript) {}
1405 const string getMethodName()
override {
1406 return "input.keyboard.isMetaDown";
1408 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1411 const vector<string>& getContextFunctions() {
1412 return CONTEXTFUNCTIONS_ALL;
1415 registerMethod(
new ScriptMethodInputKeyboardIsMetaDown(
this));
1419 class ScriptMethodInputKeyboardIsAltDown:
public ScriptMethod {
1424 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
1425 miniScript(miniScript) {}
1426 const string getMethodName()
override {
1427 return "input.keyboard.isAltDown";
1429 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1432 const vector<string>& getContextFunctions() {
1433 return CONTEXTFUNCTIONS_ALL;
1436 registerMethod(
new ScriptMethodInputKeyboardIsAltDown(
this));
1440 class ScriptMethodInputKeyboardIsShiftDown:
public ScriptMethod {
1445 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
1446 miniScript(miniScript) {}
1447 const string getMethodName()
override {
1448 return "input.keyboard.isShiftDown";
1450 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1453 const vector<string>& getContextFunctions() {
1454 return CONTEXTFUNCTIONS_ALL;
1457 registerMethod(
new ScriptMethodInputKeyboardIsShiftDown(
this));
1462 class ScriptMethodInputMouseBUTTON_LEFT:
public ScriptMethod {
1467 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1468 miniScript(miniScript) {}
1469 const string getMethodName()
override {
1470 return "input.mouse.BUTTON_LEFT";
1472 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1473 returnValue =
static_cast<int64_t
>(GUIMouseEvent::MOUSEEVENT_BUTTON_LEFT - 1);
1475 const vector<string>& getContextFunctions() {
1476 return CONTEXTFUNCTIONS_ALL;
1479 registerMethod(
new ScriptMethodInputMouseBUTTON_LEFT(
this));
1483 class ScriptMethodInputMouseBUTTON_MIDDLE:
public ScriptMethod {
1488 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1489 miniScript(miniScript) {}
1490 const string getMethodName()
override {
1491 return "input.mouse.BUTTON_MIDDLE";
1493 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1494 returnValue =
static_cast<int64_t
>(GUIMouseEvent::MOUSEEVENT_BUTTON_MIDDLE - 1);
1496 const vector<string>& getContextFunctions() {
1497 return CONTEXTFUNCTIONS_ALL;
1500 registerMethod(
new ScriptMethodInputMouseBUTTON_MIDDLE(
this));
1504 class ScriptMethodInputMouseBUTTON_RIGHT:
public ScriptMethod {
1509 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1510 miniScript(miniScript) {}
1511 const string getMethodName()
override {
1512 return "input.mouse.BUTTON_RIGHT";
1514 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1515 returnValue =
static_cast<int64_t
>(GUIMouseEvent::MOUSEEVENT_BUTTON_RIGHT - 1);
1517 const vector<string>& getContextFunctions() {
1518 return CONTEXTFUNCTIONS_ALL;
1521 registerMethod(
new ScriptMethodInputMouseBUTTON_RIGHT(
this));
1525 class ScriptMethodInputMouseIsButtonDown:
public ScriptMethod {
1532 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"button", .optional =
false, .reference =
false, .nullable =
false }
1534 ScriptVariableType::TYPE_BOOLEAN),
1535 miniScript(miniScript) {}
1536 const string getMethodName()
override {
1537 return "input.mouse.isButtonDown";
1539 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1541 if (miniScript->getIntegerValue(argumentValues, 0, button) ==
true) {
1542 returnValue = button >= 0 && button <= 3?miniScript->
mouseDown[button]:
false;
1544 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1545 miniScript->startErrorScript();
1548 const vector<string>& getContextFunctions() {
1549 return CONTEXTFUNCTIONS_ALL;
1552 registerMethod(
new ScriptMethodInputMouseIsButtonDown(
this));
1556 class ScriptMethodInputMouseIsButtonUp:
public ScriptMethod {
1563 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"button", .optional =
false, .reference =
false, .nullable =
false }
1565 ScriptVariableType::TYPE_BOOLEAN),
1566 miniScript(miniScript) {}
1567 const string getMethodName()
override {
1568 return "input.mouse.isButtonUp";
1570 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1572 if (miniScript->getIntegerValue(argumentValues, 0, button) ==
true) {
1573 returnValue = button >= 0 && button <= 3?miniScript->
mouseUp[button]:
false;
1575 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1576 miniScript->startErrorScript();
1579 const vector<string>& getContextFunctions() {
1580 return CONTEXTFUNCTIONS_ALL;
1583 registerMethod(
new ScriptMethodInputMouseIsButtonUp(
this));
1587 class ScriptMethodInputMouseIsDragging:
public ScriptMethod {
1594 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"button", .optional =
false, .reference =
false, .nullable =
false }
1596 ScriptVariableType::TYPE_BOOLEAN),
1597 miniScript(miniScript) {}
1598 const string getMethodName()
override {
1599 return "input.mouse.isDragging";
1601 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1603 if (miniScript->getIntegerValue(argumentValues, 0, button) ==
true) {
1604 returnValue = button >= 0 && button <= 3?miniScript->
mouseDragging[button]:
false;
1606 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1607 miniScript->startErrorScript();
1610 const vector<string>& getContextFunctions() {
1611 return CONTEXTFUNCTIONS_ALL;
1614 registerMethod(
new ScriptMethodInputMouseIsDragging(
this));
1618 class ScriptMethodInputMouseHasMoved:
public ScriptMethod {
1623 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
1624 miniScript(miniScript) {}
1625 const string getMethodName()
override {
1626 return "input.mouse.hasMoved";
1628 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1631 const vector<string>& getContextFunctions() {
1632 return CONTEXTFUNCTIONS_ALL;
1635 registerMethod(
new ScriptMethodInputMouseHasMoved(
this));
1639 class ScriptMethodInputMouseGetX:
public ScriptMethod {
1644 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1645 miniScript(miniScript) {}
1646 const string getMethodName()
override {
1647 return "input.mouse.getX";
1649 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1650 returnValue =
static_cast<int64_t
>(miniScript->
mouseX);
1652 const vector<string>& getContextFunctions() {
1653 return CONTEXTFUNCTIONS_ALL;
1656 registerMethod(
new ScriptMethodInputMouseGetX(
this));
1660 class ScriptMethodInputMouseGetXUnscaled:
public ScriptMethod {
1665 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1666 miniScript(miniScript) {}
1667 const string getMethodName()
override {
1668 return "input.mouse.getXUnscaled";
1670 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1673 const vector<string>& getContextFunctions() {
1674 return CONTEXTFUNCTIONS_ALL;
1677 registerMethod(
new ScriptMethodInputMouseGetXUnscaled(
this));
1681 class ScriptMethodInputMouseGetY:
public ScriptMethod {
1686 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1687 miniScript(miniScript) {}
1688 const string getMethodName()
override {
1689 return "input.mouse.getY";
1691 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1692 returnValue =
static_cast<int64_t
>(miniScript->
mouseY);
1694 const vector<string>& getContextFunctions() {
1695 return CONTEXTFUNCTIONS_ALL;
1698 registerMethod(
new ScriptMethodInputMouseGetY(
this));
1702 class ScriptMethodInputMouseGetYUnscaled:
public ScriptMethod {
1707 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1708 miniScript(miniScript) {}
1709 const string getMethodName()
override {
1710 return "input.mouse.getYUnscaled";
1712 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1715 const vector<string>& getContextFunctions() {
1716 return CONTEXTFUNCTIONS_ALL;
1719 registerMethod(
new ScriptMethodInputMouseGetYUnscaled(
this));
1723 class ScriptMethodInputMouseGetWheelX:
public ScriptMethod {
1728 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1729 miniScript(miniScript) {}
1730 const string getMethodName()
override {
1731 return "input.mouse.getWheelX";
1733 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1736 const vector<string>& getContextFunctions() {
1737 return CONTEXTFUNCTIONS_ALL;
1740 registerMethod(
new ScriptMethodInputMouseGetWheelX(
this));
1744 class ScriptMethodInputMouseGetWheelY:
public ScriptMethod {
1749 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1750 miniScript(miniScript) {}
1751 const string getMethodName()
override {
1752 return "input.mouse.getWheelY";
1754 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1757 const vector<string>& getContextFunctions() {
1758 return CONTEXTFUNCTIONS_ALL;
1761 registerMethod(
new ScriptMethodInputMouseGetWheelY(
this));
1765 class ScriptMethodInputMouseGetWheelZ:
public ScriptMethod {
1770 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1771 miniScript(miniScript) {}
1772 const string getMethodName()
override {
1773 return "input.mouse.getWheelZ";
1775 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1778 const vector<string>& getContextFunctions() {
1779 return CONTEXTFUNCTIONS_ALL;
1782 registerMethod(
new ScriptMethodInputMouseGetWheelZ(
this));
1787 class ScriptMethodCameraGetLookFrom:
public ScriptMethod {
1793 miniScript(miniScript) {}
1794 const string getMethodName()
override {
1795 return "engine.camera.getLookFrom";
1797 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1800 const vector<string>& getContextFunctions() {
1804 registerMethod(
new ScriptMethodCameraGetLookFrom(
this));
1808 class ScriptMethodCameraSetLookFrom:
public ScriptMethod {
1815 { .type =
TYPE_VECTOR3, .name =
"lookFrom", .optional =
false, .reference =
false, .nullable =
false }
1817 ScriptVariableType::TYPE_NULL
1819 miniScript(miniScript) {}
1820 const string getMethodName()
override {
1821 return "engine.camera.setLookFrom";
1823 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1825 if (miniScript->
getVector3Value(argumentValues, 0, lookFrom) ==
true) {
1828 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1829 miniScript->startErrorScript();
1832 const vector<string>& getContextFunctions() {
1836 registerMethod(
new ScriptMethodCameraSetLookFrom(
this));
1840 class ScriptMethodCameraGetLookAt:
public ScriptMethod {
1846 miniScript(miniScript) {}
1847 const string getMethodName()
override {
1848 return "engine.camera.getLookAt";
1850 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1853 const vector<string>& getContextFunctions() {
1857 registerMethod(
new ScriptMethodCameraGetLookAt(
this));
1861 class ScriptMethodCameraSetLookAt:
public ScriptMethod {
1868 { .type =
TYPE_VECTOR3, .name =
"lookAt", .optional =
false, .reference =
false, .nullable =
false }
1870 ScriptVariableType::TYPE_NULL
1872 miniScript(miniScript) {}
1873 const string getMethodName()
override {
1874 return "engine.camera.setLookAt";
1876 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1881 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1882 miniScript->startErrorScript();
1885 const vector<string>& getContextFunctions() {
1889 registerMethod(
new ScriptMethodCameraSetLookAt(
this));
1893 class ScriptMethodCameraGetUpVector:
public ScriptMethod {
1899 miniScript(miniScript) {}
1900 const string getMethodName()
override {
1901 return "engine.camera.getUpVector";
1903 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1906 const vector<string>& getContextFunctions() {
1910 registerMethod(
new ScriptMethodCameraGetUpVector(
this));
1914 class ScriptMethodCameraSetUpVector:
public ScriptMethod {
1921 { .type =
TYPE_VECTOR3, .name =
"upVector", .optional =
false, .reference =
false, .nullable =
false }
1923 ScriptVariableType::TYPE_NULL
1925 miniScript(miniScript) {}
1926 const string getMethodName()
override {
1927 return "engine.camera.setUpVector";
1929 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1931 if (miniScript->
getVector3Value(argumentValues, 0, upVector) ==
true) {
1934 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1935 miniScript->startErrorScript();
1938 const vector<string>& getContextFunctions() {
1942 registerMethod(
new ScriptMethodCameraSetUpVector(
this));
1946 class ScriptMethodCameraComputeUpVector:
public ScriptMethod {
1953 { .type =
TYPE_VECTOR3, .name =
"lookFrom", .optional =
false, .reference =
false, .nullable =
false },
1954 { .type =
TYPE_VECTOR3, .name =
"lookAt", .optional =
false, .reference =
false, .nullable =
false }
1958 miniScript(miniScript) {}
1959 const string getMethodName()
override {
1960 return "engine.camera.computeUpVector";
1962 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1965 if (miniScript->
getVector3Value(argumentValues, 0, lookFrom) ==
true &&
1969 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1970 miniScript->startErrorScript();
1973 const vector<string>& getContextFunctions() {
1977 registerMethod(
new ScriptMethodCameraComputeUpVector(
this));
1981 class ScriptMethodCameraGetFovX:
public ScriptMethod {
1986 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1987 miniScript(miniScript) {}
1988 const string getMethodName()
override {
1989 return "engine.camera.getFovX";
1991 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1994 const vector<string>& getContextFunctions() {
1998 registerMethod(
new ScriptMethodCameraGetFovX(
this));
2002 class ScriptMethodCameraSetFovX:
public ScriptMethod {
2009 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"fovX", .optional =
false, .reference =
false, .nullable =
false }
2011 ScriptVariableType::TYPE_NULL
2013 miniScript(miniScript) {}
2014 const string getMethodName()
override {
2015 return "engine.camera.setFovX";
2017 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2019 if (miniScript->getFloatValue(argumentValues, 0, fovX) ==
true) {
2022 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2023 miniScript->startErrorScript();
2026 const vector<string>& getContextFunctions() {
2030 registerMethod(
new ScriptMethodCameraSetFovX(
this));
2035 class ScriptMethodTimingGetDeltaTime:
public ScriptMethod {
2040 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
2041 miniScript(miniScript) {}
2042 const string getMethodName()
override {
2043 return "engine.timing.getDeltaTime";
2045 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2048 const vector<string>& getContextFunctions() {
2052 registerMethod(
new ScriptMethodTimingGetDeltaTime(
this));
2056 class ScriptMethodTimingGetDeltaTimeSeconds:
public ScriptMethod {
2061 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
2062 miniScript(miniScript) {}
2063 const string getMethodName()
override {
2064 return "engine.timing.getDeltaTimeSeconds";
2066 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2069 const vector<string>& getContextFunctions() {
2073 registerMethod(
new ScriptMethodTimingGetDeltaTimeSeconds(
this));
2077 class ScriptMethodTimingGetAvarageFPS:
public ScriptMethod {
2082 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
2083 miniScript(miniScript) {}
2084 const string getMethodName()
override {
2085 return "engine.timing.getAvarageFPS";
2087 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2090 const vector<string>& getContextFunctions() {
2094 registerMethod(
new ScriptMethodTimingGetAvarageFPS(
this));
2099 class ScriptMethodEngineGetAnimationComputationReduction1Distance:
public ScriptMethod {
2103 ScriptMethodEngineGetAnimationComputationReduction1Distance(
LogicMiniScript* miniScript):
2104 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
2105 miniScript(miniScript) {}
2106 const string getMethodName()
override {
2107 return "engine.getAnimationComputationReduction1Distance";
2109 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2112 const vector<string>& getContextFunctions() {
2116 registerMethod(
new ScriptMethodEngineGetAnimationComputationReduction1Distance(
this));
2120 class ScriptMethodEngineSetAnimationComputationReduction1Distance:
public ScriptMethod {
2124 ScriptMethodEngineSetAnimationComputationReduction1Distance(
LogicMiniScript* miniScript):
2127 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"animationComputationReduction1Distance", .optional =
false, .reference =
false, .nullable =
false }
2129 ScriptVariableType::TYPE_NULL
2131 miniScript(miniScript) {}
2132 const string getMethodName()
override {
2133 return "engine.setAnimationComputationReduction1Distance";
2135 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2136 float animationComputationReduction1Distance;
2137 if (miniScript->getFloatValue(argumentValues, 0, animationComputationReduction1Distance) ==
true) {
2140 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2141 miniScript->startErrorScript();
2145 const vector<string>& getContextFunctions() {
2149 registerMethod(
new ScriptMethodEngineSetAnimationComputationReduction1Distance(
this));
2153 class ScriptMethodEngineGetAnimationComputationReduction2Distance:
public ScriptMethod {
2157 ScriptMethodEngineGetAnimationComputationReduction2Distance(
LogicMiniScript* miniScript):
2158 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
2159 miniScript(miniScript) {}
2160 const string getMethodName()
override {
2161 return "engine.getAnimationComputationReduction2Distance";
2163 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2166 const vector<string>& getContextFunctions() {
2170 registerMethod(
new ScriptMethodEngineGetAnimationComputationReduction2Distance(
this));
2174 class ScriptMethodEngineSetAnimationComputationReduction2Distance:
public ScriptMethod {
2178 ScriptMethodEngineSetAnimationComputationReduction2Distance(
LogicMiniScript* miniScript):
2181 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"animationComputationReduction2Distance", .optional =
false, .reference =
false, .nullable =
false }
2183 ScriptVariableType::TYPE_NULL
2185 miniScript(miniScript) {}
2186 const string getMethodName()
override {
2187 return "engine.setAnimationComputationReduction2Distance";
2189 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2190 float animationComputationReduction2Distance;
2191 if (miniScript->getFloatValue(argumentValues, 0, animationComputationReduction2Distance) ==
true) {
2194 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2195 miniScript->startErrorScript();
2199 const vector<string>& getContextFunctions() {
2203 registerMethod(
new ScriptMethodEngineSetAnimationComputationReduction2Distance(
this));
2207 class ScriptMethodEngineGetWidth:
public ScriptMethod {
2212 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
2213 miniScript(miniScript) {}
2214 const string getMethodName()
override {
2215 return "engine.getWidth";
2217 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2220 const vector<string>& getContextFunctions() {
2224 registerMethod(
new ScriptMethodEngineGetWidth(
this));
2228 class ScriptMethodEngineGetHeight:
public ScriptMethod {
2233 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
2234 miniScript(miniScript) {}
2235 const string getMethodName()
override {
2236 return "engine.getHeight";
2238 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2241 const vector<string>& getContextFunctions() {
2245 registerMethod(
new ScriptMethodEngineGetHeight(
this));
2249 class ScriptMethodEngineDumpEntities:
public ScriptMethod {
2254 ScriptMethod({}, ScriptVariableType::TYPE_NULL),
2255 miniScript(miniScript) {}
2256 const string getMethodName()
override {
2257 return "engine.dumpEntities";
2259 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2262 const vector<string>& getContextFunctions() {
2266 registerMethod(
new ScriptMethodEngineDumpEntities(
this));
2270 class ScriptMethodEngineDumpShaders:
public ScriptMethod {
2275 ScriptMethod({}, ScriptVariableType::TYPE_NULL),
2276 miniScript(miniScript) {}
2277 const string getMethodName()
override {
2278 return "engine.dumpShaders";
2280 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2283 const vector<string>& getContextFunctions() {
2287 registerMethod(
new ScriptMethodEngineDumpShaders(
this));
2291 class ScriptMethodEngineGetEntityIdByMousePosition:
public ScriptMethod {
2295 ScriptMethodEngineGetEntityIdByMousePosition(
LogicMiniScript* miniScript):
2298 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"mouseX", .optional =
false, .reference =
false, .nullable =
false },
2299 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"mouseY", .optional =
false, .reference =
false, .nullable =
false }
2301 ScriptVariableType::TYPE_STRING
2303 miniScript(miniScript) {}
2304 const string getMethodName()
override {
2305 return "engine.getEntityIdByMousePosition";
2307 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2310 if (miniScript->getIntegerValue(argumentValues, 0,
mouseX) ==
true &&
2311 miniScript->getIntegerValue(argumentValues, 1,
mouseY) ==
true) {
2313 if (entity !=
nullptr) returnValue = entity->
getId();
2315 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2316 miniScript->startErrorScript();
2319 const vector<string>& getContextFunctions() {
2323 registerMethod(
new ScriptMethodEngineGetEntityIdByMousePosition(
this));
2327 class ScriptMethodEngineComputeWorldCoordinateByMousePosition:
public ScriptMethod {
2331 ScriptMethodEngineComputeWorldCoordinateByMousePosition(
LogicMiniScript* miniScript):
2334 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"mouseX", .optional =
false, .reference =
false, .nullable =
false },
2335 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"mouseY", .optional =
false, .reference =
false, .nullable =
false }
2339 miniScript(miniScript) {}
2340 const string getMethodName()
override {
2341 return "engine.computeWorldCoordinateByMousePosition";
2343 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2346 if (miniScript->getIntegerValue(argumentValues, 0,
mouseX) ==
true &&
2347 miniScript->getIntegerValue(argumentValues, 1,
mouseY) ==
true) {
2350 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2351 miniScript->startErrorScript();
2354 const vector<string>& getContextFunctions() {
2358 registerMethod(
new ScriptMethodEngineComputeWorldCoordinateByMousePosition(
this));
2362 class ScriptMethodEngineComputeScreenCoordinateByWorldCoordinate:
public ScriptMethod {
2366 ScriptMethodEngineComputeScreenCoordinateByWorldCoordinate(
LogicMiniScript* miniScript):
2369 { .type =
TYPE_VECTOR3, .name =
"worldCoodinate", .optional =
false, .reference =
false, .nullable =
false },
2370 { .type =
TYPE_VECTOR2, .name =
"screenCoordinate", .optional =
false, .reference =
true, .nullable =
false }
2372 ScriptVariableType::TYPE_BOOLEAN
2374 miniScript(miniScript) {}
2375 const string getMethodName()
override {
2376 return "engine.computeScreenCoordinateByWorldCoordinate";
2378 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2380 if (argumentValues.size() == 2 &&
2381 miniScript->
getVector3Value(argumentValues, 0, worldCoodinate) ==
true) {
2384 miniScript->
setValue(argumentValues[1], screenCoordinate);
2387 returnValue =
false;
2390 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2391 miniScript->startErrorScript();
2394 const vector<string>& getContextFunctions() {
2398 registerMethod(
new ScriptMethodEngineComputeScreenCoordinateByWorldCoordinate(
this));
2402 class ScriptMethodEntityGetTransform:
public ScriptMethod {
2409 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2410 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2414 miniScript(miniScript) {}
2415 const string getMethodName()
override {
2416 return "engine.entity.getTransform";
2418 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2420 string childEntityId;
2421 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2422 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2423 auto entity = miniScript->
getEntity(entityId, childEntityId);
2424 if (entity !=
nullptr) {
2425 miniScript->
setValue(returnValue, entity->getTransform());
2427 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2430 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2431 miniScript->startErrorScript();
2434 const vector<string>& getContextFunctions() {
2438 registerMethod(
new ScriptMethodEntityGetTransform(
this));
2442 class ScriptMethodEntitySetTransform:
public ScriptMethod {
2449 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2450 { .type =
TYPE_TRANSFORM, .name =
"transform", .optional =
false, .reference =
false, .nullable =
false },
2451 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2453 ScriptVariableType::TYPE_NULL
2455 miniScript(miniScript) {}
2456 const string getMethodName()
override {
2457 return "engine.entity.setTransform";
2459 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2462 string childEntityId;
2463 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2465 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
2466 auto entity = miniScript->
getEntity(entityId, childEntityId);
2467 if (entity !=
nullptr) {
2470 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2473 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2474 miniScript->startErrorScript();
2477 const vector<string>& getContextFunctions() {
2481 registerMethod(
new ScriptMethodEntitySetTransform(
this));
2485 class ScriptMethodEntityIsEnabled:
public ScriptMethod {
2492 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2493 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2495 ScriptVariableType::TYPE_BOOLEAN
2497 miniScript(miniScript) {}
2498 const string getMethodName()
override {
2499 return "engine.entity.isEnabled";
2501 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2503 string childEntityId;
2504 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2505 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2506 auto entity = miniScript->
getEntity(entityId, childEntityId);
2507 if (entity !=
nullptr) {
2510 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2513 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2514 miniScript->startErrorScript();
2517 const vector<string>& getContextFunctions() {
2521 registerMethod(
new ScriptMethodEntityIsEnabled(
this));
2525 class ScriptMethodEntitySetEnabled:
public ScriptMethod {
2532 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2533 { .type = ScriptVariableType::TYPE_BOOLEAN, .name =
"enabled", .optional =
false, .reference =
false, .nullable =
false },
2534 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2536 ScriptVariableType::TYPE_NULL
2538 miniScript(miniScript) {}
2539 const string getMethodName()
override {
2540 return "engine.entity.setEnabled";
2542 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2545 string childEntityId;
2546 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2547 miniScript->getBooleanValue(argumentValues, 1, enabled) ==
true &&
2548 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
2549 auto entity = miniScript->
getEntity(entityId, childEntityId);
2550 if (entity !=
nullptr) {
2553 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2556 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2557 miniScript->startErrorScript();
2560 const vector<string>& getContextFunctions() {
2564 registerMethod(
new ScriptMethodEntitySetEnabled(
this));
2568 class ScriptMethodEntityIsPickable:
public ScriptMethod {
2575 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2576 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2578 ScriptVariableType::TYPE_BOOLEAN
2580 miniScript(miniScript) {}
2581 const string getMethodName()
override {
2582 return "engine.entity.isPickable";
2584 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2586 string childEntityId;
2587 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2588 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2589 auto entity = miniScript->
getEntity(entityId, childEntityId);
2590 if (entity !=
nullptr) {
2593 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2596 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2597 miniScript->startErrorScript();
2600 const vector<string>& getContextFunctions() {
2604 registerMethod(
new ScriptMethodEntityIsPickable(
this));
2608 class ScriptMethodEntitySetPickable:
public ScriptMethod {
2615 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2616 { .type = ScriptVariableType::TYPE_BOOLEAN, .name =
"pickable", .optional =
false, .reference =
false, .nullable =
false },
2617 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2619 ScriptVariableType::TYPE_NULL
2621 miniScript(miniScript) {}
2622 const string getMethodName()
override {
2623 return "engine.entity.setPickable";
2625 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2628 string childEntityId;
2629 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2630 miniScript->getBooleanValue(argumentValues, 1, pickable) ==
true &&
2631 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
2632 auto entity = miniScript->
getEntity(entityId, childEntityId);
2633 if (entity !=
nullptr) {
2636 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2639 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2640 miniScript->startErrorScript();
2643 const vector<string>& getContextFunctions() {
2647 registerMethod(
new ScriptMethodEntitySetPickable(
this));
2651 class ScriptMethodEntityGetEffectColorMul:
public ScriptMethod {
2658 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2659 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2663 miniScript(miniScript) {}
2664 const string getMethodName()
override {
2665 return "engine.entity.getEffectColorMul";
2667 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2669 string childEntityId;
2670 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2671 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2672 auto entity = miniScript->
getEntity(entityId, childEntityId);
2673 if (entity !=
nullptr) {
2675 miniScript->
setValue(returnValue,
Vector4(effectColorMul.getRed(), effectColorMul.getGreen(), effectColorMul.getBlue(), effectColorMul.getAlpha()));
2677 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2680 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2681 miniScript->startErrorScript();
2684 const vector<string>& getContextFunctions() {
2688 registerMethod(
new ScriptMethodEntityGetEffectColorMul(
this));
2692 class ScriptMethodEntitySetEffectColorMul:
public ScriptMethod {
2699 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2700 { .type =
TYPE_VECTOR4, .name =
"effectColorMul", .optional =
false, .reference =
false, .nullable =
false },
2701 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2703 ScriptVariableType::TYPE_NULL
2705 miniScript(miniScript) {}
2706 const string getMethodName()
override {
2707 return "engine.entity.setEffectColorMul";
2709 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2712 string childEntityId;
2713 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2714 miniScript->
getVector4Value(argumentValues, 1, effectColorMul) ==
true &&
2715 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
2716 auto entity = miniScript->
getEntity(entityId, childEntityId);
2717 if (entity !=
nullptr) {
2720 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2723 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2724 miniScript->startErrorScript();
2727 const vector<string>& getContextFunctions() {
2731 registerMethod(
new ScriptMethodEntitySetEffectColorMul(
this));
2735 class ScriptMethodEntityGetEffectColorAdd:
public ScriptMethod {
2742 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2743 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2747 miniScript(miniScript) {}
2748 const string getMethodName()
override {
2749 return "engine.entity.getEffectColorAdd";
2751 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2753 string childEntityId;
2754 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2755 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2756 auto entity = miniScript->
getEntity(entityId, childEntityId);
2757 if (entity !=
nullptr) {
2759 miniScript->
setValue(returnValue,
Vector4(effectColorAdd.getRed(), effectColorAdd.getGreen(), effectColorAdd.getBlue(), effectColorAdd.getAlpha()));
2761 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2764 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2765 miniScript->startErrorScript();
2768 const vector<string>& getContextFunctions() {
2772 registerMethod(
new ScriptMethodEntityGetEffectColorAdd(
this));
2776 class ScriptMethodEntitySetEffectColorAdd:
public ScriptMethod {
2783 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2784 { .type =
TYPE_VECTOR4, .name =
"effectColorAdd", .optional =
false, .reference =
false, .nullable =
false },
2785 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2787 ScriptVariableType::TYPE_NULL
2789 miniScript(miniScript) {}
2790 const string getMethodName()
override {
2791 return "engine.entity.setEffectColorAdd";
2793 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2796 string childEntityId;
2797 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2798 miniScript->
getVector4Value(argumentValues, 1, effectColorAdd) ==
true &&
2799 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
2800 auto entity = miniScript->
getEntity(entityId, childEntityId);
2801 if (entity !=
nullptr) {
2804 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2807 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2808 miniScript->startErrorScript();
2811 const vector<string>& getContextFunctions() {
2815 registerMethod(
new ScriptMethodEntitySetEffectColorAdd(
this));
2819 class ScriptMethodEntityGetAnimation:
public ScriptMethod {
2826 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2827 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false }
2829 ScriptVariableType::TYPE_STRING
2831 miniScript(miniScript) {}
2832 const string getMethodName()
override {
2833 return "engine.entity.getAnimation";
2835 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2837 string childEntityId;
2838 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2839 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2840 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
2841 if (
object !=
nullptr) {
2842 miniScript->
setValue(returnValue, object->getAnimation());
2844 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2847 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2848 miniScript->startErrorScript();
2851 const vector<string>& getContextFunctions() {
2855 registerMethod(
new ScriptMethodEntityGetAnimation(
this));
2859 class ScriptMethodEntitySetAnimation:
public ScriptMethod {
2866 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2867 { .type = ScriptVariableType::TYPE_STRING, .name =
"animation", .optional =
false, .reference =
false, .nullable =
false },
2868 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"speed", .optional =
true, .reference =
false, .nullable =
false },
2869 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
2871 ScriptVariableType::TYPE_NULL
2873 miniScript(miniScript) {}
2874 const string getMethodName()
override {
2875 return "engine.entity.setAnimation";
2877 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2881 string childEntityId;
2882 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2883 miniScript->getStringValue(argumentValues, 1, animation) ==
true &&
2884 miniScript->getFloatValue(argumentValues, 2, speed,
true) ==
true &&
2885 miniScript->getStringValue(argumentValues, 3, childEntityId,
true) ==
true) {
2886 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
2887 if (
object !=
nullptr) {
2890 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2893 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2894 miniScript->startErrorScript();
2897 const vector<string>& getContextFunctions() {
2901 registerMethod(
new ScriptMethodEntitySetAnimation(
this));
2905 class ScriptMethodEntitySetAnimationSpeed:
public ScriptMethod {
2912 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2913 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"speed", .optional =
false, .reference =
false, .nullable =
false },
2914 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
2916 ScriptVariableType::TYPE_NULL
2918 miniScript(miniScript) {}
2919 const string getMethodName()
override {
2920 return "engine.entity.setAnimationSpeed";
2922 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2925 string childEntityId;
2926 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2927 miniScript->getFloatValue(argumentValues, 1, speed) ==
true &&
2928 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
2929 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
2930 if (
object !=
nullptr) {
2933 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2936 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2937 miniScript->startErrorScript();
2940 const vector<string>& getContextFunctions() {
2944 registerMethod(
new ScriptMethodEntitySetAnimationSpeed(
this));
2948 class ScriptMethodEntityGetAnimationTime:
public ScriptMethod {
2955 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2956 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
2958 ScriptVariableType::TYPE_FLOAT
2960 miniScript(miniScript) {}
2961 const string getMethodName()
override {
2962 return "engine.entity.getAnimationTime";
2964 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2966 string childEntityId;
2967 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
2968 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
2969 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
2970 if (
object !=
nullptr) {
2971 miniScript->
setValue(returnValue, object->getAnimationTime());
2973 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
2976 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2977 miniScript->startErrorScript();
2980 const vector<string>& getContextFunctions() {
2984 registerMethod(
new ScriptMethodEntityGetAnimationTime(
this));
2988 class ScriptMethodEntityHasOverlayAnimation:
public ScriptMethod {
2995 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
2996 { .type = ScriptVariableType::TYPE_STRING, .name =
"animation", .optional =
false, .reference =
false, .nullable =
false },
2997 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
2999 ScriptVariableType::TYPE_BOOLEAN
3001 miniScript(miniScript) {}
3002 const string getMethodName()
override {
3003 return "engine.entity.hasOverlayAnimation";
3005 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3008 string childEntityId;
3009 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3010 miniScript->getStringValue(argumentValues, 1, animation) ==
true &&
3011 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3012 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3013 if (
object !=
nullptr) {
3016 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3019 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3020 miniScript->startErrorScript();
3023 const vector<string>& getContextFunctions() {
3027 registerMethod(
new ScriptMethodEntityHasOverlayAnimation(
this));
3031 class ScriptMethodEntityAddOverlayAnimation:
public ScriptMethod {
3038 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3039 { .type = ScriptVariableType::TYPE_STRING, .name =
"animation", .optional =
false, .reference =
false, .nullable =
false },
3040 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3042 ScriptVariableType::TYPE_NULL
3044 miniScript(miniScript) {}
3045 const string getMethodName()
override {
3046 return "engine.entity.addOverlayAnimation";
3048 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3051 string childEntityId;
3052 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3053 miniScript->getStringValue(argumentValues, 1, animation) ==
true &&
3054 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3055 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3056 if (
object !=
nullptr) {
3059 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3062 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3063 miniScript->startErrorScript();
3066 const vector<string>& getContextFunctions() {
3070 registerMethod(
new ScriptMethodEntityAddOverlayAnimation(
this));
3074 class ScriptMethodEntityRemoveOverlayAnimation:
public ScriptMethod {
3078 ScriptMethodEntityRemoveOverlayAnimation(
LogicMiniScript* miniScript):
3081 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3082 { .type = ScriptVariableType::TYPE_STRING, .name =
"animation", .optional =
false, .reference =
false, .nullable =
false },
3083 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3085 ScriptVariableType::TYPE_NULL
3087 miniScript(miniScript) {}
3088 const string getMethodName()
override {
3089 return "engine.entity.removeOverlayAnimation";
3091 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3094 string childEntityId;
3095 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3096 miniScript->getStringValue(argumentValues, 1, animation) ==
true &&
3097 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3098 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3099 if (
object !=
nullptr) {
3102 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3105 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3106 miniScript->startErrorScript();
3109 const vector<string>& getContextFunctions() {
3113 registerMethod(
new ScriptMethodEntityRemoveOverlayAnimation(
this));
3117 class ScriptMethodEntityRemoveFinishedOverlayAnimations:
public ScriptMethod {
3121 ScriptMethodEntityRemoveFinishedOverlayAnimations(
LogicMiniScript* miniScript):
3124 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3125 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3127 ScriptVariableType::TYPE_NULL
3129 miniScript(miniScript) {}
3130 const string getMethodName()
override {
3131 return "engine.entity.removeFinishedOverlayAnimations";
3133 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3135 string childEntityId;
3136 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3137 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
3138 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3139 if (
object !=
nullptr) {
3142 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3145 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3146 miniScript->startErrorScript();
3149 const vector<string>& getContextFunctions() {
3153 registerMethod(
new ScriptMethodEntityRemoveFinishedOverlayAnimations(
this));
3157 class ScriptMethodEntityRemoveOverlayAnimations:
public ScriptMethod {
3161 ScriptMethodEntityRemoveOverlayAnimations(
LogicMiniScript* miniScript):
3164 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3165 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3167 ScriptVariableType::TYPE_NULL
3169 miniScript(miniScript) {}
3170 const string getMethodName()
override {
3171 return "engine.entity.removeOverlayAnimations";
3173 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3175 string childEntityId;
3176 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3177 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
3178 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3179 if (
object !=
nullptr) {
3182 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3185 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3186 miniScript->startErrorScript();
3189 const vector<string>& getContextFunctions() {
3193 registerMethod(
new ScriptMethodEntityRemoveOverlayAnimations(
this));
3197 class ScriptMethodEntityGetOverlayAnimationTime:
public ScriptMethod {
3201 ScriptMethodEntityGetOverlayAnimationTime(
LogicMiniScript* miniScript):
3204 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3205 { .type = ScriptVariableType::TYPE_STRING, .name =
"animation", .optional =
false, .reference =
false, .nullable =
false },
3206 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3208 ScriptVariableType::TYPE_FLOAT
3210 miniScript(miniScript) {}
3211 const string getMethodName()
override {
3212 return "engine.entity.getOverlayAnimationTime";
3214 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3217 string childEntityId;
3218 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3219 miniScript->getStringValue(argumentValues, 1, animation) ==
true &&
3220 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3221 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3222 if (
object !=
nullptr) {
3223 miniScript->
setValue(returnValue, object->getOverlayAnimationTime(animation));
3225 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3228 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3229 miniScript->startErrorScript();
3232 const vector<string>& getContextFunctions() {
3236 registerMethod(
new ScriptMethodEntityGetOverlayAnimationTime(
this));
3240 class ScriptMethodEntityGetNodeTransformMatrix:
public ScriptMethod {
3244 ScriptMethodEntityGetNodeTransformMatrix(
LogicMiniScript* miniScript):
3247 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3248 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
3249 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3253 miniScript(miniScript) {}
3254 const string getMethodName()
override {
3255 return "engine.entity.getNodeTransformMatrix";
3257 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3260 string childEntityId;
3261 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3262 miniScript->getStringValue(argumentValues, 1, nodeId) ==
true &&
3263 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3264 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3265 if (
object !=
nullptr) {
3266 miniScript->
setValue(returnValue, object->getNodeTransformMatrix(nodeId));
3268 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3271 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3272 miniScript->startErrorScript();
3275 const vector<string>& getContextFunctions() {
3279 registerMethod(
new ScriptMethodEntityGetNodeTransformMatrix(
this));
3283 class ScriptMethodEntityGetNodeTransform:
public ScriptMethod {
3290 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3291 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
3292 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3296 miniScript(miniScript) {}
3297 const string getMethodName()
override {
3298 return "engine.entity.getNodeTransform";
3300 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3303 string childEntityId;
3304 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3305 miniScript->getStringValue(argumentValues, 1, nodeId) ==
true &&
3306 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3307 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3308 if (
object !=
nullptr) {
3310 transform.
fromMatrix(object->getNodeTransformMatrix(nodeId), RotationOrder::ZYX);
3311 miniScript->
setValue(returnValue, transform);
3313 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3316 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3317 miniScript->startErrorScript();
3320 const vector<string>& getContextFunctions() {
3324 registerMethod(
new ScriptMethodEntityGetNodeTransform(
this));
3328 class ScriptMethodEntitySetNodeTransformMatrix:
public ScriptMethod {
3332 ScriptMethodEntitySetNodeTransformMatrix(
LogicMiniScript* miniScript):
3335 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3336 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
3337 { .type =
TYPE_MATRIX4x4, .name =
"matrix", .optional =
false, .reference =
false, .nullable =
false },
3338 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3340 ScriptVariableType::TYPE_NULL
3342 miniScript(miniScript) {}
3343 const string getMethodName()
override {
3344 return "engine.entity.setNodeTransformMatrix";
3346 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3350 string childEntityId;
3351 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3352 miniScript->getStringValue(argumentValues, 1, nodeId) ==
true &&
3354 miniScript->getStringValue(argumentValues, 3, childEntityId,
true) ==
true) {
3355 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3356 if (
object !=
nullptr) {
3359 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3362 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3363 miniScript->startErrorScript();
3366 const vector<string>& getContextFunctions() {
3370 registerMethod(
new ScriptMethodEntitySetNodeTransformMatrix(
this));
3374 class ScriptMethodEntitySetNodeTransform:
public ScriptMethod {
3381 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3382 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
3383 { .type =
TYPE_TRANSFORM, .name =
"transform", .optional =
false, .reference =
false, .nullable =
false },
3384 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3386 ScriptVariableType::TYPE_NULL
3388 miniScript(miniScript) {}
3389 const string getMethodName()
override {
3390 return "engine.entity.setNodeTransform";
3392 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3396 string childEntityId;
3397 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3398 miniScript->getStringValue(argumentValues, 1, nodeId) ==
true &&
3400 miniScript->getStringValue(argumentValues, 3, childEntityId,
true) ==
true) {
3401 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3402 if (
object !=
nullptr) {
3405 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3408 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3409 miniScript->startErrorScript();
3412 const vector<string>& getContextFunctions() {
3416 registerMethod(
new ScriptMethodEntitySetNodeTransform(
this));
3420 class ScriptMethodEntityUnsetNodeTransformMatrix:
public ScriptMethod {
3424 ScriptMethodEntityUnsetNodeTransformMatrix(
LogicMiniScript* miniScript):
3427 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3428 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
3429 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3431 ScriptVariableType::TYPE_NULL
3433 miniScript(miniScript) {}
3434 const string getMethodName()
override {
3435 return "engine.entity.unsetNodeTransformMatrix";
3437 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3440 string childEntityId;
3441 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3442 miniScript->getStringValue(argumentValues, 1, nodeId) ==
true &&
3443 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3444 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3445 if (
object !=
nullptr) {
3448 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3451 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3452 miniScript->startErrorScript();
3455 const vector<string>& getContextFunctions() {
3459 registerMethod(
new ScriptMethodEntityUnsetNodeTransformMatrix(
this));
3463 class ScriptMethodEntityUnsetNodeTransform:
public ScriptMethod {
3470 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3471 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
3472 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3474 ScriptVariableType::TYPE_NULL
3476 miniScript(miniScript) {}
3477 const string getMethodName()
override {
3478 return "engine.entity.unsetNodeTransform";
3480 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3483 string childEntityId;
3484 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3485 miniScript->getStringValue(argumentValues, 1, nodeId) ==
true &&
3486 miniScript->getStringValue(argumentValues, 2, childEntityId,
true) ==
true) {
3487 auto object =
dynamic_cast<Object*
>(miniScript->
getEntity(entityId, childEntityId));
3488 if (
object !=
nullptr) {
3491 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": object entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3494 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3495 miniScript->startErrorScript();
3498 const vector<string>& getContextFunctions() {
3502 registerMethod(
new ScriptMethodEntityUnsetNodeTransform(
this));
3506 class ScriptMethodEntityEmitParticles:
public ScriptMethod {
3513 { .type = ScriptVariableType::TYPE_STRING, .name =
"entityId", .optional =
false, .reference =
false, .nullable =
false },
3514 { .type = ScriptVariableType::TYPE_STRING, .name =
"childEntityId", .optional =
true, .reference =
false, .nullable =
false },
3516 ScriptVariableType::TYPE_INTEGER
3518 miniScript(miniScript) {}
3519 const string getMethodName()
override {
3520 return "engine.entity.emitParticles";
3522 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3524 string childEntityId;
3525 if (miniScript->getStringValue(argumentValues, 0, entityId) ==
true &&
3526 miniScript->getStringValue(argumentValues, 1, childEntityId,
true) ==
true) {
3528 if (entity !=
nullptr) {
3529 returnValue =
static_cast<int64_t
>(entity->emitParticles());
3531 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": particle system entity not found: " + (childEntityId.empty() ==
true?entityId:childEntityId +
"@" + entityId));
3534 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
3535 miniScript->startErrorScript();
3538 const vector<string>& getContextFunctions() {
3542 registerMethod(
new ScriptMethodEntityEmitParticles(
this));
3547 class ScriptMethodBodyTYPE_STATIC:
public ScriptMethod {
3552 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3553 miniScript(miniScript) {}
3554 const string getMethodName()
override {
3555 return "world.body.TYPE_STATIC";
3557 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3558 returnValue =
static_cast<int64_t
>(Body::BODYTYPE_STATIC);
3560 const vector<string>& getContextFunctions() {
3564 registerMethod(
new ScriptMethodBodyTYPE_STATIC(
this));
3568 class ScriptMethodBodyTYPE_DYNAMIC:
public ScriptMethod {
3573 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3574 miniScript(miniScript) {}
3575 const string getMethodName()
override {
3576 return "world.body.TYPE_DYNAMIC";
3578 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3579 returnValue =
static_cast<int64_t
>(Body::BODYTYPE_DYNAMIC);
3581 const vector<string>& getContextFunctions() {
3585 registerMethod(
new ScriptMethodBodyTYPE_DYNAMIC(
this));
3589 class ScriptMethodBodyTYPE_COLLISIONSTATIC:
public ScriptMethod {
3594 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3595 miniScript(miniScript) {}
3596 const string getMethodName()
override {
3597 return "world.body.TYPE_COLLISION_STATIC";
3599 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3600 returnValue =
static_cast<int64_t
>(Body::BODYTYPE_COLLISION_STATIC);
3602 const vector<string>& getContextFunctions() {
3606 registerMethod(
new ScriptMethodBodyTYPE_COLLISIONSTATIC(
this));
3610 class ScriptMethodBodyTYPE_COLLISIONDYNAMIC:
public ScriptMethod {
3615 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3616 miniScript(miniScript) {}
3617 const string getMethodName()
override {
3618 return "world.body.TYPE_COLLISION_DYNAMIC";
3620 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3621 returnValue =
static_cast<int64_t
>(Body::BODYTYPE_COLLISION_DYNAMIC);
3623 const vector<string>& getContextFunctions() {
3627 registerMethod(
new ScriptMethodBodyTYPE_COLLISIONDYNAMIC(
this));
3631 class ScriptMethodBodyCOLLISION_TYPEID_STATIC:
public ScriptMethod {
3636 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3637 miniScript(miniScript) {}
3638 const string getMethodName()
override {
3639 return "world.body.COLLISION_TYPEID_STATIC";
3641 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3642 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_STATIC);
3644 const vector<string>& getContextFunctions() {
3648 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_STATIC(
this));
3652 class ScriptMethodBodyCOLLISION_TYPEID_DYNAMIC:
public ScriptMethod {
3656 ScriptMethodBodyCOLLISION_TYPEID_DYNAMIC(
LogicMiniScript* miniScript):
3657 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3658 miniScript(miniScript) {}
3659 const string getMethodName()
override {
3660 return "world.body.COLLISION_TYPEID_DYNAMIC";
3662 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3663 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_DYNAMIC);
3665 const vector<string>& getContextFunctions() {
3669 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_DYNAMIC(
this));
3673 class ScriptMethodBodyCOLLISION_TYPEID_3:
public ScriptMethod {
3678 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3679 miniScript(miniScript) {}
3680 const string getMethodName()
override {
3681 return "world.body.COLLISION_TYPEID_3";
3683 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3684 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_3);
3686 const vector<string>& getContextFunctions() {
3690 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_3(
this));
3694 class ScriptMethodBodyCOLLISION_TYPEID_4:
public ScriptMethod {
3699 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3700 miniScript(miniScript) {}
3701 const string getMethodName()
override {
3702 return "world.body.COLLISION_TYPEID_4";
3704 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3705 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_4);
3707 const vector<string>& getContextFunctions() {
3711 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_4(
this));
3715 class ScriptMethodBodyCOLLISION_TYPEID_5:
public ScriptMethod {
3720 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3721 miniScript(miniScript) {}
3722 const string getMethodName()
override {
3723 return "world.body.COLLISION_TYPEID_5";
3725 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3726 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_5);
3728 const vector<string>& getContextFunctions() {
3732 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_5(
this));
3736 class ScriptMethodBodyCOLLISION_TYPEID_6:
public ScriptMethod {
3741 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3742 miniScript(miniScript) {}
3743 const string getMethodName()
override {
3744 return "world.body.COLLISION_TYPEID_6";
3746 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3747 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_6);
3749 const vector<string>& getContextFunctions() {
3753 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_6(
this));
3757 class ScriptMethodBodyCOLLISION_TYPEID_7:
public ScriptMethod {
3762 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3763 miniScript(miniScript) {}
3764 const string getMethodName()
override {
3765 return "world.body.COLLISION_TYPEID_7";
3767 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3768 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_7);
3770 const vector<string>& getContextFunctions() {
3774 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_7(
this));
3778 class ScriptMethodBodyCOLLISION_TYPEID_8:
public ScriptMethod {
3783 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3784 miniScript(miniScript) {}
3785 const string getMethodName()
override {
3786 return "world.body.COLLISION_TYPEID_8";
3788 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3789 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_8);
3791 const vector<string>& getContextFunctions() {
3795 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_8(
this));
3799 class ScriptMethodBodyCOLLISION_TYPEID_9:
public ScriptMethod {
3804 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3805 miniScript(miniScript) {}
3806 const string getMethodName()
override {
3807 return "world.body.COLLISION_TYPEID_9";
3809 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3810 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_9);
3812 const vector<string>& getContextFunctions() {
3816 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_9(
this));
3820 class ScriptMethodBodyCOLLISION_TYPEID_10:
public ScriptMethod {
3825 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3826 miniScript(miniScript) {}
3827 const string getMethodName()
override {
3828 return "world.body.COLLISION_TYPEID_10";
3830 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3831 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_10);
3833 const vector<string>& getContextFunctions() {
3837 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_10(
this));
3841 class ScriptMethodBodyCOLLISION_TYPEID_11:
public ScriptMethod {
3846 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3847 miniScript(miniScript) {}
3848 const string getMethodName()
override {
3849 return "world.body.COLLISION_TYPEID_11";
3851 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3852 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_11);
3854 const vector<string>& getContextFunctions() {
3858 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_11(
this));
3862 class ScriptMethodBodyCOLLISION_TYPEID_12:
public ScriptMethod {
3867 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3868 miniScript(miniScript) {}
3869 const string getMethodName()
override {
3870 return "world.body.COLLISION_TYPEID_12";
3872 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3873 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_12);
3875 const vector<string>& getContextFunctions() {
3879 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_12(
this));
3883 class ScriptMethodBodyCOLLISION_TYPEID_13:
public ScriptMethod {
3888 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3889 miniScript(miniScript) {}
3890 const string getMethodName()
override {
3891 return "world.body.COLLISION_TYPEID_13";
3893 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3894 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_13);
3896 const vector<string>& getContextFunctions() {
3900 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_13(
this));
3904 class ScriptMethodBodyCOLLISION_TYPEID_14:
public ScriptMethod {
3909 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3910 miniScript(miniScript) {}
3911 const string getMethodName()
override {
3912 return "world.body.COLLISION_TYPEID_14";
3914 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3915 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_14);
3917 const vector<string>& getContextFunctions() {
3921 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_14(
this));
3925 class ScriptMethodBodyCOLLISION_TYPEID_15:
public ScriptMethod {
3930 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3931 miniScript(miniScript) {}
3932 const string getMethodName()
override {
3933 return "world.body.COLLISION_TYPEID_15";
3935 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3936 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_15);
3938 const vector<string>& getContextFunctions() {
3942 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_15(
this));
3946 class ScriptMethodBodyCOLLISION_TYPEID_16:
public ScriptMethod {
3951 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3952 miniScript(miniScript) {}
3953 const string getMethodName()
override {
3954 return "world.body.COLLISION_TYPEID_16";
3956 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3957 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_16);
3959 const vector<string>& getContextFunctions() {
3963 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_16(
this));
3967 class ScriptMethodBodyCOLLISION_TYPEID_ALL:
public ScriptMethod {
3972 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
3973 miniScript(miniScript) {}
3974 const string getMethodName()
override {
3975 return "world.body.COLLISION_TYPEID_ALL";
3977 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
3978 returnValue =
static_cast<int64_t
>(Body::COLLISION_TYPEID_ALL);
3980 const vector<string>& getContextFunctions() {
3984 registerMethod(
new ScriptMethodBodyCOLLISION_TYPEID_ALL(
this));
3988 class ScriptMethodBodyIsEnabled:
public ScriptMethod {
3995 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
3997 ScriptVariableType::TYPE_BOOLEAN
3999 miniScript(miniScript) {}
4000 const string getMethodName()
override {
4001 return "world.body.isEnabled";
4003 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4005 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4007 if (body !=
nullptr) {
4010 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4013 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4014 miniScript->startErrorScript();
4017 const vector<string>& getContextFunctions() {
4021 registerMethod(
new ScriptMethodBodyIsEnabled(
this));
4025 class ScriptMethodBodySetEnabled:
public ScriptMethod {
4032 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4033 { .type = ScriptVariableType::TYPE_BOOLEAN, .name =
"enabled", .optional =
false, .reference =
false, .nullable =
false }
4035 ScriptVariableType::TYPE_NULL
4037 miniScript(miniScript) {}
4038 const string getMethodName()
override {
4039 return "world.body.setEnabled";
4041 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4044 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4045 miniScript->getBooleanValue(argumentValues, 1, enabled) ==
true) {
4047 if (body !=
nullptr) {
4050 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4053 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4054 miniScript->startErrorScript();
4057 const vector<string>& getContextFunctions() {
4061 registerMethod(
new ScriptMethodBodySetEnabled(
this));
4065 class ScriptMethodBodyGetType:
public ScriptMethod {
4072 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4074 ScriptVariableType::TYPE_INTEGER
4076 miniScript(miniScript) {}
4077 const string getMethodName()
override {
4078 return "world.body.getType";
4080 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4082 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4084 if (body !=
nullptr) {
4085 returnValue =
static_cast<int64_t
>(body->getType());
4087 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4090 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4091 miniScript->startErrorScript();
4094 const vector<string>& getContextFunctions() {
4098 registerMethod(
new ScriptMethodBodyGetType(
this));
4102 class ScriptMethodBodyGetCollisionTypeId:
public ScriptMethod {
4109 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4111 ScriptVariableType::TYPE_INTEGER
4113 miniScript(miniScript) {}
4114 const string getMethodName()
override {
4115 return "world.body.getCollisionTypeId";
4117 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4119 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4121 if (body !=
nullptr) {
4122 returnValue =
static_cast<int64_t
>(body->getCollisionTypeId());
4124 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4127 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4128 miniScript->startErrorScript();
4131 const vector<string>& getContextFunctions() {
4135 registerMethod(
new ScriptMethodBodyGetCollisionTypeId(
this));
4139 class ScriptMethodBodySetCollisionTypeId:
public ScriptMethod {
4146 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4147 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"collisionTypeId", .optional =
false, .reference =
false, .nullable =
false }
4149 ScriptVariableType::TYPE_NULL
4151 miniScript(miniScript) {}
4152 const string getMethodName()
override {
4153 return "world.body.setCollisionTypeId";
4155 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4157 int64_t collisionTypeId;
4158 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4159 miniScript->getIntegerValue(argumentValues, 1, collisionTypeId) ==
true) {
4161 if (body !=
nullptr) {
4164 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4167 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4168 miniScript->startErrorScript();
4171 const vector<string>& getContextFunctions() {
4175 registerMethod(
new ScriptMethodBodySetCollisionTypeId(
this));
4179 class ScriptMethodBodyGetCollisionTypeIds:
public ScriptMethod {
4186 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4188 ScriptVariableType::TYPE_INTEGER
4190 miniScript(miniScript) {}
4191 const string getMethodName()
override {
4192 return "world.body.getCollisionTypeIds";
4194 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4196 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4198 if (body !=
nullptr) {
4199 returnValue =
static_cast<int64_t
>(body->getCollisionTypeIds());
4201 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4204 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4205 miniScript->startErrorScript();
4208 const vector<string>& getContextFunctions() {
4212 registerMethod(
new ScriptMethodBodyGetCollisionTypeIds(
this));
4216 class ScriptMethodBodySetCollisionTypeIds:
public ScriptMethod {
4223 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4224 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"collisionTypeIds", .optional =
false, .reference =
false, .nullable =
false }
4226 ScriptVariableType::TYPE_NULL
4228 miniScript(miniScript) {}
4229 const string getMethodName()
override {
4230 return "world.body.setCollisionTypeIds";
4232 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4234 int64_t collisionTypeIds;
4235 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4236 miniScript->getIntegerValue(argumentValues, 1, collisionTypeIds) ==
true) {
4238 if (body !=
nullptr) {
4241 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4244 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4245 miniScript->startErrorScript();
4248 const vector<string>& getContextFunctions() {
4252 registerMethod(
new ScriptMethodBodySetCollisionTypeIds(
this));
4256 class ScriptMethodBodyGetLinearDamping:
public ScriptMethod {
4263 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4265 ScriptVariableType::TYPE_FLOAT
4267 miniScript(miniScript) {}
4268 const string getMethodName()
override {
4269 return "world.body.getLinearDamping";
4271 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4273 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4275 if (body !=
nullptr) {
4278 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4281 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4282 miniScript->startErrorScript();
4285 const vector<string>& getContextFunctions() {
4289 registerMethod(
new ScriptMethodBodyGetLinearDamping(
this));
4293 class ScriptMethodBodySetLinearDamping:
public ScriptMethod {
4300 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4301 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"linearDamping", .optional =
false, .reference =
false, .nullable =
false }
4303 ScriptVariableType::TYPE_NULL
4305 miniScript(miniScript) {}
4306 const string getMethodName()
override {
4307 return "world.body.setLinearDamping";
4309 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4311 float linearDamping;
4312 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4313 miniScript->getFloatValue(argumentValues, 1, linearDamping) ==
true) {
4315 if (body !=
nullptr) {
4318 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4321 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4322 miniScript->startErrorScript();
4325 const vector<string>& getContextFunctions() {
4329 registerMethod(
new ScriptMethodBodySetLinearDamping(
this));
4333 class ScriptMethodBodyGetAngularDamping:
public ScriptMethod {
4340 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4342 ScriptVariableType::TYPE_FLOAT
4344 miniScript(miniScript) {}
4345 const string getMethodName()
override {
4346 return "world.body.getAngularDamping";
4348 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4350 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4352 if (body !=
nullptr) {
4355 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4358 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4359 miniScript->startErrorScript();
4362 const vector<string>& getContextFunctions() {
4366 registerMethod(
new ScriptMethodBodyGetAngularDamping(
this));
4370 class ScriptMethodBodySetAngularDamping:
public ScriptMethod {
4377 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4378 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"angularDamping", .optional =
false, .reference =
false, .nullable =
false }
4380 ScriptVariableType::TYPE_NULL
4382 miniScript(miniScript) {}
4383 const string getMethodName()
override {
4384 return "world.body.setAngularDamping";
4386 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4388 float angularDamping;
4389 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4390 miniScript->getFloatValue(argumentValues, 1, angularDamping) ==
true) {
4392 if (body !=
nullptr) {
4395 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4398 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4399 miniScript->startErrorScript();
4402 const vector<string>& getContextFunctions() {
4406 registerMethod(
new ScriptMethodBodySetAngularDamping(
this));
4410 class ScriptMethodBodyGetLinearVelocity:
public ScriptMethod {
4417 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4421 miniScript(miniScript) {}
4422 const string getMethodName()
override {
4423 return "world.body.getLinearVelocity";
4425 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4427 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4429 if (body !=
nullptr) {
4430 miniScript->
setValue(returnValue, body->getLinearVelocity());
4432 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4435 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4436 miniScript->startErrorScript();
4439 const vector<string>& getContextFunctions() {
4443 registerMethod(
new ScriptMethodBodyGetLinearVelocity(
this));
4447 class ScriptMethodBodySetLinearVelocity:
public ScriptMethod {
4454 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4455 { .type =
TYPE_VECTOR3, .name =
"linearVelocity", .optional =
false, .reference =
false, .nullable =
false }
4457 ScriptVariableType::TYPE_NULL
4459 miniScript(miniScript) {}
4460 const string getMethodName()
override {
4461 return "world.body.setLinearVelocity";
4463 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4466 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4467 miniScript->
getVector3Value(argumentValues, 1, linearVelocity) ==
true) {
4469 if (body !=
nullptr) {
4472 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4475 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4476 miniScript->startErrorScript();
4479 const vector<string>& getContextFunctions() {
4483 registerMethod(
new ScriptMethodBodySetLinearVelocity(
this));
4487 class ScriptMethodBodyGetAngularVelocity:
public ScriptMethod {
4494 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4498 miniScript(miniScript) {}
4499 const string getMethodName()
override {
4500 return "world.body.getAngularVelocity";
4502 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4504 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4506 if (body !=
nullptr) {
4507 miniScript->
setValue(returnValue, body->getAngularVelocity());
4509 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4512 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4513 miniScript->startErrorScript();
4516 const vector<string>& getContextFunctions() {
4520 registerMethod(
new ScriptMethodBodyGetAngularVelocity(
this));
4524 class ScriptMethodBodySetAngularVelocity:
public ScriptMethod {
4531 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4532 { .type =
TYPE_VECTOR3, .name =
"angularVelocity", .optional =
false, .reference =
false, .nullable =
false }
4534 ScriptVariableType::TYPE_NULL
4536 miniScript(miniScript) {}
4537 const string getMethodName()
override {
4538 return "world.body.setAngularVelocity";
4540 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4543 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4544 miniScript->
getVector3Value(argumentValues, 1, angularVelocity) ==
true) {
4546 if (body !=
nullptr) {
4549 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4552 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4553 miniScript->startErrorScript();
4556 const vector<string>& getContextFunctions() {
4560 registerMethod(
new ScriptMethodBodySetAngularVelocity(
this));
4564 class ScriptMethodBodyAddForce:
public ScriptMethod {
4571 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4572 { .type =
TYPE_VECTOR3, .name =
"force", .optional =
false, .reference =
false, .nullable =
false },
4573 { .type =
TYPE_VECTOR3, .name =
"origin", .optional =
true, .reference =
false, .nullable =
false }
4575 ScriptVariableType::TYPE_NULL
4577 miniScript(miniScript) {}
4578 const string getMethodName()
override {
4579 return "world.body.addForce";
4581 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4585 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4587 miniScript->
getVector3Value(argumentValues, 2, forceOrigin,
true) ==
true) {
4589 if (body !=
nullptr) {
4590 if (argumentValues.size() == 2) {
4593 if (argumentValues.size() == 3) {
4594 body->addForce(forceOrigin, force);
4596 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4597 miniScript->startErrorScript();
4600 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4603 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4604 miniScript->startErrorScript();
4607 const vector<string>& getContextFunctions() {
4611 registerMethod(
new ScriptMethodBodyAddForce(
this));
4615 class ScriptMethodBodyAddTorque:
public ScriptMethod {
4622 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4623 { .type =
TYPE_VECTOR3, .name =
"torque", .optional =
false, .reference =
false, .nullable =
false }
4625 ScriptVariableType::TYPE_NULL
4627 miniScript(miniScript) {}
4628 const string getMethodName()
override {
4629 return "world.body.addTorque";
4631 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4634 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4637 if (body !=
nullptr) {
4640 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4643 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4644 miniScript->startErrorScript();
4647 const vector<string>& getContextFunctions() {
4651 registerMethod(
new ScriptMethodBodyAddTorque(
this));
4655 class ScriptMethodBodyGetTransform:
public ScriptMethod {
4662 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4666 miniScript(miniScript) {}
4667 const string getMethodName()
override {
4668 return "world.body.getTransform";
4670 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4672 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true) {
4674 if (body !=
nullptr) {
4678 while (transform.getRotationCount() > 3) transform.removeRotation(transform.getRotationCount() - 1);
4679 while (transform.getRotationCount() < 3) transform.addRotation(
Vector3(), 0.0f);
4680 transform.setRotationAxis(0,
Vector3(0.0f, 0.0f, 1.0f));
4681 transform.setRotationAxis(1,
Vector3(0.0f, 1.0f, 0.0f));
4682 transform.setRotationAxis(2,
Vector3(1.0f, 0.0f, 0.0f));
4683 transform.setRotationAngle(0, euler.getZ());
4684 transform.setRotationAngle(1, euler.getY());
4685 transform.setRotationAngle(2, euler.getX());
4687 miniScript->
setValue(returnValue, transform);
4689 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4692 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4693 miniScript->startErrorScript();
4696 const vector<string>& getContextFunctions() {
4700 registerMethod(
new ScriptMethodBodyGetTransform(
this));
4704 class ScriptMethodBodySetTransform:
public ScriptMethod {
4711 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false },
4712 { .type =
TYPE_TRANSFORM, .name =
"transform", .optional =
false, .reference =
false, .nullable =
false }
4714 ScriptVariableType::TYPE_NULL
4716 miniScript(miniScript) {}
4717 const string getMethodName()
override {
4718 return "world.body.setTransform";
4720 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4723 if (miniScript->getStringValue(argumentValues, 0, bodyId) ==
true &&
4726 if (body !=
nullptr) {
4729 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4732 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4733 miniScript->startErrorScript();
4736 const vector<string>& getContextFunctions() {
4740 registerMethod(
new ScriptMethodBodySetTransform(
this));
4744 class ScriptMethodWorldDetermineHeight:
public ScriptMethod {
4751 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"collisionTypeIds", .optional =
false, .reference =
false, .nullable =
false },
4752 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"stepUpMax", .optional =
false, .reference =
false, .nullable =
false },
4753 { .type =
TYPE_VECTOR3, .name =
"point", .optional =
false, .reference =
false, .nullable =
false },
4754 { .type =
TYPE_VECTOR3, .name =
"heightPoint", .optional =
false, .reference =
true, .nullable =
false },
4755 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
true, .reference =
true, .nullable =
false },
4756 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"minHeight", .optional =
true, .reference =
false, .nullable =
false },
4757 { .type = ScriptVariableType::TYPE_FLOAT, .name =
"maxHeight", .optional =
true, .reference =
false, .nullable =
false }
4759 ScriptVariableType::TYPE_BOOLEAN
4761 miniScript(miniScript) {}
4762 const string getMethodName()
override {
4763 return "world.determineHeight";
4765 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4766 int64_t collisionTypeIds;
4770 float minHeight = -10000.0f;
4771 float maxHeight = 10000.0f;
4772 if (miniScript->getIntegerValue(argumentValues, 0, collisionTypeIds) ==
true &&
4773 miniScript->getFloatValue(argumentValues, 1, stepUpMax) ==
true &&
4775 miniScript->
getVector3Value(argumentValues, 3, heightPoint) ==
true &&
4776 miniScript->getFloatValue(argumentValues, 5, minHeight,
true) ==
true &&
4777 miniScript->getFloatValue(argumentValues, 6, maxHeight,
true) ==
true) {
4779 if (body !=
nullptr) {
4780 miniScript->
setValue(argumentValues[3], heightPoint);
4781 if (argumentValues.size() >= 5) argumentValues[4].setValue(body->getId());
4784 returnValue =
false;
4787 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4788 miniScript->startErrorScript();
4791 const vector<string>& getContextFunctions() {
4795 registerMethod(
new ScriptMethodWorldDetermineHeight(
this));
4799 class ScriptMethodWorldDoRayCasting:
public ScriptMethod {
4806 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"collisionTypeIds", .optional =
false, .reference =
false, .nullable =
false },
4807 { .type =
TYPE_VECTOR3, .name =
"start", .optional =
false, .reference =
false, .nullable =
false },
4808 { .type =
TYPE_VECTOR3, .name =
"end", .optional =
false, .reference =
false, .nullable =
false },
4809 { .type =
TYPE_VECTOR3, .name =
"hitPoint", .optional =
false, .reference =
true, .nullable =
false },
4810 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
true, .reference =
true, .nullable =
false },
4811 { .type = ScriptVariableType::TYPE_STRING, .name =
"actorId", .optional =
true, .reference =
false, .nullable =
false },
4813 ScriptVariableType::TYPE_BOOLEAN
4815 miniScript(miniScript) {}
4816 const string getMethodName()
override {
4817 return "world.doRayCasting";
4819 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4820 int64_t collisionTypeIds;
4825 if (miniScript->getIntegerValue(argumentValues, 0, collisionTypeIds) ==
true &&
4828 miniScript->getStringValue(argumentValues, 5, actorId,
true) ==
true) {
4830 if (body !=
nullptr) {
4831 miniScript->
setValue(argumentValues[3], hitPoint);
4832 if (argumentValues.size() >= 5) argumentValues[4].setValue(body->getId());
4833 miniScript->
setValue(returnValue,
true);
4835 miniScript->
setValue(returnValue,
false);
4838 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4839 miniScript->startErrorScript();
4842 const vector<string>& getContextFunctions() {
4846 registerMethod(
new ScriptMethodWorldDoRayCasting(
this));
4850 class ScriptMethodWorldDoCollide:
public ScriptMethod {
4857 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId1", .optional =
false, .reference =
false, .nullable =
false },
4858 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId2", .optional =
false, .reference =
false, .nullable =
false }
4860 ScriptVariableType::TYPE_BOOLEAN
4862 miniScript(miniScript) {}
4863 const string getMethodName()
override {
4864 return "world.doCollide";
4866 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4869 if (miniScript->getStringValue(argumentValues, 0, bodyId1) ==
true &&
4870 miniScript->getStringValue(argumentValues, 1, bodyId2) ==
true) {
4873 if (body1 ==
nullptr) {
4874 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body1 not found: " + bodyId1);
4876 if (body2 ==
nullptr) {
4877 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body2 not found: " + bodyId2);
4882 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4883 miniScript->startErrorScript();
4886 const vector<string>& getContextFunctions() {
4890 registerMethod(
new ScriptMethodWorldDoCollide(
this));
4894 class ScriptMethodWorldDoesCollideWith:
public ScriptMethod {
4901 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"collisionTypeIds", .optional =
false, .reference =
false, .nullable =
false },
4902 { .type = ScriptVariableType::TYPE_STRING, .name =
"bodyId", .optional =
false, .reference =
false, .nullable =
false }
4904 ScriptVariableType::TYPE_ARRAY
4906 miniScript(miniScript) {}
4907 const string getMethodName()
override {
4908 return "world.doesCollideWith";
4910 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4911 int64_t collisionTypeIds;
4913 if (miniScript->getIntegerValue(argumentValues, 0, collisionTypeIds) ==
true &&
4914 miniScript->getStringValue(argumentValues, 1, bodyId) ==
true) {
4916 if (body ==
nullptr) {
4917 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": body not found: " + bodyId);
4919 vector<Body*> collisionBodies;
4921 returnValue.setType(EngineMiniScript::TYPE_ARRAY);
4922 for (
auto collisionBody: collisionBodies) {
4923 returnValue.pushArrayEntry(collisionBody->getId());
4927 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
4928 miniScript->startErrorScript();
4931 const vector<string>& getContextFunctions() {
4935 registerMethod(
new ScriptMethodWorldDoesCollideWith(
this));
4940 class ScriptMethodPathFindingSTATE_IDLE:
public ScriptMethod {
4945 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
4946 miniScript(miniScript) {}
4947 const string getMethodName()
override {
4948 return "pathfinding.STATE_IDLE";
4950 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4953 const vector<string>& getContextFunctions() {
4957 registerMethod(
new ScriptMethodPathFindingSTATE_IDLE(
this));
4961 class ScriptMethodPathFindingSTATE_TRYLOCK_FAILED:
public ScriptMethod {
4965 ScriptMethodPathFindingSTATE_TRYLOCK_FAILED(
LogicMiniScript* miniScript):
4966 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
4967 miniScript(miniScript) {}
4968 const string getMethodName()
override {
4969 return "pathfinding.STATE_TRYLOCK_FAILED";
4971 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4974 const vector<string>& getContextFunctions() {
4978 registerMethod(
new ScriptMethodPathFindingSTATE_TRYLOCK_FAILED(
this));
4982 class ScriptMethodPathFindingSTATE_PATHFINDING_OTHER:
public ScriptMethod {
4986 ScriptMethodPathFindingSTATE_PATHFINDING_OTHER(
LogicMiniScript* miniScript):
4987 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
4988 miniScript(miniScript) {}
4989 const string getMethodName()
override {
4990 return "pathfinding.STATE_PATHFINDING_OTHER";
4992 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
4995 const vector<string>& getContextFunctions() {
4999 registerMethod(
new ScriptMethodPathFindingSTATE_PATHFINDING_OTHER(
this));
5003 class ScriptMethodPathFindingSTATE_PATHFINDING:
public ScriptMethod {
5007 ScriptMethodPathFindingSTATE_PATHFINDING(
LogicMiniScript* miniScript):
5008 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
5009 miniScript(miniScript) {}
5010 const string getMethodName()
override {
5011 return "pathfinding.STATE_PATHFINDING";
5013 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5016 const vector<string>& getContextFunctions() {
5020 registerMethod(
new ScriptMethodPathFindingSTATE_PATHFINDING(
this));
5024 class ScriptMethodPathFindingSTATE_PATHFINDING_FAILED:
public ScriptMethod {
5028 ScriptMethodPathFindingSTATE_PATHFINDING_FAILED(
LogicMiniScript* miniScript):
5029 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
5030 miniScript(miniScript) {}
5031 const string getMethodName()
override {
5032 return "pathfinding.STATE_PATHFINDING_FAILED";
5034 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5037 const vector<string>& getContextFunctions() {
5041 registerMethod(
new ScriptMethodPathFindingSTATE_PATHFINDING_FAILED(
this));
5045 class ScriptMethodPathFindingSTATE_PATHFINDING_SUCCESS:
public ScriptMethod {
5049 ScriptMethodPathFindingSTATE_PATHFINDING_SUCCESS(
LogicMiniScript* miniScript):
5050 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
5051 miniScript(miniScript) {}
5052 const string getMethodName()
override {
5053 return "pathfinding.STATE_PATHFINDING_SUCCESS";
5055 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5058 const vector<string>& getContextFunctions() {
5062 registerMethod(
new ScriptMethodPathFindingSTATE_PATHFINDING_SUCCESS(
this));
5066 class ScriptMethodPathFindingFindPath:
public ScriptMethod {
5073 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
5074 { .type =
TYPE_VECTOR3, .name =
"startPosition", .optional =
false, .reference =
false, .nullable =
false },
5075 { .type =
TYPE_VECTOR3, .name =
"endPosition", .optional =
false, .reference =
false, .nullable =
false },
5076 { .type = ScriptVariableType::TYPE_ARRAY, .name =
"path", .optional =
false, .reference =
true, .nullable =
false },
5078 ScriptVariableType::TYPE_INTEGER
5080 miniScript(miniScript) {}
5081 const string getMethodName()
override {
5082 return "pathfinding.findPath";
5084 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5088 if (argumentValues.size() == 4 &&
5089 miniScript->getStringValue(argumentValues, 0, logicId) ==
true &&
5090 miniScript->
getVector3Value(argumentValues, 1, startPosition) ==
true &&
5091 miniScript->
getVector3Value(argumentValues, 2, endPosition) ==
true) {
5092 argumentValues[3].setType(EngineMiniScript::TYPE_ARRAY);
5093 vector<Vector3> path;
5095 returnValue =
static_cast<int64_t
>(pathFindingState);
5096 for (
const auto& position: path) {
5097 MiniScript::ScriptVariable positionVariable;
5098 miniScript->
setValue(positionVariable, position);
5099 argumentValues[3].pushArrayEntry(positionVariable);
5102 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
5103 miniScript->startErrorScript();
5106 const vector<string>& getContextFunctions() {
5110 registerMethod(
new ScriptMethodPathFindingFindPath(
this));
5115 class ScriptMethodSceneGetWidth:
public ScriptMethod {
5120 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
5121 miniScript(miniScript) {}
5122 const string getMethodName()
override {
5123 return "scene.getWidth";
5125 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5128 const vector<string>& getContextFunctions() {
5129 return CONTEXTFUNCTIONS_ALL;
5132 registerMethod(
new ScriptMethodSceneGetWidth(
this));
5136 class ScriptMethodSceneGetHeight:
public ScriptMethod {
5141 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
5142 miniScript(miniScript) {}
5143 const string getMethodName()
override {
5144 return "scene.getHeight";
5146 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5149 const vector<string>& getContextFunctions() {
5150 return CONTEXTFUNCTIONS_ALL;
5153 registerMethod(
new ScriptMethodSceneGetHeight(
this));
5157 class ScriptMethodSceneGetDepth:
public ScriptMethod {
5162 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
5163 miniScript(miniScript) {}
5164 const string getMethodName()
override {
5165 return "scene.getDepth";
5167 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5170 const vector<string>& getContextFunctions() {
5171 return CONTEXTFUNCTIONS_ALL;
5174 registerMethod(
new ScriptMethodSceneGetDepth(
this));
5179 class ScriptMethodSceneConnectorSpawnPrototype:
public ScriptMethod {
5183 ScriptMethodSceneConnectorSpawnPrototype(
LogicMiniScript* miniScript):
5186 { .type = ScriptVariableType::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
5187 { .type = ScriptVariableType::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
5188 { .type = ScriptVariableType::TYPE_STRING, .name =
"id", .optional =
false, .reference =
false, .nullable =
false },
5189 { .type =
TYPE_TRANSFORM, .name =
"transform", .optional =
false, .reference =
false, .nullable =
false },
5190 { .type = ScriptVariableType::TYPE_STRING, .name =
"hierarchyId", .optional =
true, .reference =
false, .nullable =
false },
5191 { .type = ScriptVariableType::TYPE_STRING, .name =
"hierarchyParentId", .optional =
true, .reference =
false, .nullable =
false },
5193 ScriptVariableType::TYPE_NULL
5195 miniScript(miniScript) {}
5196 const string getMethodName()
override {
5197 return "sceneconnector.spawnPrototype";
5199 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5205 string hierarchyParentId;
5206 if (miniScript->getStringValue(argumentValues, 0, pathName) ==
true &&
5207 miniScript->getStringValue(argumentValues, 1, fileName) ==
true &&
5208 miniScript->getStringValue(argumentValues, 2,
id) ==
true &&
5210 miniScript->getStringValue(argumentValues, 4, hierarchyId,
true) ==
true &&
5211 miniScript->getStringValue(argumentValues, 5, hierarchyParentId,
true) ==
true) {
5214 auto _pathName = pathName;
5219 auto canonicalPath = FileSystem::getInstance()->getCanonicalURI(_pathName, fileName);
5220 auto prototypeIt = miniScript->
prototypes.find(canonicalPath);
5221 if (prototypeIt != miniScript->
prototypes.end()) {
5222 prototypeIt->second.counter++;
5223 prototype = prototypeIt->second.prototype.get();
5225 prototype = PrototypeReader::read(_pathName, fileName);
5228 .prototype = unique_ptr<Prototype>(prototype)
5251 Console::println(
"ScriptMethodSceneConnectorSpawnPrototype::executeMethod(): An error occurred: " +
string(exception.what()));
5252 miniScript->startErrorScript();
5256 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
5257 miniScript->startErrorScript();
5260 const vector<string>& getContextFunctions() {
5264 registerMethod(
new ScriptMethodSceneConnectorSpawnPrototype(
this));
5268 class ScriptMethodSceneConnectorAttachPrototype:
public ScriptMethod {
5272 ScriptMethodSceneConnectorAttachPrototype(
LogicMiniScript* miniScript):
5275 { .type = ScriptVariableType::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
5276 { .type = ScriptVariableType::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
5277 { .type = ScriptVariableType::TYPE_STRING, .name =
"id", .optional =
false, .reference =
false, .nullable =
false },
5278 { .type = ScriptVariableType::TYPE_STRING, .name =
"attachNodeId", .optional =
false, .reference =
false, .nullable =
false },
5279 { .type =
TYPE_TRANSFORM, .name =
"transform", .optional =
false, .reference =
false, .nullable =
false },
5280 { .type = ScriptVariableType::TYPE_STRING, .name =
"parentId", .optional =
true, .reference =
false, .nullable =
false },
5282 ScriptVariableType::TYPE_NULL
5284 miniScript(miniScript) {}
5285 const string getMethodName()
override {
5286 return "sceneconnector.attachPrototype";
5288 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
5292 string attachNodeId;
5294 string hierarchyParentId;
5295 if (miniScript->getStringValue(argumentValues, 0, pathName) ==
true &&
5296 miniScript->getStringValue(argumentValues, 1, fileName) ==
true &&
5297 miniScript->getStringValue(argumentValues, 2,
id) ==
true &&
5298 miniScript->getStringValue(argumentValues, 3, attachNodeId) ==
true &&
5300 miniScript->getStringValue(argumentValues, 5, hierarchyParentId,
true) ==
true) {
5303 auto _pathName = pathName;
5308 auto canonicalPath = FileSystem::getInstance()->getCanonicalURI(_pathName, fileName);
5309 auto prototypeIt = miniScript->
prototypes.find(canonicalPath);
5310 if (prototypeIt != miniScript->
prototypes.end()) {
5311 prototypeIt->second.counter++;
5312 prototype = prototypeIt->second.prototype.get();
5314 prototype = PrototypeReader::read(_pathName, fileName);
5317 .prototype = unique_ptr<Prototype>(prototype)
5340 Console::println(
"ScriptMethodSceneConnectorAttachPrototype::executeMethod(): An error occurred: " +
string(exception.what()));
5341 miniScript->startErrorScript();
5345 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
5346 miniScript->startErrorScript();
5349 const vector<string>& getContextFunctions() {
5353 registerMethod(
new ScriptMethodSceneConnectorAttachPrototype(
this));
5367 for (
const auto& event: keyEvents) {
5369 if (event.isProcessed() ==
true)
continue;
5371 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
5376 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_RELEASED) {
5381 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_TYPED) {
5399 for (
const auto& event: mouseEvents) {
5401 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_MOVED) {
5406 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_PRESSED) {
5407 if (event.getButton() != GUIMouseEvent::MOUSEEVENT_BUTTON_NONE) {
5408 mouseDown[
event.getButton() - 1] =
true;
5411 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_DRAGGED) {
5412 if (event.getButton() != GUIMouseEvent::MOUSEEVENT_BUTTON_NONE) {
5418 if (event.getType() == GUIMouseEvent::MOUSEEVENT_RELEASED) {
5419 if (event.getButton() != GUIMouseEvent::MOUSEEVENT_BUTTON_NONE) {
5420 mouseUp[
event.getButton() - 1] =
true;
5424 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_WHEEL_MOVED) {
Interface to audio module.
void setListenerOrientationAt(const Vector3 &listenerOrientationAt)
Set listener orientation at.
void setListenerOrientationUp(const Vector3 &listenerOrientationUp)
Set listener orientation up.
const Vector3 & getListenerOrientationAt() const
const Vector3 & getListenerPosition() const
const Vector3 & getListenerOrientationUp() const
void setListenerPosition(const Vector3 &listenerPosition)
Set listener position.
const Vector3 & getLookAt() const
void setFovX(float fovX)
Set field of view X.
void setUpVector(const Vector3 &upVector)
Set up vector.
void setLookFrom(const Vector3 &lookFrom)
Set look from.
static Vector3 computeUpVector(const Vector3 &lookFrom, const Vector3 &lookAt)
Computes the up vector for given look from and look at vectors.
const Vector3 & getLookFrom() const
void setLookAt(const Vector3 &lookAt)
Set look at.
const Vector3 & getUpVector() const
Color 4 definition class.
void dumpShaders()
Print registered shaders and it default parameters to console.
static void setAnimationComputationReduction1Distance(float animationComputationReduction1Distance)
Set distance of animated object including skinned objects from camera which animation computation wil...
static float getAnimationComputationReduction2Distance()
Vector3 computeWorldCoordinateByMousePosition(int32_t mouseX, int32_t mouseY, float z)
Compute world coordinate from mouse position and z value.
void dumpEntities()
Dump entities.
static void setAnimationComputationReduction2Distance(float animationComputationReduction2Distance)
Set distance of animated object including skinned objects from camera which animation computation wil...
bool computeScreenCoordinateByWorldCoordinate(const Vector3 &worldCoordinate, Vector2 &screenCoordinate, int width=-1, int height=-1)
Convert screen coordinate by world coordinate.
static float getAnimationComputationReduction1Distance()
Entity * getEntity(const string &id)
Returns a entity by given id.
Entity * getEntityByMousePosition(int32_t mouseX, int32_t mouseY, EntityPickingFilter *filter=nullptr, Node **objectNode=nullptr, ParticleSystem **particleSystemEntity=nullptr)
Retrieves entity by mouse position.
Entity hierarchy to be used with engine class.
Entity * getEntity(const string &id)
virtual bool isEnabled()=0
virtual const string & getId()=0
virtual const Color4 & getEffectColorAdd() const =0
The effect color will be added to fragment color.
virtual void setEffectColorMul(const Color4 &effectColorMul)=0
Set effect color that will be multiplied with fragment color.
virtual void setTransform(const Transform &transform)=0
Set transform.
virtual const Color4 & getEffectColorMul() const =0
The effect color will be multiplied with fragment color.
@ ENTITYTYPE_ENTITYHIERARCHY
virtual void setPickable(bool pickable)=0
Set this entity pickable.
virtual bool isPickable()=0
virtual void setEffectColorAdd(const Color4 &effectColorAdd)=0
Set effect color that will be added to fragment color.
virtual void setEnabled(bool enabled)=0
Enable/disable rendering.
Object to be used with engine class.
Scene engine/physics connector.
int64_t getDeltaTime()
Gets the time passed between last and current frame.
float getDeltaTimeSeconds()
Gets the time passed between last and current frame in seconds.
@ STATE_PATHFINDING_SUCCESS
@ STATE_PATHFINDING_OTHER
@ STATE_PATHFINDING_FAILED
PathFindingThread::State findPath(const string &logicId, const string &actorId, const Vector3 &startPosition, const Vector3 &endPosition, vector< Vector3 > &path, int alternativeEndSteps=0, PathFindingCustomTest *customTest=nullptr, bool createFlowMap=false, const vector< Vector3 > flowMapEndPositions=vector< Vector3 >(), const float flowMapWidth=0.0, const float flowMapDepth=0.0, FlowMap **flowMap=nullptr)
Find path.
PathFinding * getPathFinding()
Get path finding thread.
const vector< Logic * > & getLogics()
const string & getApplicationRootPathName()
Logic * getLogic(const string &id)
Get logic.
Entity * getEntity(const string &entityId, const string &childEntityId)
Get entity by given entity id and given child entity id, the latter expects a entity hierarchy to res...
array< bool, 8 > mouseDragging
array< bool, 8 > mouseDown
const string getBaseClass()
static STATIC_DLL_IMPEXT const vector< string > CONTEXTFUNCTIONS_ENGINE
vector< PrototypeToAdd > enginePrototypesToAdd
Mutex prototypesToAddMutex
void collectHIDEvents(vector< GUIMouseEvent > &mouseEvents, vector< GUIKeyboardEvent > &keyEvents)
Collect HID events.
static STATIC_DLL_IMPEXT const vector< string > CONTEXTFUNCTIONS_LOGIC
unordered_set< int32_t > keyboardKeys
string keyboardTypedChars
vector< PrototypeToAdd > physicsPrototypesToAdd
unordered_map< string, PrototypeCounter > prototypes
void registerStateMachineStates() override
virtual ~LogicMiniScript()
Destructor.
const vector< string > getTranspilationUnits()
unordered_set< int32_t > keyboardChars
static STATIC_DLL_IMPEXT const vector< string > CONTEXTFUNCTIONS_ENGINELOGIC
void registerVariables() override
void registerMethods() override
void playSound(const string &id, int delay=0, float gain=1.0, float pitch=1.0, bool ignoreIfPlaying=false)
TODO: updated sounds that are already playing Play sound.
const string getSignalName()
Get signal name from first signal in signal queue.
bool hasSignal()
Returns if a signal is in signal queue.
void addSignal(const string &signal, const vector< EngineMiniScript::ScriptVariable > &arguments)
Add signal.
void removeSignal()
Remove first signal from signal queue.
EngineMiniScript::ScriptVariable getSignalArgument(int idx)
Get signal argument.
const string & getHierarchyParentId()
const string & getHierarchyId()
LogicMiniScript * getMiniScript()
void setTransform(const Transform &transform)
Set transform.
void addTorque(const Vector3 &torque)
Add torque.
void setAngularVelocity(const Vector3 &angularVelocity)
Set angular velocity.
void setEnabled(bool enabled)
Set up if rigid body is enabled.
void setLinearVelocity(const Vector3 &linearVelocity)
Set linear velocity.
void setCollisionTypeId(uint16_t typeId)
Set collision type id.
void addForce(const Vector3 &forceOrigin, const Vector3 &force)
Add force.
void setLinearDamping(float linearDamping)
Set linear damping.
const Transform & getTransform()
void setAngularDamping(float angularDamping)
Set angular damping.
void setCollisionTypeIds(uint16_t collisionTypeIds)
Set up collision type ids.
float getAngularDamping()
Body * doRayCasting(uint16_t collisionTypeIds, const Vector3 &start, const Vector3 &end, Vector3 &hitPoint, const string &actorId=string())
Do a ray cast from given start to given end point, if there is any body with given collision type in ...
bool doesCollideWith(uint16_t collisionTypeIds, Body *body, vector< Body * > &collisionBodies)
Check if world collides with given body.
bool doCollide(Body *body1, Body *body2)
Check if body 1 collides with body 2.
Body * getBody(const string &id)
Returns body identified by id.
Body * determineHeight(uint16_t collisionTypeIds, float stepUpMax, const Vector3 &point, Vector3 &heightPoint, float minHeight=-10000.0f, float maxHeight=10000.0f)
Determine height on x,y,u while respecting step up max.
Axis aligned bounding box used for frustum, this is not directly connectable with physics engine.
const Vector3 & getDimensions() const
BoundingBox * getBoundingBox()
void setAnimation(const string &id, float speed=1.0f)
Sets up a base animation to play.
void addOverlayAnimation(const string &id)
Overlays a animation above the base animation.
void removeOverlayAnimation(const string &id)
Removes a overlay animation.
bool hasOverlayAnimation(const string &id)
Returns if there is currently running a overlay animation with given id.
void setAnimationSpeed(float speed)
Set up animation speed.
void removeOverlayAnimations()
Removes all overlay animations.
void removeFinishedOverlayAnimations()
Removes all finished overlay animations.
void setNodeTransformMatrix(const string &id, const Matrix4x4 &matrix)
Set node transform matrix.
void unsetNodeTransformMatrix(const string &id)
Unset node transform matrix.
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Vector3 computeEulerAngles() const
Compute Euler angles (rotation around x, y, z axes)
Vector2 class representing vector2 mathematical structure and operations with x, y components.
Vector3 class representing vector3 mathematical structure and operations with x, y,...
Vector4 class representing vector4 mathematical structure and operations with x, y,...
File system singleton class.
void unlock()
Unlocks this mutex.
void lock()
Locks the mutex, additionally mutex locks will block until other locks have been unlocked.
static constexpr ScriptVariableType TYPE_MATRIX4x4
static constexpr ScriptVariableType TYPE_TRANSFORM
static constexpr ScriptVariableType TYPE_VECTOR3
static bool getTransformValue(const span< ScriptVariable > &arguments, int idx, Transform &value, bool optional=false)
Get transform value from given variable.
static constexpr ScriptVariableType TYPE_VECTOR2
bool getVector4Value(const span< ScriptVariable > &arguments, int idx, Vector4 &value, bool optional=false)
Get vector4 value from given variable.
bool getVector3Value(const span< ScriptVariable > &arguments, int idx, Vector3 &value, bool optional=false)
Get vector3 value from given variable.
void setValue(ScriptVariable &variable, bool value)
Set boolean value from given value into variable.
static bool getMatrix4x4Value(const span< ScriptVariable > &arguments, int idx, Matrix4x4 &value, bool optional=false)
Get matrix4x4 value from given variable.
static constexpr ScriptVariableType TYPE_VECTOR4
UTF8 string character iterator.
std::exception Exception
Exception base class.
Particle system entity interface.