Skip to content

Commit afb20b7

Browse files
authored
Merge pull request #157 from cortex-command-community/minor-fixes
Minor fixes - GetArea warning, Navigatable -> Navigable, etc
2 parents 0503ca1 + e8152ed commit afb20b7

File tree

12 files changed

+113
-93
lines changed

12 files changed

+113
-93
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
7979

8080
- New `Attachable` INI and Lua (R/W) properties `InheritsVelWhenDetached` and `InheritsAngularVelWhenDetached`, which determine how much of these velocities an attachable inherits from its parent when detached. Defaults to 1.
8181

82+
- New `ACraft` INI and Lua (R/W) property `CanEnterOrbit`, which determines whether a craft can enter orbit (and refund gold appropriately) or not. If false, default out-of-bounds deletion logic applies.
83+
8284
</details>
8385

8486
<details><summary><b>Changed</b></summary>
@@ -113,14 +115,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
113115

114116
- Internal GUI element `ComboBox` no longer displays dropdown combobutton when disabled, to communicate visually that it's setting is not modifiable.
115117

116-
- Almost all ctrl+* special inputs functionality (i.e restarting activity, world dumps, showing performance stats) are now mapped to right alt, to not interfere with default crouching inputs. The only exception is ctrl+arrow keys for changing console size.
118+
- Almost all ctrl+\* special inputs functionality (i.e restarting activity, world dumps, showing performance stats) are now mapped to right alt, to not interfere with default crouching inputs. The only exception is ctrl+arrow keys for changing console size.
117119

118120
- `Gib`s and detached `Attachable`s now inherit the parent's angular velocity by default.
119121

120122
- `InheritsVel` now accounts for the angular velocity of the parent MO, resulting in offset gibs and emissions being flung further away.
121123

122124
- `InheritsVel` and its ilk have been uncapped, allowing users to set them outside of 0-1.
123125

126+
- `Scene` Lua functions `AddNavigatableArea(areaName)` and `ClearNavigatableAreas()` have been renamed/corrected to `AddNavigableArea(areaName)` and `ClearNavigableAreas()`, respectively.
127+
124128
</details>
125129

126130
<details><summary><b>Fixed</b></summary>

Data/Base.rte/AI/SharedBehaviors.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -864,28 +864,28 @@ function SharedBehaviors.GoToWpt(AI, Owner, Abort)
864864

865865
-- test jumping
866866
local JetAccel = Accel + Vector(-jetStrength, 0):RadRotate(Owner.RotAngle+1.375*math.pi+Owner:GetAimAngle(false)*0.25);
867-
local JumpPos = Owner.Head.Pos + PixelVel + JetAccel * (t*t*0.5);
867+
local JumpPos = (Owner.Head and Owner.Head.Pos or Owner.Pos) + PixelVel + JetAccel * (t*t*0.5);
868868

869869
-- a burst add a one time boost to acceleration
870870
if Owner.Jetpack:CanTriggerBurst() then
871871
JumpPos = JumpPos + Vector(-AI.jetBurstFactor, 0):AbsRotateTo(JetAccel);
872872
end
873873

874874
-- check for obstacles from the head
875-
Trace = SceneMan:ShortestDistance(Owner.Head.Pos, JumpPos, false);
876-
local jumpScore = SceneMan:CastObstacleRay(Owner.Head.Pos, Trace, JumpPos, Vector(), Owner.ID, Owner.IgnoresWhichTeam, rte.grassID, 3);
875+
Trace = SceneMan:ShortestDistance((Owner.Head and Owner.Head.Pos or Owner.Pos), JumpPos, false);
876+
local jumpScore = SceneMan:CastObstacleRay((Owner.Head and Owner.Head.Pos or Owner.Pos), Trace, JumpPos, Vector(), Owner.ID, Owner.IgnoresWhichTeam, rte.grassID, 3);
877877
if jumpScore < 0 then -- no obstacles: calculate the distance from the future pos to the wpt
878878
jumpScore = SceneMan:ShortestDistance(Waypoint.Pos, JumpPos, false).Magnitude;
879879
else -- the ray hit terrain or start inside terrain: avoid
880880
jumpScore = SceneMan:ShortestDistance(Waypoint.Pos, JumpPos, false).Largest * 2;
881881
end
882882

