Castle Battle  1.0
Functions
bullethelper.cpp File Reference
#include <irrlicht.h>
#include <btBulletCollisionCommon.h>
#include <btBulletDynamicsCommon.h>
#include <math.h>
#include "bullethelper.h"
#include <cstdlib>
#include <iostream>

Functions

btVector3 toBulletVector (core::vector3df vec)
 Convert given Irrlicht vector3d vector to Bullect btVector3. More...
 
core::vector3df toIrrlichtVector (btVector3 vec)
 Inverse of toBulletVector() More...
 
btQuaternion EulerToQuaternion (const core::vector3df &euler)
 Convert given Irrlicht euler angle to Bullet quaternion angle. More...
 
core::vector3df QuaternionToEuler (const btQuaternion &TQuat)
 Inverse of EulerToQuaternion() More...
 
f32 getRand (f32 maxValue, f32 offset)
 Get a random value. More...
 
f32 * getMeshSize (scene::ISceneNode *mesh)
 Get a size of a 3D Irrlicth mesh. More...
 
video::SColor randomColor ()
 Get random color. More...
 
int sign (int x)
 Get sign of a integer. More...
 
core::stringc vectorToString (core::vector3df vector)
 Used for logger. More...
 

Function Documentation

◆ EulerToQuaternion()

btQuaternion EulerToQuaternion ( const core::vector3df &  euler)

Convert given Irrlicht euler angle to Bullet quaternion angle.

Parameters
eulervector3df irrlicht euler angle(x,y,z)(pitch, yaw. roll)
Returns
Quaternion bullet angle
18  {
19  btMatrix3x3 mat;
20  mat.setIdentity();
21  mat.setEulerYPR(euler.X*core::DEGTORAD64, euler.Y*core::DEGTORAD64, euler.Z*core::DEGTORAD64);
22  btQuaternion quat;
23  mat.getRotation(quat);
24  return quat;
25 }

◆ getMeshSize()

f32* getMeshSize ( scene::ISceneNode *  mesh)

Get a size of a 3D Irrlicth mesh.

Parameters
meshISceneNode node to get the size
Returns
array of 3 float (X, Y, Z)
47  {
48  core::vector3df * edges = new core::vector3df[8];
49  core::aabbox3df boundingbox = mesh->getTransformedBoundingBox();
50  boundingbox.getEdges(edges);
51 
52  f32 height = edges[1].Y - edges[0].Y;
53 
54  f32 width = edges[5].X - edges[1].X;
55 
56  f32 depth = edges[2].Z - edges[0].Z;
57  f32* arr = new f32[3];
58  arr[0] = width;
59  arr[1] = height;
60  arr[2] = depth;
61  return arr;
62 }

◆ getRand()

f32 getRand ( const f32  maxValue,
const f32  offset = 0.f 
)

Get a random value.

Parameters
maxValue f32 maximum value acceptable
offsetf32 offset to add to a generated value. Optional.
Returns
f32 generated number
44  {
45  return (f32)(rand() % (int)maxValue + offset);
46 }

◆ QuaternionToEuler()

core::vector3df QuaternionToEuler ( const btQuaternion &  TQuat)

Inverse of EulerToQuaternion()

26  {
27  btVector3 TEuler;
28  btScalar W = TQuat.getW();
29  btScalar X = TQuat.getX();
30  btScalar Y = TQuat.getY();
31  btScalar Z = TQuat.getZ();
32  float WSquared = W * W;
33  float XSquared = X * X;
34  float YSquared = Y * Y;
35  float ZSquared = Z * Z;
36 
37  TEuler.setX(atan2f(2.0f * (Y * Z + X * W), -XSquared - YSquared + ZSquared + WSquared));
38  TEuler.setY(asinf(-2.0f * (X * Z - Y * W)));
39  TEuler.setZ(atan2f(2.0f * (X * Y + Z * W), XSquared - YSquared - ZSquared + WSquared));
40  TEuler *= core::RADTODEG;
41  return toIrrlichtVector(TEuler);
42 }
core::vector3df toIrrlichtVector(btVector3 vec)
Inverse of toBulletVector()
Definition: bullethelper.cpp:15

◆ randomColor()

video::SColor randomColor ( )

Get random color.

There is predefined color palette. This because get rgba with some randomness is not a good idea because often you will get weird colors that will not suit in the graphic scene.

Returns
SColor in Irrlicht object
63  {
64  video::SColor colors[10] = {
65  video::SColor(255,0,0,255),
66  video::SColor(255,0,255,0),
67  video::SColor(255,255,0,0),
68  video::SColor(255,247,0,115),
69  video::SColor(255,29,171,226),
70  video::SColor(255,255,255,0),
71  video::SColor(255,0,255,255),
72  video::SColor(255,255,255,255),
73  video::SColor(255,255,123,0),
74  video::SColor(255,171,111,232)
75  };
76  return colors[(int)getRand(10)];
77 
78 }
f32 getRand(f32 maxValue, f32 offset)
Get a random value.
Definition: bullethelper.cpp:44

◆ sign()

int sign ( int  x)

Get sign of a integer.

Returns
-1 or 1
80  {
81  return (int(0) < x) - (x < int(0));
82 }

◆ toBulletVector()

btVector3 toBulletVector ( core::vector3df  vec)

Convert given Irrlicht vector3d vector to Bullect btVector3.

Parameters
vecvector3df Irrlicht vector
Returns
bullet btVector3
11  {
12  btVector3 vecBullet = btVector3((btScalar) vec.X,(btScalar) vec.Y,(btScalar) vec.Z);
13  return vecBullet;
14 }

◆ toIrrlichtVector()

core::vector3df toIrrlichtVector ( btVector3  vec)

Inverse of toBulletVector()

15  {
16  return core::vector3df(vec.getX(), vec.getY(), vec.getZ());
17 }

◆ vectorToString()

core::stringc vectorToString ( core::vector3df  vector)

Used for logger.

Convert a vector to a string

Parameters
vectorvector3df vector to Convert
Returns
stringc string
83  {
84  core::stringc string = core::stringc(" ");
85  string+=vector.X;
86  string+=" ";
87  string+=vector.Y;
88  string+=" ";
89  string+=vector.Z;
90  string+=" ";
91  return string.c_str();
92 }