TDME2  1.9.200
MiniScriptVector4.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/Vector4.h>
10 
11 using std::span;
12 
13 using miniscript::miniscript::MiniScript;
14 
16 
17 /**
18  * MiniScript Vector4 data type
19  * @author Andreas Drewke
20  */
21 class tdme::utilities::MiniScriptVector4 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 vector4 value from given variable
39  * @param TYPE_VECTOR4 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 getVector4Value(MiniScript::ScriptVariableType TYPE_VECTOR4, const span<MiniScript::ScriptVariable>& arguments, int idx, Vector4& value, bool optional = false) {
47  if (idx >= arguments.size()) return optional;
48  const auto& argument = arguments[idx];
49  if (argument.getType() == TYPE_VECTOR4) {
50  if (argument.getValuePtr() == 0ll) return optional;
51  value = *static_cast<Vector4*>((void*)argument.getValuePtr());
52  return true;
53  }
54  return optional;
55 
56  }
57 
58  // forbid class copy
60 
61  /**
62  * MiniScript Vector4 data type
63  */
64  MiniScriptVector4(): MiniScript::ScriptDataType(true) {
65  //
66  }
67 
68  // overridden methods
69  const string& getClassName() const override;
70  const string& getTypeAsString() const override;
71  const string getValueAsString(const MiniScript::ScriptVariable& variable) const override;
72 
73 };
Vector4 class representing vector4 mathematical structure and operations with x, y,...
Definition: Vector4.h:22
MiniScript Vector4 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
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
static bool getVector4Value(MiniScript::ScriptVariableType TYPE_VECTOR4, const span< MiniScript::ScriptVariable > &arguments, int idx, Vector4 &value, bool optional=false)
Get vector4 value from given variable.
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