883883
-- test falling
884-
local FallPos = Owner.Head.Pos + PixelVel + Accel * (t*t*0.5);
884+
local FallPos = (Owner.Head and Owner.Head.Pos or Owner.Pos) + PixelVel + Accel * (t*t*0.5);
885885

886886
-- check for obstacles when falling/walking
887-
local Trace = SceneMan:ShortestDistance(Owner.Head.Pos, FallPos, false);
888-
SceneMan:CastObstacleRay(Owner.Head.Pos, Trace, FallPos, Vector(), Owner.ID, Owner.IgnoresWhichTeam, rte.grassID, 3);
887+
local Trace = SceneMan:ShortestDistance((Owner.Head and Owner.Head.Pos or Owner.Pos), FallPos, false);
888+
SceneMan:CastObstacleRay((Owner.Head and Owner.Head.Pos or Owner.Pos), Trace, FallPos, Vector(), Owner.ID, Owner.IgnoresWhichTeam, rte.grassID, 3);
889889

890890
if SceneMan:ShortestDistance(Waypoint.Pos, FallPos, false):MagnitudeIsLessThan(jumpScore) then
891891
AI.jump = false;

Data/Browncoats.rte/Activities.ini

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
AddActivity = GAScripted
55
PresetName = Refinery Assault
6-
Description = Test your arsenal in peace and quiet witout any enemies.
6+
Description = Test your arsenal in war and chaos with a lot of enemies.
77
SceneName = Yskely Refinery
88
TeamOfPlayer1 = 0
99
TeamOfPlayer2 = 0
@@ -15,6 +15,7 @@ AddActivity = GAScripted
1515
Team2Funds = 100
1616
DeployUnitsSwitchEnabled = 0
1717
ScriptPath = Browncoats.rte/Activities/RefineryAssault.lua
18+
AddRequiredArea = CaptureArea_RefineryLCHackConsole1 // a little arbitrary, but it works.
1819
LuaClassName = RefineryAssault
1920
DefaultDeployUnits = 1
2021
DefaultFogOfWar = 1

Data/Browncoats.rte/Activities/RefineryAssault.lua

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,10 @@ function RefineryAssault:StartActivity(newGame)
178178
end
179179
end
180180

181-
SceneMan.Scene:AddNavigatableArea("Mission Stage Area 1");
182-
SceneMan.Scene:AddNavigatableArea("Mission Stage Area 2");
183-
SceneMan.Scene:AddNavigatableArea("Mission Stage Area 3");
184-
SceneMan.Scene:AddNavigatableArea("Mission Stage Area 4");
181+
SceneMan.Scene:AddNavigableArea("Mission Stage Area 1");
182+
SceneMan.Scene:AddNavigableArea("Mission Stage Area 2");
183+
SceneMan.Scene:AddNavigableArea("Mission Stage Area 3");
184+
SceneMan.Scene:AddNavigableArea("Mission Stage Area 4");
185185

186186
self.musicGraceTimer = Timer();
187187
self.musicGraceTime = 4000;

