36 namespace builtInFunction
38 inline void IsDebug(
const std::shared_ptr<Actor>& actor)
41 #if MANA_BUILD_TARGET < MANA_BUILD_RELEASE
42 actor->SetReturnInteger(1);
44 actor->SetReturnInteger(0);
48 inline void RandI(
const std::shared_ptr<Actor>& actor)
52 const int32_t min_ = actor->GetParameterInteger(0);
53 const int32_t max_ = actor->GetParameterInteger(1);
54 actor->SetReturnInteger(min_ + ((
static_cast<uint32_t
>(rand() & 32767) * (max_ - min_)) >> 15));
57 inline void RandF(
const std::shared_ptr<Actor>& actor)
60 actor->SetReturnFloat(
static_cast<float>(rand() & 32767) / 32768.0f);
63 inline void Delay(
const std::shared_ptr<Actor>& actor)
67 if (actor->GetVirtualMachine()->IsFrameChanged())
69 const int32_t frame = actor->GetParameterInteger(0);
72 actor->GetStack().Set<int32_t>(0, frame - 1);
80 inline void Sin(
const std::shared_ptr<Actor>& actor)
84 const float degree = actor->GetParameterFloat(0);
85 const float radian =
ToRadian(AngleMod<float>(degree, 180.f));
86 const float answer = std::sin(radian);
88 actor->SetReturnFloat(answer);
91 inline void Cos(
const std::shared_ptr<Actor>& actor)
95 const float degree = actor->GetParameterFloat(0);
96 const float radian =
ToRadian(AngleMod<float>(degree, 180.f));
97 const float answer = std::cos(radian);
99 actor->SetReturnFloat(answer);
102 inline void Atan2(
const std::shared_ptr<Actor>& actor)
106 const float x = actor->GetParameterFloat(0);
107 const float z = actor->GetParameterFloat(1);
108 const float a =
ToDegree(std::atan2(z, x));
110 actor->SetReturnFloat(a);
113 inline void Tan(
const std::shared_ptr<Actor>& actor)
117 const float degree = actor->GetParameterFloat(0);
118 const float radian =
ToRadian(AngleMod<float>(degree, 180.f));
119 const float answer = std::tan(radian);
121 actor->SetReturnFloat(answer);
124 inline void AngleMod(
const std::shared_ptr<Actor>& actor)
128 const float degree = actor->GetParameterFloat(0);
129 const float answer = mana::AngleMod<float>(degree, 180.f);
131 actor->SetReturnFloat(answer);
134 inline void Sqrt(
const std::shared_ptr<Actor>& actor)
138 const float value = actor->GetParameterFloat(0);
139 const float answer = std::sqrt(value);
141 actor->SetReturnFloat(answer);
144 inline void FindActor(
const std::shared_ptr<Actor>& actor)
148 const char* name = actor->GetParameterString(0);
149 actor->SetReturnActor(actor->GetVirtualMachine()->GetActor(name));
#define MANA_ASSERT_PARAMETER(P, I)
引数の数を調べ、一致しない場合はreturnします
Definition: Actor.h:302
void RegisterFunction(const std::string &name, const ExternalFunctionType &function)
Definition: VM.inl:32
void Tan(const std::shared_ptr< Actor > &actor)
Definition: Function.h:113
void RandF(const std::shared_ptr< Actor > &actor)
Definition: Function.h:57
void RandI(const std::shared_ptr< Actor > &actor)
Definition: Function.h:48
void FindActor(const std::shared_ptr< Actor > &actor)
Definition: Function.h:144
void Sqrt(const std::shared_ptr< Actor > &actor)
Definition: Function.h:134
void Delay(const std::shared_ptr< Actor > &actor)
Definition: Function.h:63
void IsDebug(const std::shared_ptr< Actor > &actor)
Definition: Function.h:38
void AngleMod(const std::shared_ptr< Actor > &actor)
Definition: Function.h:124
void Cos(const std::shared_ptr< Actor > &actor)
Definition: Function.h:91
void Atan2(const std::shared_ptr< Actor > &actor)
Definition: Function.h:102
void Sin(const std::shared_ptr< Actor > &actor)
Definition: Function.h:80
Definition: CodeBuffer.cpp:12
void FunctionInitialize(VM &vm)
Definition: Function.h:156
constexpr T ToRadian(T degree)
Definition: Math.h:61
constexpr T ToDegree(T radian)
Definition: Math.h:67
Definition: Function.h:32
float b
Definition: Function.h:33
float r
Definition: Function.h:33
float g
Definition: Function.h:33
float a
Definition: Function.h:33
Definition: Function.h:17
float y
Definition: Function.h:18
float x
Definition: Function.h:18
Definition: Function.h:22
float y
Definition: Function.h:23
float z
Definition: Function.h:23
float x
Definition: Function.h:23
Definition: Function.h:27
float z
Definition: Function.h:28
float y
Definition: Function.h:28
float w
Definition: Function.h:28
float x
Definition: Function.h:28