00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include "Gravity.h"
00013
#include <OpenCAL/PhysicalObject.h>
00014
#include <OpenCAL/PhysicsSystem.h>
00015
#include <OpenCAL/ObjectIterator.h>
00016
using namespace OpenCAL;
00017
00018
using namespace std;
00019
00020
00021
00022
00023
00024
00025 Gravity::Gravity(
PhysicsSystem *parent,
const Vector3 &gravity)
00026 :
Force(parent), m_gravity(gravity)
00027 {
00028 }
00029
00030 Gravity::Gravity(
PhysicsSystem *parent,
float downGravity)
00031 :
Force(parent), m_gravity(Vector3(0, -downGravity, 0))
00032 {
00033 }
00034
00035 Gravity::~Gravity()
00036 {
00037 }
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00054 void Gravity::execute(
float seconds)
00055 {
00057
00058
00059 Force::execute(seconds);
00060
00061
ObjectIterator it(m_parent);
00062
while(*it)
00063 {
00064
PhysicalObject *object = (
PhysicalObject *) *it;
00065 object->
addForce(object->
getMass() * m_gravity);
00066
00067 ++it;
00068 }
00069
00070
00071
00072
00073
00074
00075
00076
00077 }
00078
00079
00080
00081
00082