6#include <Bullet/btBulletDynamicsCommon.h>
15#define OCT_ARRAY_SIZE(array) (int(sizeof(array) / sizeof(array[0])))
17#define OCT_UNUSED(var) (void)var
19#define FORCE_LINK_DEF(x) int gForceLink_##x = 0;
20#define FORCE_LINK_CALL(x) { extern int gForceLink_##x; gForceLink_##x = 1; }
34void CreateSymLink(
const std::string& original,
const std::string& link);
38void DebugDrawCollisionShape(btCollisionShape* collisionShape,
Node3D* node,
const glm::mat4& parentTransform, std::vector<DebugDraw>* inoutDraws =
nullptr);
44void CopyPropertyValues(std::vector<Property>& dstProps,
const std::vector<Property>& srcProps);
52glm::mat4
MakeTransform(glm::vec3 translation, glm::vec3 rotation, glm::vec3 scale);
61 Node* defaultSceneRoot =
nullptr);
72 glm::vec4 color = { 0.25f, 0.25f, 1.0f, 1.0f },
80 glm::vec4 color = { 0.25f, 0.25f, 1.0f, 1.0f },
96 return glm::vec3(vector3.x(), vector3.y(), vector3.z());
101 return glm::quat(quat.w(), quat.x(), quat.y(), quat.z());
106 return btVector3(vector3.x, vector3.y, vector3.z);
111 return btQuaternion(quat.x, quat.y, quat.z, quat.w);
118 uint8_t(glm::clamp(color.r * 255.0f, 0.0f, 255.0f)),
119 uint8_t(glm::clamp(color.g * 255.0f, 0.0f, 255.0f)),
120 uint8_t(glm::clamp(color.b * 255.0f, 0.0f, 255.0f)),
121 uint8_t(glm::clamp(color.a * 255.0f, 0.0f, 255.0f))
135 float r = float(color & 0x000000ff) / 255.0f;
136 float g = float((color & 0x0000ff00) >> 8) / 255.0f;
137 float b = float((color & 0x00ff0000) >> 16) / 255.0f;
138 float a = float((color & 0xff000000) >> 24) / 255.0f;
140 return glm::vec4(r, g, b, a);
145 uint8_t* charArray =
reinterpret_cast<uint8_t*
>(&color);
146 uint8_t c0 = charArray[0];
147 uint8_t c1 = charArray[1];
148 uint8_t c2 = charArray[2];
149 uint8_t c3 = charArray[3];
162 if (vertices.size() > 0)
164 glm::vec3 boxMin = { FLT_MAX, FLT_MAX, FLT_MAX };
165 glm::vec3 boxMax = { -FLT_MAX, -FLT_MAX, -FLT_MAX };
167 for (uint32_t i = 0; i < vertices.size(); ++i)
169 glm::vec3 pos = vertices[i].mPosition;
171 boxMin = glm::min(boxMin, pos);
172 boxMax = glm::max(boxMax, pos);
175 retBounds.
mCenter = (boxMin + boxMax) / 2.0f;
177 float maxDist = 0.0f;
179 for (uint32_t i = 0; i < vertices.size(); ++i)
181 glm::vec3 pos = vertices[i].mPosition;
183 float dist = glm::distance(pos, retBounds.
mCenter);
184 maxDist = glm::max(maxDist, dist);
196 uint32_t vectSize = (uint32_t)vect.size();
200 for (uint32_t i = 0; i < vectSize; ++i)
202 uint32_t p = Maths::RandRange<uint32_t>(0u, vectSize - 1);
210inline bool EndsWith(
const std::string& str,
const std::string& suffix)
212 if (suffix.size() > str.size())
return false;
213 return std::equal(suffix.rbegin(), suffix.rend(), str.rbegin());
Platform
Definition EngineTypes.h:32
void GatherNonDefaultProperties(Node *node, std::vector< Property > &props, NodePtr refNode=nullptr)
Definition Utilities.cpp:572
void RemoveDir(const char *dirPath)
Definition Utilities.cpp:116
const char * GetPlatformString(Platform platform)
Definition Utilities.cpp:480
void AddDebugDraw(const DebugDraw &draw)
Definition Utilities.cpp:924
void SetWorkingDirectory(const std::string &dirPath)
Definition Utilities.cpp:91
void DestroyCollisionShape(btCollisionShape *shape)
Definition Utilities.cpp:238
void CopyPropertyValues(std::vector< Property > &dstProps, const std::vector< Property > &srcProps)
Definition Utilities.cpp:431
uint8_t ConvertKeyCodeToChar(uint8_t keyCode, bool shiftDown)
Definition Utilities.cpp:500
std::string StringToUpper(const std::string &str)
Definition Utilities.cpp:75
void CreateSymLink(const std::string &original, const std::string &link)
Definition Utilities.cpp:136
void RemoveSpacesFromString(std::string &str)
Definition Utilities.cpp:913
btTransform MakeBulletTransform(glm::vec3 translation, glm::vec3 rotationDegrees)
Definition Utilities.cpp:558
uint32_t GetStringSerializationSize(const std::string &str)
Definition Utilities.cpp:475
Datum LuaObjectToDatum(lua_State *L, int idx)
Definition Utilities.cpp:1139
bool IsPlatformConsole(Platform platform)
Definition Utilities.cpp:57
glm::mat4 MakeTransform(glm::vec3 translation, glm::vec3 rotation, glm::vec3 scale)
Definition Utilities.cpp:545
std::string GetDirShortName(const std::string &dirName)
Definition Utilities.cpp:121
uint32_t OctHashString(const char *key)
Definition Utilities.cpp:381
std::string GetCurrentDirectoryPath()
Definition Utilities.cpp:86
void ApplySubSceneOverride(Node *sceneRoot, const SubSceneOverride &over)
Definition Utilities.cpp:818
void GatherSubSceneOverrides(Node *node, Node *sceneRoot, std::vector< SubSceneOverride > &overs, Node *defaultSceneRoot=nullptr)
Definition Utilities.cpp:699
uint32_t ColorFloat4ToUint32(glm::vec4 color)
Definition Utilities.h:114
void CreateTableLua(lua_State *L, const Datum &datum)
Definition Utilities.cpp:972
btVector3 GlmToBullet(const glm::vec3 &vector3)
Definition Utilities.h:104
bool DoesDirExist(const char *dirPath)
Definition Utilities.cpp:96
Bounds ComputeBounds(const std::vector< T > &vertices)
Definition Utilities.h:158
void ShuffleVector(std::vector< T > &vect)
Definition Utilities.h:194
void GatherAllNodeNames(std::vector< std::string > &outNames)
Definition Utilities.cpp:404
std::string StringToLower(const std::string &str)
Definition Utilities.cpp:64
btCollisionShape * CloneCollisionShape(const btCollisionShape *srcShape)
Definition Utilities.cpp:147
glm::vec4 ColorUint32ToFloat4(uint32_t color)
Definition Utilities.h:133
void CreateTableCpp(lua_State *L, int tableIdx, Datum &datum)
Definition Utilities.cpp:1009
void ReverseColorUint32(uint32_t &color)
Definition Utilities.h:143
Platform GetPlatform()
Definition Utilities.cpp:36
void LuaPushDatum(lua_State *L, const Datum &arg)
Definition Utilities.cpp:1061
void DebugDrawCollisionShape(btCollisionShape *collisionShape, Node3D *node, const glm::mat4 &parentTransform, std::vector< DebugDraw > *inoutDraws=nullptr)
Definition Utilities.cpp:259
Property * FindProperty(std::vector< Property > &props, const std::string &name)
Definition Utilities.cpp:415
glm::vec3 BulletToGlm(const btVector3 &vector3)
Definition Utilities.h:94
void CreateDir(const char *dirPath)
Definition Utilities.cpp:111
glm::vec3 EnforceEulerRange(const glm::vec3 &eulerAngles)
Definition Utilities.cpp:1208
bool EndsWith(const std::string &str, const std::string &suffix)
Definition Utilities.h:210
Definition StaticMesh.h:18
Definition EngineTypes.h:204
glm::vec3 mCenter
Definition EngineTypes.h:205
float mRadius
Definition EngineTypes.h:206
Definition EngineTypes.h:365