Source/Entities/ACraft.cpp

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ void ACraft::Clear() {
201201
m_DeliveryState = FALL;
202202
m_AltitudeMoveState = HOVER;
203203
m_AltitudeControl = 0;
204+
m_CanEnterOrbit = true;
204205
m_MaxPassengers = -1;
205206

206207
m_DeliveryDelayMultiplier = 1.0;
@@ -251,6 +252,7 @@ int ACraft::Create(const ACraft& reference) {
251252
m_DeliveryState = reference.m_DeliveryState;
252253
m_AltitudeMoveState = reference.m_AltitudeMoveState;
253254
m_AltitudeControl = reference.m_AltitudeControl;
255+
m_CanEnterOrbit = reference.m_CanEnterOrbit;
254256
m_MaxPassengers = reference.m_MaxPassengers;
255257

256258
m_DeliveryDelayMultiplier = reference.m_DeliveryDelayMultiplier;
@@ -285,6 +287,7 @@ int ACraft::ReadProperty(const std::string_view& propName, Reader& reader) {
285287
MatchProperty("DeliveryDelayMultiplier", { reader >> m_DeliveryDelayMultiplier; });
286288
MatchProperty("ExitInterval", { reader >> m_ExitInterval; });
287289
MatchProperty("CanLand", { reader >> m_LandingCraft; });
290+
MatchProperty("CanEnterOrbit", { reader >> m_CanEnterOrbit; });
288291
MatchProperty("MaxPassengers", { reader >> m_MaxPassengers; });
289292
MatchProperty("ScuttleIfFlippedTime", { reader >> m_ScuttleIfFlippedTime; });
290293
MatchProperty("ScuttleOnDeath", { reader >> m_ScuttleOnDeath; });
@@ -314,7 +317,10 @@ int ACraft::Save(Writer& writer) const {
314317

315318
writer.NewProperty("CrashSound");
316319
writer << m_CrashSound;
317-
320+
321+
writer.NewProperty("CanEnterOrbit");
322+
writer << m_CanEnterOrbit;
323+
318324
writer.NewProperty("MaxPassengers");
319325
writer << m_MaxPassengers;
320326
writer.NewProperty("ScuttleIfFlippedTime");
@@ -698,23 +704,26 @@ void ACraft::Update() {
698704
/////////////////////////////////////////
699705
// Check for having gone into orbit
700706

701-
if (m_Pos.m_Y < -m_CharHeight || m_Pos.m_Y > g_SceneMan.GetSceneHeight() + m_CharHeight) {
702-
g_ActivityMan.GetActivity()->HandleCraftEnteringOrbit(this);
703-
// Play fading away thruster sound
704-
// if (m_pMThruster && m_pMThruster->IsEmitting())
705-
// m_pMThruster->(pTargetBitmap, targetPos, mode, onlyPhysical);
706-
m_ToDelete = true;
707-
}
707+
if (m_CanEnterOrbit) {
708+
if (m_Pos.m_Y < -m_CharHeight || m_Pos.m_Y > g_SceneMan.GetSceneHeight() + m_CharHeight) {
709+
g_ActivityMan.GetActivity()->HandleCraftEnteringOrbit(this);
710+
// Play fading away thruster sound
711+
// if (m_pMThruster && m_pMThruster->IsEmitting())
712+
// m_pMThruster->(pTargetBitmap, targetPos, mode, onlyPhysical);
713+
m_ToDelete = true;
714+
}
708715

709-
if (g_ActivityMan.GetActivity()->GetCraftOrbitAtTheEdge()) {
710-
if (g_SceneMan.GetScene() && !g_SceneMan.GetScene()->WrapsX()) {
711-
if (m_Pos.m_X < -GetSpriteWidth() || m_Pos.m_X > g_SceneMan.GetSceneWidth() + GetSpriteWidth()) {
712-
g_ActivityMan.GetActivity()->HandleCraftEnteringOrbit(this);
713-
m_ToDelete = true;
716+
// Horizontal orbiting, if scene doesn't wrap
717+
if (g_ActivityMan.GetActivity()->GetCraftOrbitAtTheEdge()) {
718+
if (g_SceneMan.GetScene() && !g_SceneMan.GetScene()->WrapsX()) {
719+
if (m_Pos.m_X < -GetSpriteWidth() || m_Pos.m_X > g_SceneMan.GetSceneWidth() + GetSpriteWidth()) {
720+
g_ActivityMan.GetActivity()->HandleCraftEnteringOrbit(this);
721+
m_ToDelete = true;
722+
}
714723
}
715-
}
724+
}
716725
}
717-
726+
718727
if (m_Status == DEAD) {
719728
if (m_ScuttleOnDeath || m_AIMode == AIMODE_SCUTTLE) {
720729
GibThis();

Source/Entities/ACraft.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,16 @@ namespace RTE {
254254
/// get drawn etc.
255255
void DrawHUD(BITMAP* pTargetBitmap, const Vector& targetPos = Vector(), int whichScreen = 0, bool playerControlled = false) override;
256256

257+
/// Gets whether this craft can enter orbit and refund the owning team when out of the map. If false,
258+
/// only default out-of-bounds deletion logic applies.
259+
/// @return Whether this craft can enter orbit or not.
260+
bool GetCanEnterOrbit() const { return m_CanEnterOrbit; }
261+
262+
/// Sets whether this craft can enter orbit and refund the owning team when out of the map. If false,
263+
/// only default out-of-bounds deletion logic applies.
264+
/// @param canEnterOrbit Whether this craft can enter orbit or not.
265+
void SetCanEnterOrbit(bool canEnterOrbit) { m_CanEnterOrbit = canEnterOrbit; }
266+
257267
/// The recomended, not absolute, maximum number of actors that fit in the
258268
/// invetory. Used by the activity AI.
259269
/// @return An integer with the recomended number of actors that fit in the craft.
@@ -354,6 +364,8 @@ namespace RTE {
354364
Timer m_CrashTimer;
355365
// Crash sound
356366
SoundContainer* m_CrashSound;
367+
// Whether this can enter orbit and refund the owning team. If false, will use default out-of-bounds deletion behavior.
368+
bool m_CanEnterOrbit;
357369
// The maximum number of actors that fit in the inventory
358370
int m_MaxPassengers;
359371
int m_ScuttleIfFlippedTime; //!< The time after which the craft will scuttle automatically, if tipped over.

Source/Entities/Actor.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ int Actor::ReadProperty(const std::string_view& propName, Reader& reader) {
335335
MatchProperty("StableRecoveryDelay", { reader >> m_StableRecoverDelay; });
336336
MatchProperty("CanRun", { reader >> m_CanRun; });
337337
MatchProperty("CrouchWalkSpeedMultiplier", { reader >> m_CrouchWalkSpeedMultiplier; });
338+
MatchProperty("GoldCarried", { reader >> m_GoldCarried; });
338339
MatchProperty("AimAngle", { reader >> m_AimAngle; });
339340
MatchProperty("AimRange", { reader >> m_AimRange; });
340341
MatchProperty("AimDistance", { reader >> m_AimDistance; });
@@ -413,6 +414,8 @@ int Actor::Save(Writer& writer) const {
413414
writer << m_CanRun;
414415
writer.NewProperty("CrouchWalkSpeedMultiplier");
415416
writer << m_CrouchWalkSpeedMultiplier;
417+
writer.NewProperty("GoldCarried");
418+
writer << m_GoldCarried;
416419
writer.NewProperty("AimAngle");
417420
writer << m_AimAngle;
418421
writer.NewProperty("AimRange");

Source/Entities/Scene.cpp

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -356,8 +356,8 @@ void Scene::Clear() {
356356
m_ScanScheduled[team] = false;
357357
}
358358
m_AreaList.clear();
359-
m_NavigatableAreas.clear();
360-
m_NavigatableAreasUpToDate = false;
359+
m_NavigableAreas.clear();
360+
m_NavigableAreasUpToDate = false;
361361
m_GlobalAcc.Reset();
362362
m_SelectedAssemblies.clear();
363363
m_AssembliesCounts.clear();
@@ -1848,29 +1848,25 @@ bool Scene::SetArea(Area& newArea) {
18481848
return false;
18491849
}
18501850

1851-
bool Scene::HasArea(std::string areaName) {
1851+
bool Scene::HasArea(const std::string& areaName) {
18521852
for (std::list<Area>::iterator aItr = m_AreaList.begin(); aItr != m_AreaList.end(); ++aItr) {
18531853
if ((*aItr).GetName() == areaName)
18541854
return true;
18551855
}
18561856
return false;
18571857
}
18581858

1859-
Scene::Area* Scene::GetArea(const std::string_view& areaName, bool required) {
1859+
Scene::Area* Scene::GetArea(const std::string& areaName) {
18601860
for (Scene::Area& area: m_AreaList) {
18611861
if (area.GetName() == areaName) {
18621862
return &area;
18631863
}
18641864
}
18651865

1866-
if (required) {
1867-
g_ConsoleMan.PrintString("WARNING: Could not find the requested Scene Area named : " + std::string(areaName));
1868-
}
1869-
18701866
return nullptr;
18711867
}
18721868

1873-
bool Scene::RemoveArea(std::string areaName) {
1869+
bool Scene::RemoveArea(const std::string& areaName) {
18741870
for (std::list<Area>::iterator aItr = m_AreaList.begin(); aItr != m_AreaList.end(); ++aItr) {
18751871
if ((*aItr).GetName() == areaName) {
18761872
m_AreaList.erase(aItr);
@@ -1880,7 +1876,7 @@ bool Scene::RemoveArea(std::string areaName) {
18801876
return false;
18811877
}
18821878

1883-
bool Scene::WithinArea(std::string areaName, const Vector& point) const {
1879+
bool Scene::WithinArea(const std::string& areaName, const Vector& point) const {
18841880
if (areaName.empty())
18851881
return false;
18861882

@@ -2438,21 +2434,21 @@ void Scene::Update() {
24382434
}
24392435
}
24402436

2441-
if (m_NavigatableAreasUpToDate == false) {
2437+
if (m_NavigableAreasUpToDate == false) {
24422438
// Need to block until all current pathfinding requests are finished. Ugh, if only we had a better way (interrupt/cancel a path request to start a new one?)
24432439
// TODO: Make the PathRequest struct more capable and maybe we can delay starting or cancel mid-request?
24442440
BlockUntilAllPathingRequestsComplete();
24452441

2446-
m_NavigatableAreasUpToDate = true;
2442+
m_NavigableAreasUpToDate = true;
24472443
for (int team = Activity::Teams::NoTeam; team < Activity::Teams::MaxTeamCount; ++team) {
24482444
PathFinder& pathFinder = GetPathFinder(static_cast<Activity::Teams>(team));
24492445

2450-
pathFinder.MarkAllNodesNavigatable(m_NavigatableAreas.empty());
2446+
pathFinder.MarkAllNodesNavigable(m_NavigableAreas.empty());
24512447

2452-
for (const std::string& navigatableArea: m_NavigatableAreas) {
2453-
if (HasArea(navigatableArea)) {
2454-
for (const Box& navigatableBox: GetArea(navigatableArea)->GetBoxes()) {
2455-
pathFinder.MarkBoxNavigatable(navigatableBox, true);
2448+
for (const std::string& navigableArea: m_NavigableAreas) {
2449+
if (HasArea(navigableArea)) {
2450+
for (const Box& navigableBox: GetArea(navigableArea)->GetBoxes()) {
2451+
pathFinder.MarkBoxNavigable(navigableBox, true);
24562452
}
24572453
}
24582454
}

Source/Entities/Scene.h

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -501,39 +501,33 @@ namespace RTE {
501501
/// This won't throw any errors to the console if the Area isn't found.
502502
/// @param areaName The name of the Area to try to find in this Scene.
503503
/// @return Whether the specified area is defined in this Scene.
504-
bool HasArea(std::string areaName);
504+
bool HasArea(const std::string& areaName);
505505

506506
/// Gets a specified Area identified by name. Ownership is NOT transferred!
507507
/// @param areaName The name of the Area to try to get.
508-
/// @param required Whether the area is required, and should throw an error if not found.
509508
/// @return A pointer to the Area asked for, or nullptr if no Area of that name was found.
510-
Area* GetArea(const std::string_view& areaName, bool required);
509+
Area* GetArea(const std::string& areaName);
511510

512-
/// Gets a specified Area identified by name. Ownership is NOT transferred!
513-
/// @param areaName The name of the Area to try to get.
514-
/// @return A pointer to the Area asked for, or nullptr if no Area of that name was found.
515-
Area* GetArea(const std::string& areaName) { return GetArea(areaName, true); }
516-
517-
void AddNavigatableArea(const std::string& areaName) {
518-
m_NavigatableAreas.push_back(areaName);
519-
m_NavigatableAreasUpToDate = false;
511+
void AddNavigableArea(const std::string& areaName) {
512+
m_NavigableAreas.push_back(areaName);
513+
m_NavigableAreasUpToDate = false;
520514
}
521-
void ClearNavigatableAreas(const std::string& areaName) {
522-
m_NavigatableAreas.clear();
523-
m_NavigatableAreasUpToDate = false;
515+
void ClearNavigableAreas() {
516+
m_NavigableAreas.clear();
517+
m_NavigableAreasUpToDate = false;
524518
}
525519

526520
/// Removes a specific Area identified by a name.
527521
/// @param areaName The name of the Area to try to remove.
528522
/// @return Whether an Area of that name was found, and subsequently removed.
529-
bool RemoveArea(std::string areaName);
523+
bool RemoveArea(const std::string& areaName);
530524

531525
/// Checks if a point is within a specific named Area of this Scene. If
532526
/// no Area of the name is found, this just returns false without error.
533527
/// @param areaName The name of the Area to try to check against.
534528
/// @param point The point to see if it's within the specified Area.
535529
/// @return Whether any Area of that name was found, AND the point falls within it.
536-
bool WithinArea(std::string areaName, const Vector& point) const;
530+
bool WithinArea(const std::string& areaName, const Vector& point) const;
537531

538532
/// Gets the global acceleration (in m/s^2) that is applied to all movable
539533
/// objects' velocities during every frame. Typically models gravity.
@@ -765,9 +759,9 @@ namespace RTE {
765759
// List of all the specified Area's of the scene
766760
std::list<Area> m_AreaList;
767761

768-
// List of navigatable areas in the scene. If this list is empty, the entire scene is assumed to be navigatable
769-
std::vector<std::string> m_NavigatableAreas;
770-
bool m_NavigatableAreasUpToDate;
762+
// List of navigable areas in the scene. If this list is empty, the entire scene is assumed to be navigable
763+
std::vector<std::string> m_NavigableAreas;
764+
bool m_NavigableAreasUpToDate;
771765

772766
// The global acceleration vector in m/s^2. (think gravity/wind)
773767
Vector m_GlobalAcc;

Source/Lua/LuaBindingsEntities.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, ACraft) {
117117
.property("HatchOpenSound", &ACraft::GetHatchOpenSound, &LuaAdaptersPropertyOwnershipSafetyFaker::ACraftSetHatchOpenSound)
118118
.property("HatchCloseSound", &ACraft::GetHatchCloseSound, &LuaAdaptersPropertyOwnershipSafetyFaker::ACraftSetHatchCloseSound)
119119
.property("CrashSound", &ACraft::GetCrashSound, &LuaAdaptersPropertyOwnershipSafetyFaker::ACraftSetCrashSound)
120+
.property("CanEnterOrbit", &ACraft::GetCanEnterOrbit, &ACraft::SetCanEnterOrbit)
120121
.property("MaxPassengers", &ACraft::GetMaxPassengers)
121122
.property("DeliveryDelayMultiplier", &ACraft::GetDeliveryDelayMultiplier)
122123
.property("ScuttleOnDeath", &ACraft::GetScuttleOnDeath, &ACraft::SetScuttleOnDeath)
@@ -1196,10 +1197,10 @@ LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, Scene) {
11961197
.def_readwrite("Areas", &Scene::m_AreaList, luabind::return_stl_iterator)
11971198
.def("SetArea", &Scene::SetArea)
11981199
.def("HasArea", &Scene::HasArea)
1199-
.def("GetArea", (Scene::Area * (Scene::*)(const std::string& areaName)) & Scene::GetArea)
1200+
.def("GetArea", &Scene::GetArea)
12001201
.def("WithinArea", &Scene::WithinArea)
1201-
.def("AddNavigatableArea", &Scene::AddNavigatableArea)
1202-
.def("ClearNavigatableAreas", &Scene::ClearNavigatableAreas)
1202+
.def("AddNavigableArea", &Scene::AddNavigableArea)
1203+
.def("ClearNavigableAreas", &Scene::ClearNavigableAreas)
12031204
.def("ResetPathFinding", &Scene::ResetPathFinding)
12041205
.def("UpdatePathFinding", &Scene::UpdatePathFinding)
12051206
.def("PathFindingUpdated", &Scene::PathFindingUpdated)

0 commit comments

Comments
 (0)