Skip to content

Commit

Permalink
Implemented aiMap functions
Browse files Browse the repository at this point in the history
  • Loading branch information
KcRobin9 authored May 31, 2024
1 parent 4121625 commit ac914e5
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 13 deletions.
2 changes: 1 addition & 1 deletion code/midtown/arts7/camera.h
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ class asCamera final : public asNode
return &camera_;
}

private:
public:
// ?Regen@asCamera@@AAEXXZ
ARTS_IMPORT void Regen();

Expand Down
83 changes: 80 additions & 3 deletions code/midtown/mmai/aiMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,16 @@ define_dummy_symbol(mmai_aiMap);

#include "aiMap.h"

#include "arts7/camera.h"
#include "arts7/cullmgr.h"
#include "mmcity/cullcity.h"

#include "aiIntersection.h"
#include "aiPath.h"
#include "aiVehicleAmbient.h"
#include "aiVehicleOpponent.h"
#include "aiVehiclePolice.h"

void aiMap::UpdatePaused()
{}

#ifdef ARTS_DEV_BUILD
void aiMap::AddWidgets(Bank* bank)
{
Expand Down Expand Up @@ -112,4 +113,80 @@ void aiMap::DumpIntersections()

for (i32 i = 0; i < NumIntersections; ++i)
Intersections[i]->Dump();
}

void aiMap::GetCameraPos()
{
CameraPos = CullCity()->Camera->camera_.m3;
}

aiIntersection* aiMap::Intersection(i32 index)
{
if (index >= 0 && index <= NumIntersections)
return Intersections[index];

Warningf("Returning a NULL Intersection. Idx: %d", index);
return 0;
}

aiVehicleOpponent* aiMap::Opponent(i32 index)
{
if (index >= 0 && index <= NumOpponents)
return &Opponents[index];

Warningf("Returning a NULL Opponent. Idx: %d", index);
return 0;
}

aiPath* aiMap::Path(i32 index)
{
if (index >= 0 && index <= NumPaths)
return Paths[index];

Warningf("Returning a NULL Path for %d.", index);
return 0;
}

aiPedestrian* aiMap::Pedestrian(i32 index)
{
if (index >= 0 && index <= NumPedestrians)
return Pedestrians;

Warningf("Returning a NULL Pedestrian. Idx: %d", index);
return 0;
}

Vector3& aiMap::PlayerPos()
{
return PlayerCar->Sim.ICS.Matrix.m3;
}

aiVehiclePolice* aiMap::Police(i32 index)
{
if (index >= 0 && index <= NumPolice)
return &PoliceVehicles[index];

Warningf("Returning a NULL Cop. Idx: %d", index);
return 0;
}

void aiMap::Stats()
{
Statsf("AI Total Update: %.3fms", _fTotUpdate * 1000.0f);
Statsf("Ped Update: %.3fms, Qty: %d", _fPedUpdate * 1000.0f, _nPedQty);
Statsf("Ambient Update: %.3fms, Qty: %d", _fAmbientUpdate * 1000.0f, _nAmbientQty);
Statsf("Opponent Update: %.3fms, Qty: %d", _fOppUpdate * 1000.0f, NumOpponents);
Statsf("Police Update: %.3fms, Qty: %d", _fCopUpdate * 1000.0f, NumPolice);
}

void aiMap::UpdatePaused()
{}

aiVehicleAmbient* aiMap::Vehicle(i32 index)
{
if (index >= 0 && index <= NumAmbients)
return &Ambients[index];

Warningf("Returning a NULL Vehicle. Idx: %d", index);
return 0;
}
18 changes: 9 additions & 9 deletions code/midtown/mmai/aiMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ class aiMap final : public asNode
ARTS_IMPORT i32 FindPedAppRoad(i32 arg1);

// ?GetCameraPos@aiMap@@QAEXXZ | unused
ARTS_IMPORT void GetCameraPos();
ARTS_EXPORT void GetCameraPos();

// ?GetClass@aiMap@@UAEPAVMetaClass@@XZ
ARTS_IMPORT MetaClass* GetClass() override;
Expand All @@ -241,25 +241,25 @@ class aiMap final : public asNode
ARTS_IMPORT void Init(char* arg1, char* arg2, char* arg3, mmCar* arg4);

// ?Intersection@aiMap@@QAEPAVaiIntersection@@H@Z
ARTS_IMPORT aiIntersection* Intersection(i32 arg1);
ARTS_EXPORT aiIntersection* Intersection(i32 index);

// ?MapComponent@aiMap@@QAEHAAVVector3@@PAF1F@Z
ARTS_IMPORT i32 MapComponent(Vector3& arg1, i16* arg2, i16* arg3, i16 arg4);

// ?Opponent@aiMap@@QAEPAVaiVehicleOpponent@@H@Z
ARTS_IMPORT aiVehicleOpponent* Opponent(i32 arg1);
ARTS_EXPORT aiVehicleOpponent* Opponent(i32 index);

// ?Path@aiMap@@QAEPAVaiPath@@H@Z
ARTS_IMPORT aiPath* Path(i32 arg1);
ARTS_EXPORT aiPath* Path(i32 index);

// ?Pedestrian@aiMap@@QAEPAVaiPedestrian@@H@Z | unused
ARTS_IMPORT aiPedestrian* Pedestrian(i32 arg1);
ARTS_EXPORT aiPedestrian* Pedestrian(i32 index);

// ?PlayerPos@aiMap@@QAEAAVVector3@@XZ | unused
ARTS_IMPORT Vector3& PlayerPos();
ARTS_EXPORT Vector3& PlayerPos();

// ?Police@aiMap@@QAEPAVaiVehiclePolice@@H@Z
ARTS_IMPORT aiVehiclePolice* Police(i32 arg1);
ARTS_EXPORT aiVehiclePolice* Police(i32 index);

// ?PredictAmbFreewayIntersectionPath@aiMap@@QAEPAVaiPath@@HAAVMatrix34@@@Z
ARTS_IMPORT aiPath* PredictAmbFreewayIntersectionPath(i32 arg1, Matrix34& arg2);
Expand All @@ -281,7 +281,7 @@ class aiMap final : public asNode

#ifdef ARTS_DEV_BUILD
// ?Stats@aiMap@@QAEXXZ
ARTS_IMPORT void Stats();
ARTS_EXPORT void Stats();
#endif

// ?Update@aiMap@@UAEXXZ
Expand All @@ -291,7 +291,7 @@ class aiMap final : public asNode
ARTS_EXPORT void UpdatePaused() override;

// ?Vehicle@aiMap@@QAEPAVaiVehicleAmbient@@H@Z | unused
ARTS_IMPORT aiVehicleAmbient* Vehicle(i32 arg1);
ARTS_EXPORT aiVehicleAmbient* Vehicle(i32 index);

// ?DeclareFields@aiMap@@SAXXZ
ARTS_IMPORT static void DeclareFields();
Expand Down

0 comments on commit ac914e5

Please sign in to comment.