summaryrefslogtreecommitdiffstats
path: root/src/object/task
diff options
context:
space:
mode:
Diffstat (limited to 'src/object/task')
-rw-r--r--src/object/task/taskadvance.cpp5
-rw-r--r--src/object/task/taskadvance.h2
-rw-r--r--src/object/task/taskbuild.cpp46
-rw-r--r--src/object/task/taskbuild.h6
-rw-r--r--src/object/task/taskfire.cpp53
-rw-r--r--src/object/task/taskfireant.cpp18
-rw-r--r--src/object/task/taskfireant.h4
-rw-r--r--src/object/task/taskflag.cpp22
-rw-r--r--src/object/task/taskflag.h2
-rw-r--r--src/object/task/taskgoto.cpp150
-rw-r--r--src/object/task/taskgoto.h44
-rw-r--r--src/object/task/taskinfo.cpp6
-rw-r--r--src/object/task/taskmanager.cpp6
-rw-r--r--src/object/task/taskmanager.h6
-rw-r--r--src/object/task/taskmanip.cpp82
-rw-r--r--src/object/task/taskmanip.h12
-rw-r--r--src/object/task/taskpen.cpp11
-rw-r--r--src/object/task/taskpen.h2
-rw-r--r--src/object/task/taskrecover.cpp28
-rw-r--r--src/object/task/taskrecover.h2
-rw-r--r--src/object/task/taskreset.cpp10
-rw-r--r--src/object/task/taskreset.h8
-rw-r--r--src/object/task/tasksearch.cpp21
-rw-r--r--src/object/task/taskshield.cpp33
-rw-r--r--src/object/task/taskshield.h4
-rw-r--r--src/object/task/tasktake.cpp42
-rw-r--r--src/object/task/tasktake.h2
-rw-r--r--src/object/task/taskterraform.cpp47
-rw-r--r--src/object/task/taskterraform.h2
29 files changed, 341 insertions, 335 deletions
diff --git a/src/object/task/taskadvance.cpp b/src/object/task/taskadvance.cpp
index 8387dbe..c7326c4 100644
--- a/src/object/task/taskadvance.cpp
+++ b/src/object/task/taskadvance.cpp
@@ -22,6 +22,7 @@
#include <d3d.h>
#include "common/struct.h"
+#include "math/geometry.h"
#include "graphics/d3d/d3dengine.h"
#include "math/old/math3d.h"
#include "common/event.h"
@@ -100,7 +101,7 @@ Error CTaskAdvance::Start(float length)
Error CTaskAdvance::IsEnded()
{
- D3DVECTOR pos;
+ Math::Vector pos;
float length;
if ( m_engine->RetPause() ) return ERR_CONTINUE;
@@ -117,7 +118,7 @@ Error CTaskAdvance::IsEnded()
}
pos = m_object->RetPosition(0);
- length = Length2d(pos, m_startPos);
+ length = Math::DistanceProjected(pos, m_startPos);
if ( length > m_lastDist ) // forward?
{
diff --git a/src/object/task/taskadvance.h b/src/object/task/taskadvance.h
index ee7346f..a109962 100644
--- a/src/object/task/taskadvance.h
+++ b/src/object/task/taskadvance.h
@@ -48,7 +48,7 @@ protected:
float m_advanceLength;
float m_direction;
float m_timeLimit;
- D3DVECTOR m_startPos;
+ Math::Vector m_startPos;
float m_lastDist;
float m_fixTime;
bool m_bError;
diff --git a/src/object/task/taskbuild.cpp b/src/object/task/taskbuild.cpp
index a031ade..6a448c9 100644
--- a/src/object/task/taskbuild.cpp
+++ b/src/object/task/taskbuild.cpp
@@ -88,7 +88,7 @@ CTaskBuild::~CTaskBuild()
// Creates a building.
-bool CTaskBuild::CreateBuilding(D3DVECTOR pos, float angle)
+bool CTaskBuild::CreateBuilding(Math::Vector pos, float angle)
{
m_building = new CObject(m_iMan);
if ( !m_building->CreateBuilding(pos, angle, 0.0f, m_type, 0.0f) )
@@ -127,7 +127,7 @@ void CTaskBuild::CreateLight()
{
D3DLIGHT7 light;
D3DCOLORVALUE color;
- D3DVECTOR center, pos, dir;
+ Math::Vector center, pos, dir;
Math::Point c, p;
float angle;
int i;
@@ -211,8 +211,8 @@ void CTaskBuild::BlackLight()
bool CTaskBuild::EventProcess(const Event &event)
{
- D3DMATRIX* mat;
- D3DVECTOR pos, dir, speed;
+ Math::Matrix* mat;
+ Math::Vector pos, dir, speed;
Math::Point dim;
float a, g, cirSpeed, dist, linSpeed;
@@ -238,7 +238,7 @@ bool CTaskBuild::EventProcess(const Event &event)
if ( m_phase == TBP_MOVE ) // preliminary forward/backward?
{
- dist = Length(m_object->RetPosition(0), m_metal->RetPosition(0));
+ dist = Math::Distance(m_object->RetPosition(0), m_metal->RetPosition(0));
linSpeed = 0.0f;
if ( dist > 30.0f ) linSpeed = 1.0f;
if ( dist < 30.0f ) linSpeed = -1.0f;
@@ -278,7 +278,7 @@ bool CTaskBuild::EventProcess(const Event &event)
m_metal->SetLock(false); // usable again
m_motion->SetAction(-1);
m_object->SetObjectParent(14, 0);
- m_object->SetPosition(14, D3DVECTOR(-1.5f, 0.3f, -1.35f));
+ m_object->SetPosition(14, Math::Vector(-1.5f, 0.3f, -1.35f));
m_object->SetAngleZ(14, Math::PI);
m_camera->FlushEffect();
Abort();
@@ -320,7 +320,7 @@ bool CTaskBuild::EventProcess(const Event &event)
dim.y = dim.x;
m_particule->CreateParticule(pos, speed, dim, PARTIFIRE);
- pos = D3DVECTOR(0.0f, 0.5f, 0.0f);
+ pos = Math::Vector(0.0f, 0.5f, 0.0f);
mat = m_object->RetWorldMatrix(14);
pos = Transform(*mat, pos);
speed = m_metal->RetPosition(0);
@@ -345,7 +345,7 @@ bool CTaskBuild::EventProcess(const Event &event)
Error CTaskBuild::Start(ObjectType type)
{
- D3DVECTOR pos, speed, pv, pm;
+ Math::Vector pos, speed, pv, pm;
Error err;
float iAngle, oAngle;
@@ -391,7 +391,7 @@ Error CTaskBuild::Start(ObjectType type)
pv = m_object->RetPosition(0);
pv.y += 8.3f;
pm = m_metal->RetPosition(0);
- m_angleZ = Math::RotateAngle(Length2d(pv, pm), fabs(pv.y-pm.y));
+ m_angleZ = Math::RotateAngle(Math::DistanceProjected(pv, pm), fabs(pv.y-pm.y));
m_physics->SetFreeze(true); // it does not move
@@ -419,7 +419,7 @@ Error CTaskBuild::IsEnded()
{
m_physics->SetMotorSpeedZ(0.0f);
- dist = Length(m_object->RetPosition(0), m_metal->RetPosition(0));
+ dist = Math::Distance(m_object->RetPosition(0), m_metal->RetPosition(0));
if ( dist > 30.0f )
{
time = m_physics->RetLinTimeLength(dist-30.0f, 1.0f);
@@ -438,7 +438,7 @@ Error CTaskBuild::IsEnded()
if ( m_phase == TBP_MOVE ) // preliminary forward/backward?
{
- dist = Length(m_object->RetPosition(0), m_metal->RetPosition(0));
+ dist = Math::Distance(m_object->RetPosition(0), m_metal->RetPosition(0));
if ( dist >= 25.0f && dist <= 35.0f )
{
@@ -467,7 +467,7 @@ Error CTaskBuild::IsEnded()
m_motion->SetAction(MHS_FIRE); // shooting position
m_object->SetObjectParent(14, 4);
- m_object->SetPosition(14, D3DVECTOR(0.6f, 0.1f, 0.3f));
+ m_object->SetPosition(14, Math::Vector(0.6f, 0.1f, 0.3f));
m_object->SetAngleZ(14, 0.0f);
m_phase = TBP_PREP;
@@ -502,7 +502,7 @@ Error CTaskBuild::IsEnded()
m_metal = 0;
m_building->SetZoom(0, 1.0f);
- m_building->SetCirVibration(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_building->SetCirVibration(Math::Vector(0.0f, 0.0f, 0.0f));
m_building->SetLock(false); // building usable
m_main->CreateShortcuts();
m_displayText->DisplayError(INFO_BUILD, m_buildingPos, 10.0f, 50.0f);
@@ -525,7 +525,7 @@ Error CTaskBuild::IsEnded()
m_motion->SetAction(-1);
m_object->SetObjectParent(14, 0);
- m_object->SetPosition(14, D3DVECTOR(-1.5f, 0.3f, -1.35f));
+ m_object->SetPosition(14, Math::Vector(-1.5f, 0.3f, -1.35f));
m_object->SetAngleZ(14, Math::PI);
if ( m_type == OBJECT_FACTORY ||
@@ -574,7 +574,7 @@ Error CTaskBuild::FlatFloor()
{
CObject *pObj;
ObjectType type;
- D3DVECTOR center, pos, oPos, bPos;
+ Math::Vector center, pos, oPos, bPos;
Math::Point c, p;
float radius, max, oRadius, bRadius, angle, dist;
int i, j;
@@ -626,7 +626,7 @@ Error CTaskBuild::FlatFloor()
if ( type == OBJECT_BASE )
{
oPos = pObj->RetPosition(0);
- dist = Length(center, oPos)-80.0f;
+ dist = Math::Distance(center, oPos)-80.0f;
if ( dist < max )
{
max = dist;
@@ -640,7 +640,7 @@ Error CTaskBuild::FlatFloor()
j = 0;
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
- dist = Length(center, oPos)-oRadius;
+ dist = Math::Distance(center, oPos)-oRadius;
if ( dist < max )
{
max = dist;
@@ -692,7 +692,7 @@ Error CTaskBuild::FlatFloor()
j = 0;
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
- dist = Length(center, oPos)-oRadius;
+ dist = Math::Distance(center, oPos)-oRadius;
if ( dist < max )
{
max = dist;
@@ -718,7 +718,7 @@ CObject* CTaskBuild::SearchMetalObject(float &angle, float dMin, float dMax,
float aLimit, Error &err)
{
CObject *pObj, *pBest;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType type;
float min, iAngle, a, aa, aBest, distance, magic;
int i;
@@ -745,7 +745,7 @@ CObject* CTaskBuild::SearchMetalObject(float &angle, float dMin, float dMax,
bMetal = true; // metal exists
oPos = pObj->RetPosition(0);
- distance = Length(oPos, iPos);
+ distance = Math::Distance(oPos, iPos);
a = Math::RotateAngle(oPos.x-iPos.x, iPos.z-oPos.z); // CW!
if ( distance > dMax ) continue;
@@ -784,10 +784,10 @@ CObject* CTaskBuild::SearchMetalObject(float &angle, float dMin, float dMax,
// Destroys all the close marks.
-void CTaskBuild::DeleteMark(D3DVECTOR pos, float radius)
+void CTaskBuild::DeleteMark(Math::Vector pos, float radius)
{
CObject* pObj;
- D3DVECTOR oPos;
+ Math::Vector oPos;
ObjectType type;
float distance;
int i;
@@ -807,7 +807,7 @@ void CTaskBuild::DeleteMark(D3DVECTOR pos, float radius)
type != OBJECT_MARKPOWER ) continue;
oPos = pObj->RetPosition(0);
- distance = Length(oPos, pos);
+ distance = Math::Distance(oPos, pos);
if ( distance <= radius )
{
pObj->DeleteObject(); // removes the mark
diff --git a/src/object/task/taskbuild.h b/src/object/task/taskbuild.h
index 44698bd..f1908d0 100644
--- a/src/object/task/taskbuild.h
+++ b/src/object/task/taskbuild.h
@@ -61,11 +61,11 @@ public:
protected:
Error FlatFloor();
- bool CreateBuilding(D3DVECTOR pos, float angle);
+ bool CreateBuilding(Math::Vector pos, float angle);
void CreateLight();
void BlackLight();
CObject* SearchMetalObject(float &angle, float dMin, float dMax, float aLimit, Error &err);
- void DeleteMark(D3DVECTOR pos, float radius);
+ void DeleteMark(Math::Vector pos, float radius);
protected:
ObjectType m_type; // type of construction
@@ -82,7 +82,7 @@ protected:
float m_speed; // speed of progression
float m_angleY; // rotation angle of the vehicle
float m_angleZ; // angle of rotation of the gun
- D3DVECTOR m_buildingPos; // initial position of the building
+ Math::Vector m_buildingPos; // initial position of the building
float m_buildingHeight; // height of the building
int m_lightRank[TBMAXLIGHT];// lights for the effects
int m_soundChannel;
diff --git a/src/object/task/taskfire.cpp b/src/object/task/taskfire.cpp
index a470933..4e28d35 100644
--- a/src/object/task/taskfire.cpp
+++ b/src/object/task/taskfire.cpp
@@ -22,6 +22,7 @@
#include <d3d.h>
#include "common/struct.h"
+#include "math/geometry.h"
#include "math/old/math3d.h"
#include "common/event.h"
#include "common/misc.h"
@@ -70,8 +71,8 @@ bool CTaskFire::EventProcess(const Event &event)
{
CObject* power;
CPhysics* physics;
- D3DMATRIX* mat;
- D3DVECTOR pos, speed, dir, vib;
+ Math::Matrix* mat;
+ Math::Vector pos, speed, dir, vib;
ObjectType type;
Math::Point dim;
float energy, fire;
@@ -106,10 +107,10 @@ bool CTaskFire::EventProcess(const Event &event)
for ( i=0 ; i<6 ; i++ )
{
- pos = D3DVECTOR(0.0f, 2.5f, 0.0f);
- pos = Transform(*mat, pos);
+ pos = Math::Vector(0.0f, 2.5f, 0.0f);
+ pos = Math::Transform(*mat, pos);
- speed = D3DVECTOR(200.0f, 0.0f, 0.0f);
+ speed = Math::Vector(200.0f, 0.0f, 0.0f);
physics = m_object->RetPhysics();
if ( physics != 0 )
@@ -120,7 +121,7 @@ bool CTaskFire::EventProcess(const Event &event)
speed.x += (Math::Rand()-0.5f)*10.0f;
speed.y += (Math::Rand()-0.5f)*20.0f;
speed.z += (Math::Rand()-0.5f)*30.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= pos;
dim.x = Math::Rand()*0.5f+0.5f;
@@ -136,16 +137,16 @@ bool CTaskFire::EventProcess(const Event &event)
for ( i=0 ; i<4 ; i++ )
{
- pos = D3DVECTOR(4.0f, 0.0f, 0.0f);
+ pos = Math::Vector(4.0f, 0.0f, 0.0f);
pos.y += (rand()%3-1)*1.5f;
pos.z += (rand()%3-1)*1.5f;
- pos = Transform(*mat, pos);
+ pos = Math::Transform(*mat, pos);
- speed = D3DVECTOR(200.0f, 0.0f, 0.0f);
+ speed = Math::Vector(200.0f, 0.0f, 0.0f);
speed.x += (Math::Rand()-0.5f)*6.0f;
speed.y += (Math::Rand()-0.5f)*12.0f;
speed.z += (Math::Rand()-0.5f)*12.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= pos;
dim.x = 1.0f;
@@ -154,11 +155,11 @@ bool CTaskFire::EventProcess(const Event &event)
2.0f, 200.0f, 0.5f, 1.0f);
m_particule->SetObjectFather(channel, m_object);
- speed = D3DVECTOR(5.0f, 0.0f, 0.0f);
+ speed = Math::Vector(5.0f, 0.0f, 0.0f);
speed.x += (Math::Rand()-0.5f)*1.0f;
speed.y += (Math::Rand()-0.5f)*2.0f;
speed.z += (Math::Rand()-0.5f)*2.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= pos;
speed.y += 5.0f;
@@ -184,17 +185,17 @@ bool CTaskFire::EventProcess(const Event &event)
{
if ( type == OBJECT_MOBILErc )
{
- pos = D3DVECTOR(0.0f, 0.0f, 0.0f);
+ pos = Math::Vector(0.0f, 0.0f, 0.0f);
}
else
{
- pos = D3DVECTOR(3.0f, 1.0f, 0.0f);
+ pos = Math::Vector(3.0f, 1.0f, 0.0f);
}
pos.y += (Math::Rand()-0.5f)*1.0f;
pos.z += (Math::Rand()-0.5f)*1.0f;
- pos = Transform(*mat, pos);
+ pos = Math::Transform(*mat, pos);
- speed = D3DVECTOR(200.0f, 0.0f, 0.0f);
+ speed = Math::Vector(200.0f, 0.0f, 0.0f);
physics = m_object->RetPhysics();
if ( physics != 0 )
@@ -205,7 +206,7 @@ bool CTaskFire::EventProcess(const Event &event)
speed.x += (Math::Rand()-0.5f)*3.0f;
speed.y += (Math::Rand()-0.5f)*6.0f;
speed.z += (Math::Rand()-0.5f)*6.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= pos;
dim.x = Math::Rand()*0.7f+0.7f;
@@ -218,16 +219,16 @@ bool CTaskFire::EventProcess(const Event &event)
if ( type != OBJECT_MOBILErc &&
m_progress > 0.3f )
{
- pos = D3DVECTOR(-1.0f, 1.0f, 0.0f);
+ pos = Math::Vector(-1.0f, 1.0f, 0.0f);
pos.y += (Math::Rand()-0.5f)*0.4f;
pos.z += (Math::Rand()-0.5f)*0.4f;
- pos = Transform(*mat, pos);
+ pos = Math::Transform(*mat, pos);
- speed = D3DVECTOR(-4.0f, 0.0f, 0.0f);
+ speed = Math::Vector(-4.0f, 0.0f, 0.0f);
speed.x += (Math::Rand()-0.5f)*2.0f;
speed.y += (Math::Rand()-0.2f)*4.0f;
speed.z += (Math::Rand()-0.5f)*4.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= pos;
dim.x = Math::Rand()*1.2f+1.2f;
@@ -238,7 +239,7 @@ bool CTaskFire::EventProcess(const Event &event)
}
}
- dir = D3DVECTOR(0.0f, 0.0f, 0.0f);
+ dir = Math::Vector(0.0f, 0.0f, 0.0f);
if ( m_progress < 0.1f )
{
dir.z = (Math::PI*0.04f)*(m_progress*10.0f);
@@ -279,7 +280,7 @@ bool CTaskFire::EventProcess(const Event &event)
Error CTaskFire::Start(float delay)
{
CObject* power;
- D3DVECTOR pos, goal, speed;
+ Math::Vector pos, goal, speed;
float energy, fire;
ObjectType type;
@@ -378,9 +379,9 @@ Error CTaskFire::IsEnded()
bool CTaskFire::Abort()
{
- m_object->SetInclinaison(D3DVECTOR(0.0f, 0.0f, 0.0f));
- m_object->SetCirVibration(D3DVECTOR(0.0f, 0.0f, 0.0f));
- m_object->SetLinVibration(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_object->SetInclinaison(Math::Vector(0.0f, 0.0f, 0.0f));
+ m_object->SetCirVibration(Math::Vector(0.0f, 0.0f, 0.0f));
+ m_object->SetLinVibration(Math::Vector(0.0f, 0.0f, 0.0f));
if ( m_soundChannel != -1 )
{
diff --git a/src/object/task/taskfireant.cpp b/src/object/task/taskfireant.cpp
index 0c7aaf6..f2fbd09 100644
--- a/src/object/task/taskfireant.cpp
+++ b/src/object/task/taskfireant.cpp
@@ -60,7 +60,7 @@ CTaskFireAnt::~CTaskFireAnt()
bool CTaskFireAnt::EventProcess(const Event &event)
{
- D3DVECTOR dir, vib;
+ Math::Vector dir, vib;
float a, g, cirSpeed;
if ( m_engine->RetPause() ) return true;
@@ -93,9 +93,9 @@ bool CTaskFireAnt::EventProcess(const Event &event)
// Assigns the goal was achieved.
-Error CTaskFireAnt::Start(D3DVECTOR impact)
+Error CTaskFireAnt::Start(Math::Vector impact)
{
- D3DVECTOR pos;
+ Math::Vector pos;
ObjectType type;
m_impact = impact;
@@ -109,7 +109,7 @@ Error CTaskFireAnt::Start(D3DVECTOR impact)
// Insect on its back?
if ( m_object->RetFixed() ) return ERR_FIRE_VEH;
- m_physics->SetMotorSpeed(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_physics->SetMotorSpeed(Math::Vector(0.0f, 0.0f, 0.0f));
pos = m_object->RetPosition(0);
m_angle = Math::RotateAngle(m_impact.x-pos.x, pos.z-m_impact.z); // CW !
@@ -129,8 +129,8 @@ Error CTaskFireAnt::Start(D3DVECTOR impact)
Error CTaskFireAnt::IsEnded()
{
- D3DMATRIX* mat;
- D3DVECTOR pos, speed;
+ Math::Matrix* mat;
+ Math::Vector pos, speed;
Math::Point dim;
float angle, dist;
int i, channel;
@@ -175,10 +175,10 @@ Error CTaskFireAnt::IsEnded()
for ( i=0 ; i<20 ; i++ )
{
- pos = D3DVECTOR(-2.5f, -0.7f, 0.0f);
+ pos = Math::Vector(-2.5f, -0.7f, 0.0f);
mat = m_object->RetWorldMatrix(2);
- pos = Transform(*mat, pos);
- dist = Length(pos, m_impact);
+ pos = Math::Transform(*mat, pos);
+ dist = Math::Distance(pos, m_impact);
speed = m_impact-pos;
speed.x += (Math::Rand()-0.5f)*dist*1.2f;
speed.y += (Math::Rand()-0.5f)*dist*0.4f+50.0f;
diff --git a/src/object/task/taskfireant.h b/src/object/task/taskfireant.h
index 8f9ea49..46df388 100644
--- a/src/object/task/taskfireant.h
+++ b/src/object/task/taskfireant.h
@@ -50,14 +50,14 @@ public:
bool EventProcess(const Event &event);
- Error Start(D3DVECTOR impact);
+ Error Start(Math::Vector impact);
Error IsEnded();
bool Abort();
protected:
protected:
- D3DVECTOR m_impact;
+ Math::Vector m_impact;
TaskFireAnt m_phase;
float m_progress;
float m_speed;
diff --git a/src/object/task/taskflag.cpp b/src/object/task/taskflag.cpp
index aa853f2..0899737 100644
--- a/src/object/task/taskflag.cpp
+++ b/src/object/task/taskflag.cpp
@@ -79,7 +79,7 @@ bool CTaskFlag::EventProcess(const Event &event)
Error CTaskFlag::Start(TaskFlagOrder order, int rank)
{
- D3DVECTOR pos, speed;
+ Math::Vector pos, speed;
Error err;
m_order = order;
@@ -145,11 +145,11 @@ bool CTaskFlag::Abort()
// Returns the closest object to a given position.
-CObject* CTaskFlag::SearchNearest(D3DVECTOR pos, ObjectType type)
+CObject* CTaskFlag::SearchNearest(Math::Vector pos, ObjectType type)
{
ObjectType oType;
CObject *pObj, *pBest;
- D3DVECTOR oPos;
+ Math::Vector oPos;
float min, dist;
int i;
@@ -177,7 +177,7 @@ CObject* CTaskFlag::SearchNearest(D3DVECTOR pos, ObjectType type)
}
oPos = pObj->RetPosition(0);
- dist = Length2d(oPos, pos);
+ dist = Math::DistanceProjected(oPos, pos);
if ( dist < min )
{
min = dist;
@@ -193,7 +193,7 @@ int CTaskFlag::CountObject(ObjectType type)
{
ObjectType oType;
CObject *pObj;
- D3DVECTOR oPos;
+ Math::Vector oPos;
int i, count;
count = 0;
@@ -230,8 +230,8 @@ Error CTaskFlag::CreateFlag(int rank)
CObject* pObj;
CObject* pNew;
CPyro* pyro;
- D3DMATRIX* mat;
- D3DVECTOR pos;
+ Math::Matrix* mat;
+ Math::Vector pos;
float dist;
int i;
@@ -245,12 +245,12 @@ Error CTaskFlag::CreateFlag(int rank)
};
mat = m_object->RetWorldMatrix(0);
- pos = Transform(*mat, D3DVECTOR(4.0f, 0.0f, 0.0f));
+ pos = Transform(*mat, Math::Vector(4.0f, 0.0f, 0.0f));
pObj = SearchNearest(pos, OBJECT_NULL);
if ( pObj != 0 )
{
- dist = Length(pos, pObj->RetPosition(0));
+ dist = Math::Distance(pos, pObj->RetPosition(0));
if ( dist < 10.0f )
{
return ERR_FLAG_PROXY;
@@ -284,7 +284,7 @@ Error CTaskFlag::DeleteFlag()
{
CObject* pObj;
CPyro* pyro;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
float iAngle, angle, aLimit, dist;
iPos = m_object->RetPosition(0);
@@ -296,7 +296,7 @@ Error CTaskFlag::DeleteFlag()
{
return ERR_FLAG_DELETE;
}
- dist = Length(iPos, pObj->RetPosition(0));
+ dist = Math::Distance(iPos, pObj->RetPosition(0));
if ( dist > 10.0f )
{
return ERR_FLAG_DELETE;
diff --git a/src/object/task/taskflag.h b/src/object/task/taskflag.h
index 52e78e4..dc15e27 100644
--- a/src/object/task/taskflag.h
+++ b/src/object/task/taskflag.h
@@ -53,7 +53,7 @@ public:
protected:
Error CreateFlag(int rank);
Error DeleteFlag();
- CObject* SearchNearest(D3DVECTOR pos, ObjectType type);
+ CObject* SearchNearest(Math::Vector pos, ObjectType type);
int CountObject(ObjectType type);
protected:
diff --git a/src/object/task/taskgoto.cpp b/src/object/task/taskgoto.cpp
index 3846564..06980c2 100644
--- a/src/object/task/taskgoto.cpp
+++ b/src/object/task/taskgoto.cpp
@@ -65,7 +65,7 @@ CTaskGoto::~CTaskGoto()
bool CTaskGoto::EventProcess(const Event &event)
{
- D3DVECTOR pos, goal;
+ Math::Vector pos, goal;
Math::Point rot, repulse;
float a, g, dist, linSpeed, cirSpeed, h, hh, factor, dir;
Error ret;
@@ -96,7 +96,7 @@ bool CTaskGoto::EventProcess(const Event &event)
rot.x = m_leakPos.x-pos.x;
rot.y = m_leakPos.z-pos.z;
- dist = Length(rot.x, rot.y);
+ dist = Math::Point(rot.x, rot.y).Length();
rot.x /= dist;
rot.y /= dist;
@@ -155,7 +155,7 @@ bool CTaskGoto::EventProcess(const Event &event)
if ( ret == ERR_OK )
{
#if 0
- D3DVECTOR min, max;
+ Math::Vector min, max;
min = pos;
max = m_goal;
if ( min.x > max.x ) Math::Swap(min.x, max.x);
@@ -175,7 +175,7 @@ bool CTaskGoto::EventProcess(const Event &event)
if ( ret == ERR_GOTO_IMPOSSIBLE || ret == ERR_GOTO_ITER )
{
#if 0
- D3DVECTOR min, max;
+ Math::Vector min, max;
min = pos;
max = m_goal;
if ( min.x > max.x ) Math::Swap(min.x, max.x);
@@ -229,7 +229,7 @@ bool CTaskGoto::EventProcess(const Event &event)
goal = m_bmPoints[m_bmIndex];
goal.y = pos.y;
h = m_terrain->RetFloorHeight(goal, true, true);
- dist = Length2d(pos, goal);
+ dist = Math::DistanceProjected(pos, goal);
if ( dist != 0.0f ) // anticipates?
{
linSpeed = m_physics->RetLinMotionX(MO_REASPEED);
@@ -255,7 +255,7 @@ bool CTaskGoto::EventProcess(const Event &event)
rot.x = m_bmPoints[m_bmIndex].x-pos.x;
rot.y = m_bmPoints[m_bmIndex].z-pos.z;
- dist = Length(rot.x, rot.y);
+ dist = Math::Point(rot.x, rot.y).Length();
rot.x /= dist;
rot.y /= dist;
@@ -284,7 +284,7 @@ bool CTaskGoto::EventProcess(const Event &event)
linSpeed = 0.0f; // turns first, then advance
}
- dist = Length2d(pos, m_bmWatchDogPos);
+ dist = Math::DistanceProjected(pos, m_bmWatchDogPos);
if ( dist < 1.0f && linSpeed != 0.0f )
{
m_bmWatchDogTime += event.rTime;
@@ -367,7 +367,7 @@ bool CTaskGoto::EventProcess(const Event &event)
m_altitude > 0.0f )
{
pos = m_object->RetPosition(0);
- dist = Length2d(m_goal, pos);
+ dist = Math::DistanceProjected(m_goal, pos);
factor = (dist-20.0f)/20.0f;
if ( factor < 0.0f ) factor = 0.0f;
if ( factor > 1.0f ) factor = 1.0f;
@@ -406,7 +406,7 @@ bool CTaskGoto::EventProcess(const Event &event)
if ( cirSpeed > 1.0f ) cirSpeed = 1.0f;
if ( cirSpeed < -1.0f ) cirSpeed = -1.0f;
- dist = Length2d(m_goal, pos);
+ dist = Math::DistanceProjected(m_goal, pos);
linSpeed = dist/(m_physics->RetLinStopLength()*1.5f);
if ( linSpeed > 1.0f ) linSpeed = 1.0f;
@@ -419,7 +419,7 @@ bool CTaskGoto::EventProcess(const Event &event)
rot.x = m_goal.x-pos.x;
rot.y = m_goal.z-pos.z;
- dist = Length(rot.x, rot.y);
+ dist = Math::Point(rot.x, rot.y).Length();
rot.x /= dist;
rot.y /= dist;
@@ -438,7 +438,7 @@ bool CTaskGoto::EventProcess(const Event &event)
if ( cirSpeed > 1.0f ) cirSpeed = 1.0f;
if ( cirSpeed < -1.0f ) cirSpeed = -1.0f;
- dist = Length2d(m_goal, pos);
+ dist = Math::DistanceProjected(m_goal, pos);
linSpeed = dist/(m_physics->RetLinStopLength()*1.5f);
//? if ( m_physics->RetType() == TYPE_FLYING &&
//? m_physics->RetLand() ) // flying on the ground?
@@ -516,11 +516,11 @@ bool CTaskGoto::EventProcess(const Event &event)
// Sought a target for the worm.
-CObject* CTaskGoto::WormSearch(D3DVECTOR &impact)
+CObject* CTaskGoto::WormSearch(Math::Vector &impact)
{
CObject* pObj;
CObject* pBest = 0;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType oType;
float distance, min, radius;
int i;
@@ -581,7 +581,7 @@ CObject* CTaskGoto::WormSearch(D3DVECTOR &impact)
if ( pObj->RetVirusMode() ) continue; // object infected?
if ( !pObj->GetCrashSphere(0, oPos, radius) ) continue;
- distance = Length2d(oPos, iPos);
+ distance = Math::DistanceProjected(oPos, iPos);
if ( distance < min )
{
min = distance;
@@ -599,7 +599,7 @@ CObject* CTaskGoto::WormSearch(D3DVECTOR &impact)
void CTaskGoto::WormFrame(float rTime)
{
CObject* pObj;
- D3DVECTOR impact, pos;
+ Math::Vector impact, pos;
float dist;
m_wormLastTime += rTime;
@@ -612,7 +612,7 @@ void CTaskGoto::WormFrame(float rTime)
if ( pObj != 0 )
{
pos = m_object->RetPosition(0);
- dist = Length(pos, impact);
+ dist = Math::Distance(pos, impact);
if ( dist <= 15.0f )
{
pObj->SetVirusMode(true); // bam, infected!
@@ -626,10 +626,10 @@ void CTaskGoto::WormFrame(float rTime)
// Assigns the goal was achieved.
// "dist" is the distance that needs to go far to make a deposit or object.
-Error CTaskGoto::Start(D3DVECTOR goal, float altitude,
+Error CTaskGoto::Start(Math::Vector goal, float altitude,
TaskGotoGoal goalMode, TaskGotoCrash crashMode)
{
- D3DVECTOR pos;
+ Math::Vector pos;
CObject* target;
ObjectType type;
float dist;
@@ -677,7 +677,7 @@ Error CTaskGoto::Start(D3DVECTOR goal, float altitude,
m_bmFinalMove = 0.0f;
pos = m_object->RetPosition(0);
- dist = Length2d(pos, m_goal);
+ dist = Math::DistanceProjected(pos, m_goal);
if ( dist < 10.0f && m_crashMode == TGC_BEAM )
{
m_crashMode = TGC_RIGHTLEFT;
@@ -754,7 +754,7 @@ Error CTaskGoto::Start(D3DVECTOR goal, float altitude,
if ( m_physics->RetType() == TYPE_FLYING && m_altitude == 0.0f )
{
pos = m_object->RetPosition(0);
- dist = Length2d(pos, m_goal);
+ dist = Math::DistanceProjected(pos, m_goal);
if ( dist > FLY_DIST_GROUND ) // over 20 meters?
{
m_altitude = FLY_DEF_HEIGHT; // default altitude
@@ -770,7 +770,7 @@ Error CTaskGoto::Start(D3DVECTOR goal, float altitude,
if ( BitmapTestDot(0, x, y) ) // arrival occupied?
{
#if 0
- D3DVECTOR min, max;
+ Math::Vector min, max;
min = m_object->RetPosition(0);
max = m_goal;
if ( min.x > max.x ) Math::Swap(min.x, max.x);
@@ -794,7 +794,7 @@ Error CTaskGoto::Start(D3DVECTOR goal, float altitude,
Error CTaskGoto::IsEnded()
{
- D3DVECTOR pos;
+ Math::Vector pos;
float limit, angle, dist, h, level;
if ( m_engine->RetPause() ) return ERR_CONTINUE;
@@ -907,7 +907,7 @@ Error CTaskGoto::IsEnded()
if ( m_goalMode == TGG_EXPRESS )
{
- dist = Length2d(m_goal, pos);
+ dist = Math::DistanceProjected(m_goal, pos);
if ( dist < 10.0f && dist > m_lastDistance )
{
return ERR_STOP;
@@ -1001,7 +1001,7 @@ Error CTaskGoto::IsEnded()
if ( m_phase == TGP_CRADVANCE ) // advance after collision?
{
- if ( Length(pos, m_pos) >= 5.0f )
+ if ( Math::Distance(pos, m_pos) >= 5.0f )
{
m_phase = TGP_ADVANCE;
}
@@ -1034,7 +1034,7 @@ Error CTaskGoto::IsEnded()
if ( m_phase == TGP_CLADVANCE ) // advance after collision?
{
- if ( Length(pos, m_pos) >= 10.0f )
+ if ( Math::Distance(pos, m_pos) >= 10.0f )
{
m_phase = TGP_ADVANCE;
m_try ++;
@@ -1050,7 +1050,7 @@ Error CTaskGoto::IsEnded()
return ERR_STOP;
}
- dist = Length(m_bmFinalPos, m_object->RetPosition(0));
+ dist = Math::Distance(m_bmFinalPos, m_object->RetPosition(0));
if ( dist < m_bmFinalDist ) return ERR_CONTINUE;
m_physics->SetMotorSpeedX(0.0f); // stops the advance
return ERR_STOP;
@@ -1062,10 +1062,10 @@ Error CTaskGoto::IsEnded()
// Tries the object is the target position.
-CObject* CTaskGoto::SearchTarget(D3DVECTOR pos, float margin)
+CObject* CTaskGoto::SearchTarget(Math::Vector pos, float margin)
{
CObject *pObj, *pBest;
- D3DVECTOR oPos;
+ Math::Vector oPos;
float dist, min;
int i;
@@ -1080,7 +1080,7 @@ CObject* CTaskGoto::SearchTarget(D3DVECTOR pos, float margin)
if ( pObj->RetTruck() != 0 ) continue; // object transtorted?
oPos = pObj->RetPosition(0);
- dist = Length2d(pos, oPos);
+ dist = Math::DistanceProjected(pos, oPos);
if ( dist <= margin && dist <= min )
{
@@ -1095,12 +1095,12 @@ CObject* CTaskGoto::SearchTarget(D3DVECTOR pos, float margin)
// Adjusts the target as a function of the object.
// Returns true if it is cargo laying on the ground, which can be approached from any site.
-bool CTaskGoto::AdjustTarget(CObject* pObj, D3DVECTOR &pos, float &distance)
+bool CTaskGoto::AdjustTarget(CObject* pObj, Math::Vector &pos, float &distance)
{
ObjectType type;
Character* character;
- D3DMATRIX* mat;
- D3DVECTOR goal;
+ Math::Matrix* mat;
+ Math::Vector goal;
float dist, suppl;
type = m_object->RetType();
@@ -1141,7 +1141,7 @@ bool CTaskGoto::AdjustTarget(CObject* pObj, D3DVECTOR &pos, float &distance)
{
pos = m_object->RetPosition(0);
goal = pObj->RetPosition(0);
- dist = Length(goal, pos);
+ dist = Math::Distance(goal, pos);
pos = (pos-goal)*(TAKE_DIST+distance)/dist + goal;
return true; // approach from all sites
}
@@ -1150,7 +1150,7 @@ bool CTaskGoto::AdjustTarget(CObject* pObj, D3DVECTOR &pos, float &distance)
{
pos = m_object->RetPosition(0);
goal = pObj->RetPosition(0);
- dist = Length(goal, pos);
+ dist = Math::Distance(goal, pos);
pos = (pos-goal)*(TAKE_DIST+distance)/dist + goal;
return true; // approach from all sites
}
@@ -1206,10 +1206,10 @@ bool CTaskGoto::AdjustTarget(CObject* pObj, D3DVECTOR &pos, float &distance)
// If you are on an object produced by a building (ore produced by derrick),
// changes the position by report the building.
-bool CTaskGoto::AdjustBuilding(D3DVECTOR &pos, float margin, float &distance)
+bool CTaskGoto::AdjustBuilding(Math::Vector &pos, float margin, float &distance)
{
CObject* pObj;
- D3DVECTOR oPos;
+ Math::Vector oPos;
float dist, suppl;
int i;
@@ -1222,7 +1222,7 @@ bool CTaskGoto::AdjustBuilding(D3DVECTOR &pos, float margin, float &distance)
if ( pObj->RetTruck() != 0 ) continue; // object transported?
if ( !GetHotPoint(pObj, oPos, false, 0.0f, suppl) ) continue;
- dist = Length2d(pos, oPos);
+ dist = Math::DistanceProjected(pos, oPos);
if ( dist <= margin )
{
GetHotPoint(pObj, pos, true, distance, suppl);
@@ -1235,13 +1235,13 @@ bool CTaskGoto::AdjustBuilding(D3DVECTOR &pos, float margin, float &distance)
// Returns the item or product or pose is something on a building.
-bool CTaskGoto::GetHotPoint(CObject *pObj, D3DVECTOR &pos,
+bool CTaskGoto::GetHotPoint(CObject *pObj, Math::Vector &pos,
bool bTake, float distance, float &suppl)
{
ObjectType type;
- D3DMATRIX* mat;
+ Math::Matrix* mat;
- pos = D3DVECTOR(0.0f, 0.0f, 0.0f);
+ pos = Math::Vector(0.0f, 0.0f, 0.0f);
suppl = 0.0f;
type = pObj->RetType();
@@ -1371,10 +1371,10 @@ bool CTaskGoto::GetHotPoint(CObject *pObj, D3DVECTOR &pos,
// Seeks an object too close that he must flee.
-bool CTaskGoto::LeakSearch(D3DVECTOR &pos, float &delay)
+bool CTaskGoto::LeakSearch(Math::Vector &pos, float &delay)
{
CObject *pObj, *pObstacle;
- D3DVECTOR iPos, oPos, bPos;
+ Math::Vector iPos, oPos, bPos;
float iRadius, oRadius, bRadius, dist, min, dir;
int i, j;
@@ -1396,7 +1396,7 @@ bool CTaskGoto::LeakSearch(D3DVECTOR &pos, float &delay)
j = 0;
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
- dist = Length2d(oPos, iPos);
+ dist = Math::DistanceProjected(oPos, iPos);
if ( dist < min )
{
min = dist;
@@ -1431,7 +1431,7 @@ bool CTaskGoto::LeakSearch(D3DVECTOR &pos, float &delay)
void CTaskGoto::ComputeRepulse(Math::Point &dir)
{
#if 0
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
Math::Point repulse;
CObject *pObj;
float dist, iRadius, oRadius;
@@ -1451,12 +1451,12 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir)
if ( pObj->RetTruck() != 0 ) continue;
oPos = pObj->RetPosition(0);
- dist = Length(oPos, m_goalObject);
+ dist = Math::Distance(oPos, m_goalObject);
if ( dist <= 1.0f ) continue;
pObj->GetGlobalSphere(oPos, oRadius);
oRadius += iRadius+m_physics->RetLinStopLength()*1.1f;
- dist = Length2d(oPos, iPos);
+ dist = Math::DistanceProjected(oPos, iPos);
if ( dist <= oRadius )
{
repulse.x = iPos.x-oPos.x;
@@ -1476,7 +1476,7 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir)
}
#else
ObjectType iType, oType;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
Math::Point repulse;
CObject *pObj;
float gDist, add, addi, fac, dist, iRadius, oRadius;
@@ -1491,7 +1491,7 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir)
if ( iType == OBJECT_WORM ) return;
m_object->GetCrashSphere(0, iPos, iRadius);
- gDist = Length(iPos, m_goal);
+ gDist = Math::Distance(iPos, m_goal);
add = m_physics->RetLinStopLength()*1.1f; // braking distance
fac = 2.0f;
@@ -1616,11 +1616,11 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir)
if ( oPos.y-oRadius > iPos.y+iRadius ) continue;
if ( oPos.y+oRadius < iPos.y-iRadius ) continue;
- dist = Length(oPos, m_goal);
+ dist = Math::Distance(oPos, m_goal);
if ( dist <= 1.0f ) continue; // on purpose?
oRadius += iRadius+addi;
- dist = Length2d(oPos, iPos);
+ dist = Math::DistanceProjected(oPos, iPos);
if ( dist > gDist ) continue; // beyond the goal?
if ( dist <= oRadius )
{
@@ -1646,7 +1646,7 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir)
void CTaskGoto::ComputeFlyingRepulse(float &dir)
{
ObjectType oType;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
CObject *pObj;
float add, fac, dist, iRadius, oRadius, repulse;
int i, j;
@@ -1673,7 +1673,7 @@ void CTaskGoto::ComputeFlyingRepulse(float &dir)
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
oRadius += iRadius+add;
- dist = Length2d(oPos, iPos);
+ dist = Math::DistanceProjected(oPos, iPos);
if ( dist <= oRadius )
{
repulse = iPos.y-oPos.y;
@@ -1715,7 +1715,7 @@ int CTaskGoto::BeamShortcut()
void CTaskGoto::BeamStart()
{
- D3DVECTOR min, max;
+ Math::Vector min, max;
BitmapOpen();
BitmapObject();
@@ -1765,7 +1765,7 @@ void CTaskGoto::BeamInit()
// ERR_CONTINUE if not done yet
// goalRadius: distance at which we must approach the goal
-Error CTaskGoto::BeamSearch(const D3DVECTOR &start, const D3DVECTOR &goal,
+Error CTaskGoto::BeamSearch(const Math::Vector &start, const Math::Vector &goal,
float goalRadius)
{
float step, len;
@@ -1773,7 +1773,7 @@ Error CTaskGoto::BeamSearch(const D3DVECTOR &start, const D3DVECTOR &goal,
m_bmStep ++;
- len = Length2d(start, goal);
+ len = Math::DistanceProjected(start, goal);
step = len/5.0f;
if ( step < BM_DIM_STEP*2.1f ) step = BM_DIM_STEP*2.1f;
if ( step > 20.0f ) step = 20.0f;
@@ -1791,12 +1791,12 @@ Error CTaskGoto::BeamSearch(const D3DVECTOR &start, const D3DVECTOR &goal,
// i number of recursions made
// nbIter maximum number of iterations you have the right to make before temporarily interrupt
-Error CTaskGoto::BeamExplore(const D3DVECTOR &prevPos, const D3DVECTOR &curPos,
- const D3DVECTOR &goalPos, float goalRadius,
+Error CTaskGoto::BeamExplore(const Math::Vector &prevPos, const Math::Vector &curPos,
+ const Math::Vector &goalPos, float goalRadius,
float angle, int nbDiv, float step,
int i, int nbIter)
{
- D3DVECTOR newPos;
+ Math::Vector newPos;
Error ret;
int iDiv, iClear, iLar;
@@ -1817,7 +1817,7 @@ Error CTaskGoto::BeamExplore(const D3DVECTOR &prevPos, const D3DVECTOR &curPos,
m_bmPoints[i] = curPos;
- if ( Length2d(curPos, goalPos)-goalRadius <= step )
+ if ( Math::DistanceProjected(curPos, goalPos)-goalRadius <= step )
{
if ( goalRadius == 0.0f )
{
@@ -1825,7 +1825,7 @@ Error CTaskGoto::BeamExplore(const D3DVECTOR &prevPos, const D3DVECTOR &curPos,
}
else
{
- newPos = BeamPoint(curPos, goalPos, 0, Length2d(curPos, goalPos)-goalRadius);
+ newPos = BeamPoint(curPos, goalPos, 0, Math::DistanceProjected(curPos, goalPos)-goalRadius);
}
if ( BitmapTestLine(curPos, newPos, angle/nbDiv, false) )
{
@@ -1882,11 +1882,11 @@ Error CTaskGoto::BeamExplore(const D3DVECTOR &prevPos, const D3DVECTOR &curPos,
// Is a right "start-goal". Calculates the point located at the distance "step"
// from the point "start" and an angle "angle" with the right.
-D3DVECTOR CTaskGoto::BeamPoint(const D3DVECTOR &startPoint,
- const D3DVECTOR &goalPoint,
+Math::Vector CTaskGoto::BeamPoint(const Math::Vector &startPoint,
+ const Math::Vector &goalPoint,
float angle, float step)
{
- D3DVECTOR resPoint;
+ Math::Vector resPoint;
float goalAngle;
goalAngle = Math::RotateAngle(goalPoint.x-startPoint.x, goalPoint.z-startPoint.z);
@@ -1900,8 +1900,8 @@ D3DVECTOR CTaskGoto::BeamPoint(const D3DVECTOR &startPoint,
// Displays a bitmap part.
-void CTaskGoto::BitmapDebug(const D3DVECTOR &min, const D3DVECTOR &max,
- const D3DVECTOR &start, const D3DVECTOR &goal)
+void CTaskGoto::BitmapDebug(const Math::Vector &min, const Math::Vector &max,
+ const Math::Vector &start, const Math::Vector &goal)
{
int minx, miny, maxx, maxy, x, y, i ,n;
char s[2000];
@@ -1978,17 +1978,17 @@ void CTaskGoto::BitmapDebug(const D3DVECTOR &min, const D3DVECTOR &max,
// Tests if a path along a straight line is possible.
-bool CTaskGoto::BitmapTestLine(const D3DVECTOR &start, const D3DVECTOR &goal,
+bool CTaskGoto::BitmapTestLine(const Math::Vector &start, const Math::Vector &goal,
float stepAngle, bool bSecond)
{
- D3DVECTOR pos, inc;
+ Math::Vector pos, inc;
float dist, step;
float distNoB2;
int i, max, x, y;
if ( m_bmArray == 0 ) return true;
- dist = Length2d(start, goal);
+ dist = Math::DistanceProjected(start, goal);
if ( dist == 0.0f ) return true;
step = BM_DIM_STEP*0.5f;
@@ -2043,7 +2043,7 @@ void CTaskGoto::BitmapObject()
{
CObject *pObj;
ObjectType type;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
float iRadius, oRadius, h;
int i, j;
@@ -2087,7 +2087,7 @@ void CTaskGoto::BitmapObject()
// Adds a section of land in the bitmap.
-void CTaskGoto::BitmapTerrain(const D3DVECTOR &min, const D3DVECTOR &max)
+void CTaskGoto::BitmapTerrain(const Math::Vector &min, const Math::Vector &max)
{
int minx, miny, maxx, maxy;
@@ -2104,7 +2104,7 @@ void CTaskGoto::BitmapTerrain(const D3DVECTOR &min, const D3DVECTOR &max)
void CTaskGoto::BitmapTerrain(int minx, int miny, int maxx, int maxy)
{
ObjectType type;
- D3DVECTOR p;
+ Math::Vector p;
float aLimit, angle, h;
int x, y;
bool bAcceptWater, bFly;
@@ -2265,7 +2265,7 @@ bool CTaskGoto::BitmapClose()
// Puts a circle in the bitmap.
-void CTaskGoto::BitmapSetCircle(const D3DVECTOR &pos, float radius)
+void CTaskGoto::BitmapSetCircle(const Math::Vector &pos, float radius)
{
float d, r;
int cx, cy, ix, iy;
@@ -2278,7 +2278,7 @@ void CTaskGoto::BitmapSetCircle(const D3DVECTOR &pos, float radius)
{
for ( ix=cx-(int)r ; ix<=cx+(int)r ; ix++ )
{
- d = Length((float)(ix-cx), (float)(iy-cy));
+ d = Math::Point((float)(ix-cx), (float)(iy-cy)).Length();
if ( d > r ) continue;
BitmapSetDot(0, ix, iy);
}
@@ -2287,7 +2287,7 @@ void CTaskGoto::BitmapSetCircle(const D3DVECTOR &pos, float radius)
// Removes a circle in the bitmap.
-void CTaskGoto::BitmapClearCircle(const D3DVECTOR &pos, float radius)
+void CTaskGoto::BitmapClearCircle(const Math::Vector &pos, float radius)
{
float d, r;
int cx, cy, ix, iy;
@@ -2300,7 +2300,7 @@ void CTaskGoto::BitmapClearCircle(const D3DVECTOR &pos, float radius)
{
for ( ix=cx-(int)r ; ix<=cx+(int)r ; ix++ )
{
- d = Length((float)(ix-cx), (float)(iy-cy));
+ d = Math::Point((float)(ix-cx), (float)(iy-cy)).Length();
if ( d > r ) continue;
BitmapClearDot(0, ix, iy);
}
diff --git a/src/object/task/taskgoto.h b/src/object/task/taskgoto.h
index d0e4953..97009d4 100644
--- a/src/object/task/taskgoto.h
+++ b/src/object/task/taskgoto.h
@@ -84,43 +84,43 @@ public:
bool EventProcess(const Event &event);
- Error Start(D3DVECTOR goal, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode);
+ Error Start(Math::Vector goal, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode);
Error IsEnded();
protected:
- CObject* WormSearch(D3DVECTOR &impact);
+ CObject* WormSearch(Math::Vector &impact);
void WormFrame(float rTime);
- CObject* SearchTarget(D3DVECTOR pos, float margin);
- bool AdjustTarget(CObject* pObj, D3DVECTOR &pos, float &distance);
- bool AdjustBuilding(D3DVECTOR &pos, float margin, float &distance);
- bool GetHotPoint(CObject *pObj, D3DVECTOR &pos, bool bTake, float distance, float &suppl);
- bool LeakSearch(D3DVECTOR &pos, float &delay);
+ CObject* SearchTarget(Math::Vector pos, float margin);
+ bool AdjustTarget(CObject* pObj, Math::Vector &pos, float &distance);
+ bool AdjustBuilding(Math::Vector &pos, float margin, float &distance);
+ bool GetHotPoint(CObject *pObj, Math::Vector &pos, bool bTake, float distance, float &suppl);
+ bool LeakSearch(Math::Vector &pos, float &delay);
void ComputeRepulse(Math::Point &dir);
void ComputeFlyingRepulse(float &dir);
int BeamShortcut();
void BeamStart();
void BeamInit();
- Error BeamSearch(const D3DVECTOR &start, const D3DVECTOR &goal, float goalRadius);
- Error BeamExplore(const D3DVECTOR &prevPos, const D3DVECTOR &curPos, const D3DVECTOR &goalPos, float goalRadius, float angle, int nbDiv, float step, int i, int nbIter);
- D3DVECTOR BeamPoint(const D3DVECTOR &startPoint, const D3DVECTOR &goalPoint, float angle, float step);
+ Error BeamSearch(const Math::Vector &start, const Math::Vector &goal, float goalRadius);
+ Error BeamExplore(const Math::Vector &prevPos, const Math::Vector &curPos, const Math::Vector &goalPos, float goalRadius, float angle, int nbDiv, float step, int i, int nbIter);
+ Math::Vector BeamPoint(const Math::Vector &startPoint, const Math::Vector &goalPoint, float angle, float step);
- void BitmapDebug(const D3DVECTOR &min, const D3DVECTOR &max, const D3DVECTOR &start, const D3DVECTOR &goal);
- bool BitmapTestLine(const D3DVECTOR &start, const D3DVECTOR &goal, float stepAngle, bool bSecond);
+ void BitmapDebug(const Math::Vector &min, const Math::Vector &max, const Math::Vector &start, const Math::Vector &goal);
+ bool BitmapTestLine(const Math::Vector &start, const Math::Vector &goal, float stepAngle, bool bSecond);
void BitmapObject();
- void BitmapTerrain(const D3DVECTOR &min, const D3DVECTOR &max);
+ void BitmapTerrain(const Math::Vector &min, const Math::Vector &max);
void BitmapTerrain(int minx, int miny, int maxx, int maxy);
bool BitmapOpen();
bool BitmapClose();
- void BitmapSetCircle(const D3DVECTOR &pos, float radius);
- void BitmapClearCircle(const D3DVECTOR &pos, float radius);
+ void BitmapSetCircle(const Math::Vector &pos, float radius);
+ void BitmapClearCircle(const Math::Vector &pos, float radius);
void BitmapSetDot(int rank, int x, int y);
void BitmapClearDot(int rank, int x, int y);
bool BitmapTestDot(int rank, int x, int y);
protected:
- D3DVECTOR m_goal;
- D3DVECTOR m_goalObject;
+ Math::Vector m_goal;
+ Math::Vector m_goalObject;
float m_angle;
float m_altitude;
TaskGotoCrash m_crashMode;
@@ -131,7 +131,7 @@ protected:
bool m_bTake;
float m_stopLength; // braking distance
float m_time;
- D3DVECTOR m_pos;
+ Math::Vector m_pos;
bool m_bWorm;
bool m_bApprox;
float m_wormLastTime;
@@ -145,18 +145,18 @@ protected:
int m_bmMaxX, m_bmMaxY;
int m_bmTotal; // number of points in m_bmPoints
int m_bmIndex; // index in m_bmPoints
- D3DVECTOR m_bmPoints[MAXPOINTS+2];
+ Math::Vector m_bmPoints[MAXPOINTS+2];
char m_bmIter[MAXPOINTS+2];
int m_bmIterCounter;
CObject* m_bmFretObject;
float m_bmFinalMove; // final advance distance
float m_bmFinalDist; // effective distance to advance
- D3DVECTOR m_bmFinalPos; // initial position before advance
+ Math::Vector m_bmFinalPos; // initial position before advance
float m_bmTimeLimit;
int m_bmStep;
- D3DVECTOR m_bmWatchDogPos;
+ Math::Vector m_bmWatchDogPos;
float m_bmWatchDogTime;
- D3DVECTOR m_leakPos; // initial position leak
+ Math::Vector m_leakPos; // initial position leak
float m_leakDelay;
float m_leakTime;
bool m_bLeakRecede;
diff --git a/src/object/task/taskinfo.cpp b/src/object/task/taskinfo.cpp
index 3548426..7ce0a36 100644
--- a/src/object/task/taskinfo.cpp
+++ b/src/object/task/taskinfo.cpp
@@ -75,7 +75,7 @@ Error CTaskInfo::Start(char *name, float value, float power, bool bSend)
{
CObject* pInfo;
CAutoInfo* pAuto;
- D3DVECTOR pos, goal;
+ Math::Vector pos, goal;
Info info;
int i, total, op;
@@ -196,7 +196,7 @@ bool CTaskInfo::Abort()
CObject* CTaskInfo::SearchInfo(float power)
{
CObject *pObj, *pBest;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType type;
float dist, min;
int i;
@@ -216,7 +216,7 @@ CObject* CTaskInfo::SearchInfo(float power)
if ( !pObj->RetActif() ) continue;
oPos = pObj->RetPosition(0);
- dist = Length(oPos, iPos);
+ dist = Math::Distance(oPos, iPos);
if ( dist > power ) continue; // too far?
if ( dist < min )
{
diff --git a/src/object/task/taskmanager.cpp b/src/object/task/taskmanager.cpp
index 2ec51fc..a4956b5 100644
--- a/src/object/task/taskmanager.cpp
+++ b/src/object/task/taskmanager.cpp
@@ -99,7 +99,7 @@ Error CTaskManager::StartTaskTurn(float angle)
// Reaches a given position.
-Error CTaskManager::StartTaskGoto(D3DVECTOR pos, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode)
+Error CTaskManager::StartTaskGoto(Math::Vector pos, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode)
{
m_task = new CTaskGoto(m_iMan, m_object);
return ((CTaskGoto*)m_task)->Start(pos, altitude, goalMode, crashMode);
@@ -208,7 +208,7 @@ Error CTaskManager::StartTaskFire(float delay)
// Shoots with the ant.
-Error CTaskManager::StartTaskFireAnt(D3DVECTOR impact)
+Error CTaskManager::StartTaskFireAnt(Math::Vector impact)
{
m_task = new CTaskFireAnt(m_iMan, m_object);
return ((CTaskFireAnt*)m_task)->Start(impact);
@@ -232,7 +232,7 @@ Error CTaskManager::StartTaskSpiderExplo()
// Reset.
-Error CTaskManager::StartTaskReset(D3DVECTOR goal, D3DVECTOR angle)
+Error CTaskManager::StartTaskReset(Math::Vector goal, Math::Vector angle)
{
m_task = new CTaskReset(m_iMan, m_object);
return ((CTaskReset*)m_task)->Start(goal, angle);
diff --git a/src/object/task/taskmanager.h b/src/object/task/taskmanager.h
index 36406e4..410efcf 100644
--- a/src/object/task/taskmanager.h
+++ b/src/object/task/taskmanager.h
@@ -41,7 +41,7 @@ public:
Error StartTaskWait(float time);
Error StartTaskAdvance(float length);
Error StartTaskTurn(float angle);
- Error StartTaskGoto(D3DVECTOR pos, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode);
+ Error StartTaskGoto(Math::Vector pos, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode);
Error StartTaskTake();
Error StartTaskManip(TaskManipOrder order, TaskManipArm arm);
Error StartTaskFlag(TaskFlagOrder order, int rank);
@@ -53,10 +53,10 @@ public:
Error StartTaskRecover();
Error StartTaskShield(TaskShieldMode mode, float delay);
Error StartTaskFire(float delay);
- Error StartTaskFireAnt(D3DVECTOR impact);
+ Error StartTaskFireAnt(Math::Vector impact);
Error StartTaskGunGoal(float dirV, float dirH);
Error StartTaskSpiderExplo();
- Error StartTaskReset(D3DVECTOR goal, D3DVECTOR angle);
+ Error StartTaskReset(Math::Vector goal, Math::Vector angle);
bool EventProcess(const Event &event);
Error IsEnded();
diff --git a/src/object/task/taskmanip.cpp b/src/object/task/taskmanip.cpp
index 3e1fea7..6f20cad 100644
--- a/src/object/task/taskmanip.cpp
+++ b/src/object/task/taskmanip.cpp
@@ -73,7 +73,7 @@ CTaskManip::~CTaskManip()
bool CTaskManip::EventProcess(const Event &event)
{
- D3DVECTOR pos;
+ Math::Vector pos;
float angle, a, g, cirSpeed, progress;
int i;
@@ -305,7 +305,7 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm)
CPyro *pyro;
float iAngle, dist, len;
float fDist, fAngle, oDist, oAngle, oHeight;
- D3DVECTOR pos, fPos, oPos;
+ Math::Vector pos, fPos, oPos;
m_arm = arm;
m_height = 0.0f;
@@ -324,7 +324,7 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm)
m_arm != TMA_POWER &&
m_arm != TMA_GRAB ) return ERR_MANIP_VEH;
- m_physics->SetMotorSpeed(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_physics->SetMotorSpeed(Math::Vector(0.0f, 0.0f, 0.0f));
type = m_object->RetType();
if ( type == OBJECT_BEE ) // bee?
@@ -338,7 +338,7 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm)
m_object->SetFret(other); // takes the ball
other->SetTruck(m_object);
other->SetTruckPart(0); // taken with the base
- other->SetPosition(0, D3DVECTOR(0.0f, -3.0f, 0.0f));
+ other->SetPosition(0, Math::Vector(0.0f, -3.0f, 0.0f));
}
else
{
@@ -482,12 +482,12 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm)
}
else
{
- if ( !IsFreeDeposeObject(D3DVECTOR(TAKE_DIST, 0.0f, 0.0f)) ) return ERR_MANIP_OCC;
+ if ( !IsFreeDeposeObject(Math::Vector(TAKE_DIST, 0.0f, 0.0f)) ) return ERR_MANIP_OCC;
}
}
if ( m_arm == TMA_FBACK )
{
- if ( !IsFreeDeposeObject(D3DVECTOR(-TAKE_DIST, 0.0f, 0.0f)) ) return ERR_MANIP_OCC;
+ if ( !IsFreeDeposeObject(Math::Vector(-TAKE_DIST, 0.0f, 0.0f)) ) return ERR_MANIP_OCC;
}
if ( m_arm == TMA_POWER )
{
@@ -495,7 +495,7 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm)
}
}
- dist = Length(m_object->RetPosition(0), m_targetPos);
+ dist = Math::Distance(m_object->RetPosition(0), m_targetPos);
len = dist-TAKE_DIST;
if ( m_arm == TMA_OTHER ) len -= TAKE_DIST_OTHER;
if ( len < 0.0f ) len = 0.0f;
@@ -548,7 +548,7 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm)
Error CTaskManip::IsEnded()
{
CObject* fret;
- D3DVECTOR pos;
+ Math::Vector pos;
float angle, dist;
int i;
@@ -582,7 +582,7 @@ Error CTaskManip::IsEnded()
if ( m_timeLimit <= 0.0f )
{
//OK 1.9
- dist = Length(m_object->RetPosition(0), m_targetPos);
+ dist = Math::Distance(m_object->RetPosition(0), m_targetPos);
if ( dist <= m_advanceLength + 2.0f )
{
m_move = 0.0f; // advance ended
@@ -600,7 +600,7 @@ Error CTaskManip::IsEnded()
}
}
- dist = Length(m_object->RetPosition(0), m_targetPos);
+ dist = Math::Distance(m_object->RetPosition(0), m_targetPos);
if ( dist <= m_advanceLength )
{
m_move = 0.0f; // advance ended
@@ -733,10 +733,10 @@ bool CTaskManip::Abort()
// Seeks the object below to take (for bees).
-CObject* CTaskManip::SearchTakeUnderObject(D3DVECTOR &pos, float dLimit)
+CObject* CTaskManip::SearchTakeUnderObject(Math::Vector &pos, float dLimit)
{
CObject *pObj, *pBest;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType type;
float min, distance;
int i;
@@ -771,7 +771,7 @@ CObject* CTaskManip::SearchTakeUnderObject(D3DVECTOR &pos, float dLimit)
if ( pObj->RetZoomY(0) != 1.0f ) continue;
oPos = pObj->RetPosition(0);
- distance = Length(oPos, iPos);
+ distance = Math::Distance(oPos, iPos);
if ( distance <= dLimit &&
distance < min )
{
@@ -788,11 +788,11 @@ CObject* CTaskManip::SearchTakeUnderObject(D3DVECTOR &pos, float dLimit)
// Seeks the object in front to take.
-CObject* CTaskManip::SearchTakeFrontObject(bool bAdvance, D3DVECTOR &pos,
+CObject* CTaskManip::SearchTakeFrontObject(bool bAdvance, Math::Vector &pos,
float &distance, float &angle)
{
CObject *pObj, *pBest;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType type;
float min, iAngle, bAngle, aLimit, dLimit, f;
int i;
@@ -847,7 +847,7 @@ CObject* CTaskManip::SearchTakeFrontObject(bool bAdvance, D3DVECTOR &pos,
if ( pObj->RetZoomY(0) != 1.0f ) continue;
oPos = pObj->RetPosition(0);
- distance = fabs(Length(oPos, iPos)-TAKE_DIST);
+ distance = fabs(Math::Distance(oPos, iPos)-TAKE_DIST);
f = 1.0f-distance/50.0f;
if ( f < 0.5f ) f = 0.5f;
@@ -880,11 +880,11 @@ CObject* CTaskManip::SearchTakeFrontObject(bool bAdvance, D3DVECTOR &pos,
// Seeks the object back to take.
-CObject* CTaskManip::SearchTakeBackObject(bool bAdvance, D3DVECTOR &pos,
+CObject* CTaskManip::SearchTakeBackObject(bool bAdvance, Math::Vector &pos,
float &distance, float &angle)
{
CObject *pObj, *pBest;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType type;
float min, iAngle, bAngle, aLimit, dLimit, f;
int i;
@@ -938,7 +938,7 @@ CObject* CTaskManip::SearchTakeBackObject(bool bAdvance, D3DVECTOR &pos,
if ( pObj->RetZoomY(0) != 1.0f ) continue;
oPos = pObj->RetPosition(0);
- distance = fabs(Length(oPos, iPos)-TAKE_DIST);
+ distance = fabs(Math::Distance(oPos, iPos)-TAKE_DIST);
f = 1.0f-distance/50.0f;
if ( f < 0.5f ) f = 0.5f;
@@ -971,15 +971,15 @@ CObject* CTaskManip::SearchTakeBackObject(bool bAdvance, D3DVECTOR &pos,
// Seeks the robot or building on which it wants to put a battery or or other object.
-CObject* CTaskManip::SearchOtherObject(bool bAdvance, D3DVECTOR &pos,
+CObject* CTaskManip::SearchOtherObject(bool bAdvance, Math::Vector &pos,
float &distance, float &angle,
float &height)
{
Character* character;
CObject* pObj;
CObject* pPower;
- D3DMATRIX* mat;
- D3DVECTOR iPos, oPos;
+ Math::Matrix* mat;
+ Math::Vector iPos, oPos;
ObjectType type, powerType;
float iAngle, iRad, oAngle, oLimit, aLimit, dLimit;
int i;
@@ -1086,7 +1086,7 @@ CObject* CTaskManip::SearchOtherObject(bool bAdvance, D3DVECTOR &pos,
angle = Math::RotateAngle(iPos.x-oPos.x, oPos.z-iPos.z); // CW !
if ( !Math::TestAngle(angle, oAngle-oLimit, oAngle+oLimit) ) continue;
- distance = fabs(Length(oPos, iPos)-TAKE_DIST);
+ distance = fabs(Math::Distance(oPos, iPos)-TAKE_DIST);
if ( distance <= dLimit )
{
angle = Math::RotateAngle(oPos.x-iPos.x, iPos.z-oPos.z); // CW !
@@ -1111,8 +1111,8 @@ bool CTaskManip::TruckTakeObject()
{
CObject* fret;
CObject* other;
- D3DMATRIX matRotate;
- D3DVECTOR pos;
+ Math::Matrix matRotate;
+ Math::Vector pos;
float angle, dist;
if ( m_arm == TMA_GRAB ) // takes immediately?
@@ -1127,7 +1127,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(4); // takes with the hand
- fret->SetPosition(0, D3DVECTOR(1.7f, -0.5f, 1.1f));
+ fret->SetPosition(0, Math::Vector(1.7f, -0.5f, 1.1f));
fret->SetAngleY(0, 0.1f);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, 0.8f);
@@ -1137,7 +1137,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(2); // takes with the right claw
- pos = D3DVECTOR(1.1f, -1.0f, 1.0f); // relative
+ pos = Math::Vector(1.1f, -1.0f, 1.0f); // relative
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleY(0, 0.0f);
@@ -1148,7 +1148,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(3); // takes with the hand
- pos = D3DVECTOR(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
+ pos = Math::Vector(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, Math::PI/2.0f);
@@ -1169,7 +1169,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(2); // takes with the right claw
- pos = D3DVECTOR(1.1f, -1.0f, 1.0f); // relative
+ pos = Math::Vector(1.1f, -1.0f, 1.0f); // relative
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleY(0, 0.0f);
@@ -1180,7 +1180,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(3); // takes with the hand
- pos = D3DVECTOR(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
+ pos = Math::Vector(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, Math::PI/2.0f);
@@ -1199,7 +1199,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(3); // takes with the hand
- pos = D3DVECTOR(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
+ pos = Math::Vector(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, Math::PI/2.0f);
@@ -1214,7 +1214,7 @@ bool CTaskManip::TruckTakeObject()
if ( fret == 0 ) return false; // no battery?
m_fretType = fret->RetType();
- pos = D3DVECTOR(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
+ pos = Math::Vector(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, Math::PI/2.0f);
@@ -1238,7 +1238,7 @@ bool CTaskManip::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(3); // takes with the hand
- pos = D3DVECTOR(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
+ pos = Math::Vector(4.7f, 0.0f, 0.0f); // relative to the hand (lem4)
fret->SetPosition(0, pos);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, Math::PI/2.0f);
@@ -1257,8 +1257,8 @@ bool CTaskManip::TruckDeposeObject()
Character* character;
CObject* fret;
CObject* other;
- D3DMATRIX* mat;
- D3DVECTOR pos;
+ Math::Matrix* mat;
+ Math::Vector pos;
float angle, dist;
if ( m_arm == TMA_FFRONT ) // deposits on the ground in front?
@@ -1268,7 +1268,7 @@ bool CTaskManip::TruckDeposeObject()
m_fretType = fret->RetType();
mat = fret->RetWorldMatrix(0);
- pos = Transform(*mat, D3DVECTOR(0.0f, 1.0f, 0.0f));
+ pos = Transform(*mat, Math::Vector(0.0f, 1.0f, 0.0f));
m_terrain->MoveOnFloor(pos);
fret->SetPosition(0, pos);
fret->SetAngleY(0, m_object->RetAngleY(0)+Math::PI/2.0f);
@@ -1287,7 +1287,7 @@ bool CTaskManip::TruckDeposeObject()
m_fretType = fret->RetType();
mat = fret->RetWorldMatrix(0);
- pos = Transform(*mat, D3DVECTOR(0.0f, 1.0f, 0.0f));
+ pos = Transform(*mat, Math::Vector(0.0f, 1.0f, 0.0f));
m_terrain->MoveOnFloor(pos);
fret->SetPosition(0, pos);
fret->SetAngleY(0, m_object->RetAngleY(0)+Math::PI/2.0f);
@@ -1349,11 +1349,11 @@ bool CTaskManip::TruckDeposeObject()
// Seeks if a location allows to deposit an object.
-bool CTaskManip::IsFreeDeposeObject(D3DVECTOR pos)
+bool CTaskManip::IsFreeDeposeObject(Math::Vector pos)
{
CObject* pObj;
- D3DMATRIX* mat;
- D3DVECTOR iPos, oPos;
+ Math::Matrix* mat;
+ Math::Vector iPos, oPos;
float oRadius;
int i, j;
@@ -1372,7 +1372,7 @@ bool CTaskManip::IsFreeDeposeObject(D3DVECTOR pos)
j = 0;
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
- if ( Length(iPos, oPos)-(oRadius+1.0f) < 2.0f )
+ if ( Math::Distance(iPos, oPos)-(oRadius+1.0f) < 2.0f )
{
return false; // location occupied
}
diff --git a/src/object/task/taskmanip.h b/src/object/task/taskmanip.h
index da1be09..77360f3 100644
--- a/src/object/task/taskmanip.h
+++ b/src/object/task/taskmanip.h
@@ -72,13 +72,13 @@ public:
protected:
void InitAngle();
- CObject* SearchTakeUnderObject(D3DVECTOR &pos, float dLimit);
- CObject* SearchTakeFrontObject(bool bAdvance, D3DVECTOR &pos, float &distance, float &angle);
- CObject* SearchTakeBackObject(bool bAdvance, D3DVECTOR &pos, float &distance, float &angle);
- CObject* SearchOtherObject(bool bAdvance, D3DVECTOR &pos, float &distance, float &angle, float &height);
+ CObject* SearchTakeUnderObject(Math::Vector &pos, float dLimit);
+ CObject* SearchTakeFrontObject(bool bAdvance, Math::Vector &pos, float &distance, float &angle);
+ CObject* SearchTakeBackObject(bool bAdvance, Math::Vector &pos, float &distance, float &angle);
+ CObject* SearchOtherObject(bool bAdvance, Math::Vector &pos, float &distance, float &angle, float &height);
bool TruckTakeObject();
bool TruckDeposeObject();
- bool IsFreeDeposeObject(D3DVECTOR pos);
+ bool IsFreeDeposeObject(Math::Vector pos);
void SoundManip(float time, float amplitude=1.0f, float frequency=1.0f);
protected:
@@ -99,7 +99,7 @@ protected:
bool m_bBee;
float m_angle;
float m_move;
- D3DVECTOR m_targetPos;
+ Math::Vector m_targetPos;
float m_timeLimit;
ObjectType m_fretType;
};
diff --git a/src/object/task/taskpen.cpp b/src/object/task/taskpen.cpp
index 8a62431..3e29d30 100644
--- a/src/object/task/taskpen.cpp
+++ b/src/object/task/taskpen.cpp
@@ -22,6 +22,7 @@
#include <d3d.h>
#include "common/struct.h"
+#include "math/geometry.h"
#include "math/old/math3d.h"
#include "common/event.h"
#include "common/misc.h"
@@ -59,7 +60,7 @@ CTaskPen::~CTaskPen()
bool CTaskPen::EventProcess(const Event &event)
{
- D3DVECTOR pos, speed;
+ Math::Vector pos, speed;
Math::Point dim;
int i;
@@ -145,8 +146,8 @@ bool CTaskPen::EventProcess(const Event &event)
Error CTaskPen::Start(bool bDown, int color)
{
- D3DVECTOR pos;
- D3DMATRIX* mat;
+ Math::Vector pos;
+ Math::Matrix* mat;
ObjectType type;
int i;
@@ -182,8 +183,8 @@ Error CTaskPen::Start(bool bDown, int color)
}
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(-3.0f, 7.0f, 0.0f);
- pos = Transform(*mat, pos); // position of carousel
+ pos = Math::Vector(-3.0f, 7.0f, 0.0f);
+ pos = Math::Transform(*mat, pos); // position of carousel
m_supportPos = pos;
m_phase = TPP_UP;
diff --git a/src/object/task/taskpen.h b/src/object/task/taskpen.h
index 4ed135d..918384b 100644
--- a/src/object/task/taskpen.h
+++ b/src/object/task/taskpen.h
@@ -65,7 +65,7 @@ protected:
float m_delay;
float m_time;
float m_lastParticule;
- D3DVECTOR m_supportPos;
+ Math::Vector m_supportPos;
float m_timeUp;
float m_oldAngle;
diff --git a/src/object/task/taskrecover.cpp b/src/object/task/taskrecover.cpp
index 3e3243c..a7e372a 100644
--- a/src/object/task/taskrecover.cpp
+++ b/src/object/task/taskrecover.cpp
@@ -66,7 +66,7 @@ CTaskRecover::~CTaskRecover()
bool CTaskRecover::EventProcess(const Event &event)
{
CObject* power;
- D3DVECTOR pos, speed;
+ Math::Vector pos, speed;
Math::Point dim;
float a, g, cirSpeed, angle, energy, dist, linSpeed;
@@ -102,7 +102,7 @@ bool CTaskRecover::EventProcess(const Event &event)
if ( m_phase == TRP_MOVE ) // preliminary forward/backward?
{
- dist = Length(m_object->RetPosition(0), m_ruin->RetPosition(0));
+ dist = Math::Distance(m_object->RetPosition(0), m_ruin->RetPosition(0));
linSpeed = 0.0f;
if ( dist > RECOVER_DIST ) linSpeed = 1.0f;
if ( dist < RECOVER_DIST ) linSpeed = -1.0f;
@@ -185,8 +185,8 @@ bool CTaskRecover::EventProcess(const Event &event)
Error CTaskRecover::Start()
{
CObject* power;
- D3DMATRIX* mat;
- D3DVECTOR pos, iPos, oPos;
+ Math::Matrix* mat;
+ Math::Vector pos, iPos, oPos;
float energy;
ObjectType type;
@@ -203,7 +203,7 @@ Error CTaskRecover::Start()
if ( energy < ENERGY_RECOVER/power->RetCapacity()+0.05f ) return ERR_RECOVER_ENERGY;
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(RECOVER_DIST, 3.3f, 0.0f);
+ pos = Math::Vector(RECOVER_DIST, 3.3f, 0.0f);
pos = Transform(*mat, pos); // position in front
m_recoverPos = pos;
@@ -233,8 +233,8 @@ Error CTaskRecover::Start()
Error CTaskRecover::IsEnded()
{
- D3DMATRIX* mat;
- D3DVECTOR pos, speed, goal;
+ Math::Matrix* mat;
+ Math::Vector pos, speed, goal;
Math::Point dim;
float angle, dist, time;
int i;
@@ -251,7 +251,7 @@ Error CTaskRecover::IsEnded()
{
m_physics->SetMotorSpeedZ(0.0f);
- dist = Length(m_object->RetPosition(0), m_ruin->RetPosition(0));
+ dist = Math::Distance(m_object->RetPosition(0), m_ruin->RetPosition(0));
if ( dist > RECOVER_DIST )
{
time = m_physics->RetLinTimeLength(dist-RECOVER_DIST, 1.0f);
@@ -270,7 +270,7 @@ Error CTaskRecover::IsEnded()
if ( m_phase == TRP_MOVE ) // preliminary advance?
{
- dist = Length(m_object->RetPosition(0), m_ruin->RetPosition(0));
+ dist = Math::Distance(m_object->RetPosition(0), m_ruin->RetPosition(0));
if ( dist >= RECOVER_DIST-1.0f &&
dist <= RECOVER_DIST+1.0f )
@@ -278,7 +278,7 @@ Error CTaskRecover::IsEnded()
m_physics->SetMotorSpeedX(0.0f);
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(RECOVER_DIST, 3.3f, 0.0f);
+ pos = Math::Vector(RECOVER_DIST, 3.3f, 0.0f);
pos = Transform(*mat, pos); // position in front
m_recoverPos = pos;
@@ -323,9 +323,9 @@ Error CTaskRecover::IsEnded()
m_metal->SetZoom(0, 0.0f);
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(RECOVER_DIST, 3.1f, 3.9f);
+ pos = Math::Vector(RECOVER_DIST, 3.1f, 3.9f);
pos = Transform(*mat, pos);
- goal = D3DVECTOR(RECOVER_DIST, 3.1f, -3.9f);
+ goal = Math::Vector(RECOVER_DIST, 3.1f, -3.9f);
goal = Transform(*mat, goal);
m_particule->CreateRay(pos, goal, PARTIRAY2,
Math::Point(2.0f, 2.0f), 8.0f);
@@ -392,7 +392,7 @@ bool CTaskRecover::Abort()
CObject* CTaskRecover::SearchRuin()
{
CObject *pObj, *pBest;
- D3DVECTOR oPos;
+ Math::Vector oPos;
ObjectType type;
float dist, min;
int i;
@@ -413,7 +413,7 @@ CObject* CTaskRecover::SearchRuin()
type == OBJECT_RUINmobiler2 ) // vehicle in ruin?
{
oPos = pObj->RetPosition(0);
- dist = Length(oPos, m_recoverPos);
+ dist = Math::Distance(oPos, m_recoverPos);
if ( dist > 40.0f ) continue;
if ( dist < min )
diff --git a/src/object/task/taskrecover.h b/src/object/task/taskrecover.h
index 9d9aa07..4632b0b 100644
--- a/src/object/task/taskrecover.h
+++ b/src/object/task/taskrecover.h
@@ -67,7 +67,7 @@ protected:
bool m_bError;
CObject* m_ruin;
CObject* m_metal;
- D3DVECTOR m_recoverPos;
+ Math::Vector m_recoverPos;
int m_soundChannel;
};
diff --git a/src/object/task/taskreset.cpp b/src/object/task/taskreset.cpp
index f44f22a..0d18c6d 100644
--- a/src/object/task/taskreset.cpp
+++ b/src/object/task/taskreset.cpp
@@ -63,7 +63,7 @@ CTaskReset::~CTaskReset()
bool CTaskReset::EventProcess(const Event &event)
{
- D3DVECTOR pos, speed;
+ Math::Vector pos, speed;
Math::Point dim;
float angle, duration;
@@ -175,7 +175,7 @@ bool CTaskReset::EventProcess(const Event &event)
// Assigns the goal was achieved.
// A positive angle makes a turn right.
-Error CTaskReset::Start(D3DVECTOR goal, D3DVECTOR angle)
+Error CTaskReset::Start(Math::Vector goal, Math::Vector angle)
{
CObject* fret;
int i;
@@ -242,7 +242,7 @@ Error CTaskReset::IsEnded()
if ( m_phase == TRSP_ZOUT )
{
- dist = Length(m_begin, m_goal);
+ dist = Math::Distance(m_begin, m_goal);
m_phase = TRSP_MOVE;
m_speed = 1.0f/(dist*RESET_DELAY_MOVE/100.0f);
m_progress = 0.0f;
@@ -283,7 +283,7 @@ Error CTaskReset::IsEnded()
bool CTaskReset::SearchVehicle()
{
CObject* pObj;
- D3DVECTOR oPos;
+ Math::Vector oPos;
ObjectType type;
float oRadius, dist;
int i;
@@ -332,7 +332,7 @@ bool CTaskReset::SearchVehicle()
type != OBJECT_WORM ) continue;
if ( !pObj->GetCrashSphere(0, oPos, oRadius) ) continue;
- dist = Length(oPos, m_goal)-oRadius;
+ dist = Math::Distance(oPos, m_goal)-oRadius;
if ( dist < 5.0f ) return true;
}
diff --git a/src/object/task/taskreset.h b/src/object/task/taskreset.h
index d622cd0..603aef2 100644
--- a/src/object/task/taskreset.h
+++ b/src/object/task/taskreset.h
@@ -48,16 +48,16 @@ public:
bool EventProcess(const Event &event);
- Error Start(D3DVECTOR goal, D3DVECTOR angle);
+ Error Start(Math::Vector goal, Math::Vector angle);
Error IsEnded();
protected:
bool SearchVehicle();
protected:
- D3DVECTOR m_begin;
- D3DVECTOR m_goal;
- D3DVECTOR m_angle;
+ Math::Vector m_begin;
+ Math::Vector m_goal;
+ Math::Vector m_angle;
TaskResetPhase m_phase;
bool m_bError;
diff --git a/src/object/task/tasksearch.cpp b/src/object/task/tasksearch.cpp
index c002d6a..7660bfa 100644
--- a/src/object/task/tasksearch.cpp
+++ b/src/object/task/tasksearch.cpp
@@ -22,6 +22,7 @@
#include <d3d.h>
#include "common/struct.h"
+#include "math/geometry.h"
#include "math/old/math3d.h"
#include "common/event.h"
#include "common/misc.h"
@@ -59,8 +60,8 @@ CTaskSearch::~CTaskSearch()
bool CTaskSearch::EventProcess(const Event &event)
{
- D3DMATRIX* mat;
- D3DVECTOR pos, speed;
+ Math::Matrix* mat;
+ Math::Vector pos, speed;
Math::Point dim;
float angle;
int i;
@@ -89,8 +90,8 @@ bool CTaskSearch::EventProcess(const Event &event)
m_lastParticule = m_time;
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(6.5f, 0.2f, 0.0f);
- pos = Transform(*mat, pos); // sensor position
+ pos = Math::Vector(6.5f, 0.2f, 0.0f);
+ pos = Math::Transform(*mat, pos); // sensor position
speed.x = (Math::Rand()-0.5f)*20.0f;
speed.z = (Math::Rand()-0.5f)*20.0f;
@@ -135,7 +136,7 @@ void CTaskSearch::InitAngle()
Error CTaskSearch::Start()
{
ObjectType type;
- D3DVECTOR speed;
+ Math::Vector speed;
int i;
m_bError = true;
@@ -240,14 +241,14 @@ bool CTaskSearch::CreateMark()
{
CObject* fret;
ObjectType type;
- D3DMATRIX* mat;
- D3DVECTOR pos;
+ Math::Matrix* mat;
+ Math::Vector pos;
TerrainRes res;
Error info;
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(7.5f, 0.0f, 0.0f);
- pos = Transform(*mat, pos); // sensor position
+ pos = Math::Vector(7.5f, 0.0f, 0.0f);
+ pos = Math::Transform(*mat, pos); // sensor position
res = m_terrain->RetResource(pos);
if ( res == TR_NULL ) return false;
@@ -310,7 +311,7 @@ bool CTaskSearch::CreateMark()
void CTaskSearch::DeleteMark(ObjectType type)
{
CObject* pObj;
- D3DVECTOR oPos;
+ Math::Vector oPos;
int i;
for ( i=0 ; i<1000000 ; i++ )
diff --git a/src/object/task/taskshield.cpp b/src/object/task/taskshield.cpp
index c4993fc..cedce35 100644
--- a/src/object/task/taskshield.cpp
+++ b/src/object/task/taskshield.cpp
@@ -22,6 +22,7 @@
#include <d3d.h>
#include "math/const.h"
+#include "math/geometry.h"
#include "common/struct.h"
#include "math/old/math3d.h"
#include "common/event.h"
@@ -66,9 +67,9 @@ CTaskShield::~CTaskShield()
bool CTaskShield::EventProcess(const Event &event)
{
CObject* power;
- D3DMATRIX* mat;
- D3DMATRIX matrix;
- D3DVECTOR pos, speed, goal, angle;
+ Math::Matrix* mat;
+ Math::Matrix matrix;
+ Math::Vector pos, speed, goal, angle;
D3DCOLORVALUE color;
Math::Point dim;
float energy;
@@ -82,8 +83,8 @@ bool CTaskShield::EventProcess(const Event &event)
m_delay -= event.rTime;
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(7.0f, 15.0f, 0.0f);
- pos = Transform(*mat, pos); // sphere position
+ pos = Math::Vector(7.0f, 15.0f, 0.0f);
+ pos = Math::Transform(*mat, pos); // sphere position
m_shieldPos = pos;
if ( m_rankSphere != -1 )
@@ -174,8 +175,8 @@ bool CTaskShield::EventProcess(const Event &event)
angle.x = (Math::Rand()-0.5f)*Math::PI*1.2f;
angle.y = 0.0f;
angle.z = (Math::Rand()-0.5f)*Math::PI*1.2f;
- MatRotateXZY(matrix, angle);
- goal = Transform(matrix, D3DVECTOR(0.0f, RetRadius()-dim.x, 0.0f));
+ Math::LoadRotationXZYMatrix(matrix, angle);
+ goal = Math::Transform(matrix, Math::Vector(0.0f, RetRadius()-dim.x, 0.0f));
goal += pos;
m_particule->CreateRay(pos, goal, PARTIRAY2, dim, 0.3f);
}
@@ -238,8 +239,8 @@ bool CTaskShield::EventProcess(const Event &event)
Error CTaskShield::Start(TaskShieldMode mode, float delay)
{
CObject* power;
- D3DMATRIX* mat;
- D3DVECTOR pos, iPos, oPos, speed;
+ Math::Matrix* mat;
+ Math::Vector pos, iPos, oPos, speed;
ObjectType type;
float energy;
@@ -269,7 +270,7 @@ Error CTaskShield::Start(TaskShieldMode mode, float delay)
if ( energy == 0.0f ) return ERR_SHIELD_ENERGY;
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(7.0f, 15.0f, 0.0f);
+ pos = Math::Vector(7.0f, 15.0f, 0.0f);
pos = Transform(*mat, pos); // sphere position
m_shieldPos = pos;
@@ -341,7 +342,7 @@ Error CTaskShield::Stop()
Error CTaskShield::IsEnded()
{
CObject* power;
- D3DVECTOR pos, speed;
+ Math::Vector pos, speed;
Math::Point dim;
float energy;
@@ -396,7 +397,7 @@ Error CTaskShield::IsEnded()
m_object->SetShieldRadius(RetRadius());
pos = m_shieldPos;
- speed = D3DVECTOR(0.0f, 0.0f, 0.0f);
+ speed = Math::Vector(0.0f, 0.0f, 0.0f);
dim.x = RetRadius();
dim.y = dim.x;
m_rankSphere = m_particule->CreateParticule(pos, speed, dim, PARTISPHERE3, 2.0f, 0.0f, 0.0f);
@@ -449,7 +450,7 @@ bool CTaskShield::IsBusy()
bool CTaskShield::Abort()
{
- D3DVECTOR pos;
+ Math::Vector pos;
m_object->SetShieldRadius(0.0f);
@@ -489,7 +490,7 @@ bool CTaskShield::Abort()
// Creates the light to accompany a pyrotechnic effect.
-bool CTaskShield::CreateLight(D3DVECTOR pos)
+bool CTaskShield::CreateLight(Math::Vector pos)
{
D3DLIGHT7 light;
@@ -530,7 +531,7 @@ void CTaskShield::IncreaseShield()
{
ObjectType type;
CObject* pObj;
- D3DVECTOR oPos;
+ Math::Vector oPos;
float dist, shield;
int i;
@@ -547,7 +548,7 @@ void CTaskShield::IncreaseShield()
type == OBJECT_WORM ) continue;
oPos = pObj->RetPosition(0);
- dist = Length(oPos, m_shieldPos);
+ dist = Math::Distance(oPos, m_shieldPos);
if ( dist <= RetRadius()+10.0f )
{
shield = pObj->RetShield();
diff --git a/src/object/task/taskshield.h b/src/object/task/taskshield.h
index 916cd6d..0e36e49 100644
--- a/src/object/task/taskshield.h
+++ b/src/object/task/taskshield.h
@@ -68,7 +68,7 @@ public:
protected:
Error Stop();
- bool CreateLight(D3DVECTOR pos);
+ bool CreateLight(Math::Vector pos);
void IncreaseShield();
float RetRadius();
@@ -83,7 +83,7 @@ protected:
float m_lastIncrease;
float m_energyUsed;
bool m_bError;
- D3DVECTOR m_shieldPos;
+ Math::Vector m_shieldPos;
int m_rankSphere;
int m_soundChannel;
int m_effectLight;
diff --git a/src/object/task/tasktake.cpp b/src/object/task/tasktake.cpp
index adb6e71..7817b90 100644
--- a/src/object/task/tasktake.cpp
+++ b/src/object/task/tasktake.cpp
@@ -87,7 +87,7 @@ bool CTaskTake::EventProcess(const Event &event)
m_progress += event.rTime*m_speed; // others advance
- m_physics->SetMotorSpeed(D3DVECTOR(0.0f, 0.0f, 0.0f)); // immobile!
+ m_physics->SetMotorSpeed(Math::Vector(0.0f, 0.0f, 0.0f)); // immobile!
return true;
}
@@ -100,7 +100,7 @@ Error CTaskTake::Start()
ObjectType type;
CObject* other;
float iAngle, oAngle, h;
- D3DVECTOR pos;
+ Math::Vector pos;
m_height = 0.0f;
m_step = 0;
@@ -123,7 +123,7 @@ Error CTaskTake::Start()
if ( type != OBJECT_HUMAN &&
type != OBJECT_TECH ) return ERR_MANIP_VEH;
- m_physics->SetMotorSpeed(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_physics->SetMotorSpeed(Math::Vector(0.0f, 0.0f, 0.0f));
if ( m_object->RetFret() == 0 )
{
@@ -186,7 +186,7 @@ Error CTaskTake::Start()
}
else
{
- if ( !IsFreeDeposeObject(D3DVECTOR(2.5f, 0.0f, 0.0f)) ) return ERR_MANIP_OCC;
+ if ( !IsFreeDeposeObject(Math::Vector(2.5f, 0.0f, 0.0f)) ) return ERR_MANIP_OCC;
//? m_camera->StartCentering(m_object, Math::PI*0.3f, 99.9f, 0.0f, 0.8f);
m_arm = TTA_FFRONT;
}
@@ -313,7 +313,7 @@ CObject* CTaskTake::SearchTakeObject(float &angle,
float dLimit, float aLimit)
{
CObject *pObj, *pBest;
- D3DVECTOR iPos, oPos;
+ Math::Vector iPos, oPos;
ObjectType type;
float min, iAngle, bAngle, a, distance;
int i;
@@ -351,7 +351,7 @@ CObject* CTaskTake::SearchTakeObject(float &angle,
if ( pObj->RetZoomY(0) != 1.0f ) continue;
oPos = pObj->RetPosition(0);
- distance = Length(oPos, iPos);
+ distance = Math::Distance(oPos, iPos);
if ( distance >= 4.0f-dLimit &&
distance <= 4.0f+dLimit )
{
@@ -381,8 +381,8 @@ CObject* CTaskTake::SearchFriendObject(float &angle,
Character* character;
CObject* pObj;
CObject* pPower;
- D3DMATRIX* mat;
- D3DVECTOR iPos, oPos;
+ Math::Matrix* mat;
+ Math::Vector iPos, oPos;
ObjectType type, powerType;
float iAngle, iRad, distance;
int i;
@@ -446,7 +446,7 @@ CObject* CTaskTake::SearchFriendObject(float &angle,
character = pObj->RetCharacter();
oPos = Transform(*mat, character->posPower);
- distance = fabs(Length(oPos, iPos) - (iRad+1.0f));
+ distance = fabs(Math::Distance(oPos, iPos) - (iRad+1.0f));
if ( distance <= dLimit )
{
angle = Math::RotateAngle(oPos.x-iPos.x, iPos.z-oPos.z); // CW !
@@ -468,7 +468,7 @@ bool CTaskTake::TruckTakeObject()
{
CObject* fret;
CObject* other;
- D3DMATRIX matRotate;
+ Math::Matrix matRotate;
float angle;
if ( m_arm == TTA_FFRONT ) // takes on the ground in front?
@@ -481,8 +481,8 @@ bool CTaskTake::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(4); // takes with the hand
-//? fret->SetPosition(0, D3DVECTOR(2.2f, -1.0f, 1.1f));
- fret->SetPosition(0, D3DVECTOR(1.7f, -0.5f, 1.1f));
+//? fret->SetPosition(0, Math::Vector(2.2f, -1.0f, 1.1f));
+ fret->SetPosition(0, Math::Vector(1.7f, -0.5f, 1.1f));
fret->SetAngleY(0, 0.1f);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, 0.8f);
@@ -503,8 +503,8 @@ bool CTaskTake::TruckTakeObject()
fret->SetTruck(m_object);
fret->SetTruckPart(4); // takes with the hand
-//? fret->SetPosition(0, D3DVECTOR(2.2f, -1.0f, 1.1f));
- fret->SetPosition(0, D3DVECTOR(1.7f, -0.5f, 1.1f));
+//? fret->SetPosition(0, Math::Vector(2.2f, -1.0f, 1.1f));
+ fret->SetPosition(0, Math::Vector(1.7f, -0.5f, 1.1f));
fret->SetAngleY(0, 0.1f);
fret->SetAngleX(0, 0.0f);
fret->SetAngleZ(0, 0.8f);
@@ -522,8 +522,8 @@ bool CTaskTake::TruckDeposeObject()
Character* character;
CObject* fret;
CObject* other;
- D3DMATRIX* mat;
- D3DVECTOR pos;
+ Math::Matrix* mat;
+ Math::Vector pos;
float angle;
if ( m_arm == TTA_FFRONT ) // deposes on the ground in front?
@@ -533,7 +533,7 @@ bool CTaskTake::TruckDeposeObject()
m_fretType = fret->RetType();
mat = fret->RetWorldMatrix(0);
- pos = Transform(*mat, D3DVECTOR(-0.5f, 1.0f, 0.0f));
+ pos = Transform(*mat, Math::Vector(-0.5f, 1.0f, 0.0f));
m_terrain->MoveOnFloor(pos);
fret->SetPosition(0, pos);
fret->SetAngleY(0, m_object->RetAngleY(0)+Math::PI/2.0f);
@@ -575,11 +575,11 @@ bool CTaskTake::TruckDeposeObject()
// Seeks if a location allows to deposit an object.
-bool CTaskTake::IsFreeDeposeObject(D3DVECTOR pos)
+bool CTaskTake::IsFreeDeposeObject(Math::Vector pos)
{
CObject* pObj;
- D3DMATRIX* mat;
- D3DVECTOR iPos, oPos;
+ Math::Matrix* mat;
+ Math::Vector iPos, oPos;
float oRadius;
int i, j;
@@ -598,7 +598,7 @@ bool CTaskTake::IsFreeDeposeObject(D3DVECTOR pos)
j = 0;
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
- if ( Length(iPos, oPos)-(oRadius+1.0f) < 1.0f )
+ if ( Math::Distance(iPos, oPos)-(oRadius+1.0f) < 1.0f )
{
return false; // location occupied
}
diff --git a/src/object/task/tasktake.h b/src/object/task/tasktake.h
index 68d2c8e..b9dc053 100644
--- a/src/object/task/tasktake.h
+++ b/src/object/task/tasktake.h
@@ -63,7 +63,7 @@ protected:
CObject* SearchFriendObject(float &angle, float dLimit, float aLimit);
bool TruckTakeObject();
bool TruckDeposeObject();
- bool IsFreeDeposeObject(D3DVECTOR pos);
+ bool IsFreeDeposeObject(Math::Vector pos);
protected:
CTerrain* m_terrain;
diff --git a/src/object/task/taskterraform.cpp b/src/object/task/taskterraform.cpp
index efa251f..5d06956 100644
--- a/src/object/task/taskterraform.cpp
+++ b/src/object/task/taskterraform.cpp
@@ -22,6 +22,7 @@
#include <d3d.h>
#include "common/struct.h"
+#include "math/geometry.h"
#include "common/language.h"
#include "math/old/math3d.h"
#include "common/event.h"
@@ -68,8 +69,8 @@ CTaskTerraform::~CTaskTerraform()
bool CTaskTerraform::EventProcess(const Event &event)
{
CObject* power;
- D3DMATRIX* mat;
- D3DVECTOR pos, dir, speed;
+ Math::Matrix* mat;
+ Math::Vector pos, dir, speed;
Math::Point dim;
float energy;
@@ -157,10 +158,10 @@ bool CTaskTerraform::EventProcess(const Event &event)
if ( m_phase == TTP_CHARGE )
{
// Battery.
- pos = D3DVECTOR(-6.0f, 5.5f+2.0f*m_progress, 0.0f);
+ pos = Math::Vector(-6.0f, 5.5f+2.0f*m_progress, 0.0f);
pos.x += (Math::Rand()-0.5f)*1.0f;
pos.z += (Math::Rand()-0.5f)*1.0f;
- pos = Transform(*mat, pos);
+ pos = Math::Transform(*mat, pos);
speed.x = (Math::Rand()-0.5f)*6.0f*(1.0f+m_progress*4.0f);
speed.z = (Math::Rand()-0.5f)*6.0f*(1.0f+m_progress*4.0f);
speed.y = 6.0f+Math::Rand()*4.0f*(1.0f+m_progress*2.0f);
@@ -172,28 +173,28 @@ bool CTaskTerraform::EventProcess(const Event &event)
if ( m_phase != TTP_CHARGE )
{
// Left grid.
- pos = D3DVECTOR(-1.0f, 5.8f, 3.5f);
+ pos = Math::Vector(-1.0f, 5.8f, 3.5f);
pos.x += (Math::Rand()-0.5f)*1.0f;
pos.z += (Math::Rand()-0.5f)*1.0f;
- pos = Transform(*mat, pos);
+ pos = Math::Transform(*mat, pos);
speed.x = Math::Rand()*4.0f;
speed.z = Math::Rand()*2.0f;
speed.y = 2.5f+Math::Rand()*1.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= m_object->RetPosition(0);
dim.x = Math::Rand()*1.0f+1.0f;
dim.y = dim.x;
m_particule->CreateParticule(pos, speed, dim, PARTISMOKE1, 3.0f);
// Right grid.
- pos = D3DVECTOR(-1.0f, 5.8f, -3.5f);
+ pos = Math::Vector(-1.0f, 5.8f, -3.5f);
pos.x += (Math::Rand()-0.5f)*1.0f;
pos.z += (Math::Rand()-0.5f)*1.0f;
- pos = Transform(*mat, pos);
+ pos = Math::Transform(*mat, pos);
speed.x = Math::Rand()*4.0f;
speed.z = -Math::Rand()*2.0f;
speed.y = 2.5f+Math::Rand()*1.0f;
- speed = Transform(*mat, speed);
+ speed = Math::Transform(*mat, speed);
speed -= m_object->RetPosition(0);
dim.x = Math::Rand()*1.0f+1.0f;
dim.y = dim.x;
@@ -210,8 +211,8 @@ bool CTaskTerraform::EventProcess(const Event &event)
Error CTaskTerraform::Start()
{
CObject* power;
- D3DMATRIX* mat;
- D3DVECTOR pos, speed;
+ Math::Matrix* mat;
+ Math::Vector pos, speed;
float energy;
ObjectType type;
@@ -232,8 +233,8 @@ Error CTaskTerraform::Start()
speed.z != 0.0f ) return ERR_MANIP_MOTOR;
mat = m_object->RetWorldMatrix(0);
- pos = D3DVECTOR(9.0f, 0.0f, 0.0f);
- pos = Transform(*mat, pos); // battery position
+ pos = Math::Vector(9.0f, 0.0f, 0.0f);
+ pos = Math::Transform(*mat, pos); // battery position
m_terraPos = pos;
m_phase = TTP_CHARGE;
@@ -256,7 +257,7 @@ Error CTaskTerraform::Start()
Error CTaskTerraform::IsEnded()
{
CObject* power;
- D3DVECTOR pos, speed;
+ Math::Vector pos, speed;
Math::Point dim;
float dist, duration;
int i, max;
@@ -284,7 +285,7 @@ Error CTaskTerraform::IsEnded()
Terraform(); // changes the terrain.
#endif
- m_object->SetCirVibration(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_object->SetCirVibration(Math::Vector(0.0f, 0.0f, 0.0f));
m_object->SetZoom(0, 1.0f);
power = m_object->RetPower();
@@ -300,8 +301,8 @@ Error CTaskTerraform::IsEnded()
pos.z = m_terraPos.z+(Math::Rand()-0.5f)*80.0f;
pos.y = m_terraPos.y;
m_terrain->MoveOnFloor(pos);
- dist = Length(pos, m_terraPos);
- speed = D3DVECTOR(0.0f, 0.0f, 0.0f);
+ dist = Math::Distance(pos, m_terraPos);
+ speed = Math::Vector(0.0f, 0.0f, 0.0f);
dim.x = 2.0f+(40.0f-dist)/(1.0f+Math::Rand()*4.0f);
dim.y = dim.x;
m_particule->CreateParticule(pos, speed, dim, PARTICRASH, 2.0f);
@@ -348,9 +349,9 @@ bool CTaskTerraform::Abort()
m_soundChannel = -1;
}
- m_object->SetPosition(2, D3DVECTOR(9.0f, 4.0f, 0.0f));
- m_object->SetInclinaison(D3DVECTOR(0.0f, 0.0f, 0.0f));
- m_object->SetCirVibration(D3DVECTOR(0.0f, 0.0f, 0.0f));
+ m_object->SetPosition(2, Math::Vector(9.0f, 4.0f, 0.0f));
+ m_object->SetInclinaison(Math::Vector(0.0f, 0.0f, 0.0f));
+ m_object->SetCirVibration(Math::Vector(0.0f, 0.0f, 0.0f));
m_object->SetZoom(0, 1.0f);
power = m_object->RetPower();
@@ -390,7 +391,7 @@ bool CTaskTerraform::Terraform()
if ( type == OBJECT_TEEN34 ) // stone?
{
- dist = Length(m_terraPos, pObj->RetPosition(0));
+ dist = Math::Distance(m_terraPos, pObj->RetPosition(0));
if ( dist > 20.0f ) continue;
pyro = new CPyro(m_iMan);
@@ -401,7 +402,7 @@ bool CTaskTerraform::Terraform()
motion = pObj->RetMotion();
if ( motion == 0 ) continue;
- dist = Length(m_terraPos, pObj->RetPosition(0));
+ dist = Math::Distance(m_terraPos, pObj->RetPosition(0));
if ( dist > ACTION_RADIUS ) continue;
if ( type == OBJECT_ANT )
diff --git a/src/object/task/taskterraform.h b/src/object/task/taskterraform.h
index 7d5ef30..c3ab957 100644
--- a/src/object/task/taskterraform.h
+++ b/src/object/task/taskterraform.h
@@ -64,6 +64,6 @@ protected:
float m_lastParticule;
int m_soundChannel;
bool m_bError;
- D3DVECTOR m_terraPos;
+ Math::Vector m_terraPos;
};