Bubba-3D  0.9.0
Awesome game engine!
MoveComponent.cpp
1 /*
2  * This file is part of Bubba-3D.
3  *
4  * Bubba-3D is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Bubba-3D is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with Bubba-3D. If not, see http://www.gnu.org/licenses/.
16  */
17 #include <GameObject.h>
18 #include "MoveComponent.h"
19 #include "linmath/float3x3.h"
20 
21 MoveComponent::MoveComponent(){
22 
23 }
24 
25 MoveComponent::MoveComponent(GameObject* meshObject) {
26  this->meshObject = meshObject;
27 }
28 
29 MoveComponent::MoveComponent(GameObject* meshObject, chag::Quaternion rotationSpeed,
30  chag::float3 velocity, chag::float3 acceleration,
31  chag::float3 scaleSpeed) : MoveComponent (meshObject)
32 {
33  this->velocity = velocity;
34  this->acceleration = acceleration;
35  this->rotationSpeed = rotationSpeed;
36  this->scaleSpeed = scaleSpeed;
37 }
38 
39 void MoveComponent::update(float dt){
40 
41  velocity += acceleration*dt;
42  meshObject->setLocation(meshObject->getRelativeLocation() + velocity*dt);
43 
44  chag::Quaternion q = slerp(chag::Quaternion(), rotationSpeed, dt);
45  meshObject->updateRotation(q);
46  meshObject->setScale(meshObject->getRelativeScale()+scaleSpeed*dt);
47 
48 
49 }
50 
51 chag::float3 MoveComponent::getVelocity(){ return velocity; }
52 chag::float3 MoveComponent::getAcceleration(){ return acceleration; }
53 chag::Quaternion MoveComponent::getRotationSpeed(){ return rotationSpeed; }
54 chag::float3 MoveComponent::getScaleSpeed(){ return scaleSpeed; }
55 
56 
57 void MoveComponent::setVelocity(chag::float3 v){velocity = v;}
58 void MoveComponent::setAcceleration(chag::float3 a){acceleration = a;}
59 void MoveComponent::setRotationSpeed(chag::Quaternion rs){rotationSpeed = rs;}
60 void MoveComponent::setScaleSpeed(chag::float3 ss){scaleSpeed = ss;}
A class for containing all information about a object in the game world.
Definition: GameObject.h:67