TDME2  1.9.200
MiniScriptVector2.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <span>
4 
5 #include <miniscript/miniscript/MiniScript.h>
6 
7 #include <tdme/tdme.h>
8 #include <tdme/math/Vector2.h>
10 
11 using std::span;
12 
13 using miniscript::miniscript::MiniScript;
14 
16 
17 /**
18  * MiniScript Vector2 data type
19  * @author Andreas Drewke
20  */
21 class tdme::utilities::MiniScriptVector2 final: public MiniScript::ScriptDataType {
22 private:
23  // overridden methods
24  void registerMethods(MiniScript* miniScript) const override;
25  void unsetScriptVariableValue(MiniScript::ScriptVariable& variable) const override;
26  void setScriptVariableValue(MiniScript::ScriptVariable& variable, const void* value) const override;
27  void copyScriptVariable(MiniScript::ScriptVariable& to, const MiniScript::ScriptVariable& from) const override;
28  bool mul(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
29  bool div(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
30  bool add(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
31  bool sub(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
32 
33 public:
34  static const string CLASS_NAME;
35  static const string TYPE_NAME;
36 
37  /**
38  * Get vector2 value from given variable
39  * @param TYPE_VECTOR2 custom data type for vector3
40  * @param arguments arguments
41  * @param idx argument index
42  * @param value value
43  * @param optional optional
44  * @return success
45  */
46  static inline bool getVector2Value(MiniScript::ScriptVariableType TYPE_VECTOR2, const span<MiniScript::ScriptVariable>& arguments, int idx, Vector2& value, bool optional = false) {
47  if (idx >= arguments.size()) return optional;
48  const auto& argument = arguments[idx];
49  if (argument.getType() == TYPE_VECTOR2) {
50  if (argument.getValuePtr() == 0ll) return optional;
51  value = *static_cast<Vector2*>((void*)argument.getValuePtr());
52  return true;
53  }
54  return optional;
55  }
56 
57  // forbid class copy
59 
60  /**
61  * MiniScript Vector2 data type
62  */
63  MiniScriptVector2(): MiniScript::ScriptDataType(true) {
64  //
65  }
66 
67  // overridden methods
68  const string& getClassName() const override;
69  const string& getTypeAsString() const override;
70  const string getValueAsString(const MiniScript::ScriptVariable& variable) const override;
71 
72 };
Vector2 class representing vector2 mathematical structure and operations with x, y components.
Definition: Vector2.h:20
MiniScript Vector2 data type.
const string & getTypeAsString() const override
bool add(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
bool sub(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
static bool getVector2Value(MiniScript::ScriptVariableType TYPE_VECTOR2, const span< MiniScript::ScriptVariable > &arguments, int idx, Vector2 &value, bool optional=false)
Get vector2 value from given variable.
void copyScriptVariable(MiniScript::ScriptVariable &to, const MiniScript::ScriptVariable &from) const override
void unsetScriptVariableValue(MiniScript::ScriptVariable &variable) const override
bool div(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
const string & getClassName() const override
bool mul(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
const string getValueAsString(const MiniScript::ScriptVariable &variable) const override
void setScriptVariableValue(MiniScript::ScriptVariable &variable, const void *value) const override
void registerMethods(MiniScript *miniScript) const override
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6