mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-02-14 04:03:49 +00:00
Initial commit
This commit is contained in:
parent
2211ed7650
commit
ebb3dc9cdd
10121 changed files with 801 additions and 4 deletions
159
docs/base/@vl2/scripts.vl2/scripts/navGraph.cs
Normal file
159
docs/base/@vl2/scripts.vl2/scripts/navGraph.cs
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
//
|
||||
// functions for ai nav graph
|
||||
//
|
||||
|
||||
$OFFLINE_NAV_BUILD = false;
|
||||
|
||||
function NavGraph::generateInterior()
|
||||
{
|
||||
%p = new FloorPlan();
|
||||
%p.generate();
|
||||
%p.upload();
|
||||
%p.delete();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function NavGraph::exteriorInspect()
|
||||
{
|
||||
%eInspector = new GroundPlan();
|
||||
|
||||
%area = MissionArea.getArea();
|
||||
%minx = getWord(%area, 0);
|
||||
%miny = getWord(%area, 1);
|
||||
%extentx = getWord(%area, 2);
|
||||
%extenty = getWord(%area, 3);
|
||||
%point = %minx @ " " @ %miny;
|
||||
%extents = %extentx @ " " @ %extenty;
|
||||
|
||||
%eInspector.inspect(%point, %extents); // this does the upload as well
|
||||
%eInspector.delete();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function BuildNavigationGraph(%type)
|
||||
{
|
||||
exec("scripts/graphBuild.cs");
|
||||
|
||||
echo("Building Navigation Graph...");
|
||||
|
||||
// disable asserts
|
||||
$FP::DisableAsserts = true;
|
||||
$OFFLINE_NAV_BUILD = true;
|
||||
|
||||
if(%type $= "nav")
|
||||
{
|
||||
makeJettableGraphOffline(Nav);
|
||||
doTablebuildOffline();
|
||||
}
|
||||
else if(%type $= "spn")
|
||||
makeJettableGraphOffline(Spawn);
|
||||
else
|
||||
echo("unknown type for nav build!");
|
||||
|
||||
navGraph.saveGraph();
|
||||
writeNavMetrics();
|
||||
}
|
||||
|
||||
function NavigationGraph::navBuildComplete()
|
||||
{
|
||||
echo( "Navigation Graph build complete." );
|
||||
|
||||
if( $OFFLINE_NAV_BUILD )
|
||||
{
|
||||
quit();
|
||||
}
|
||||
}
|
||||
|
||||
// this will keep mod authors happy since they can create new
|
||||
// traversable shapes, and it will be handled by the navigation system
|
||||
function FloorPlan::staticShapeListConstruct(%this)
|
||||
{
|
||||
%group = nameToId("MissionGroup");
|
||||
%group.findStaticShapes(%this);
|
||||
}
|
||||
|
||||
function FloorPlan::gameBaseListConstruct(%this)
|
||||
{
|
||||
%group = nameToId("MissionGroup");
|
||||
%group.findGameBaseItems(%this);
|
||||
}
|
||||
|
||||
function SimGroup::findGameBaseItems(%this, %floorPlan)
|
||||
{
|
||||
for(%i = 0; %i < %this.getCount(); %i++)
|
||||
%this.getObject(%i).findGameBaseItems(%floorPlan);
|
||||
}
|
||||
|
||||
function GameBase::findGameBaseItems(%this, %floorPlan)
|
||||
{
|
||||
%floorPlan.addHintPoint(%this.getWorldBoxCenter());
|
||||
}
|
||||
|
||||
function SimGroup::findStaticShapes(%this, %floorPlan)
|
||||
{
|
||||
for(%i = 0; %i < %this.getCount(); %i++)
|
||||
%this.getObject(%i).findStaticShapes(%floorPlan);
|
||||
}
|
||||
|
||||
function GameBase::findStaticShapes(%this, %floorPlan)
|
||||
{
|
||||
%this.getDataBlock().findStaticShapes(%this, %floorPlan);
|
||||
}
|
||||
|
||||
function StationInventory::findStaticShapes(%data, %object, %floorPlan)
|
||||
{
|
||||
%floorPlan.addStaticCenter(%object);
|
||||
}
|
||||
|
||||
function StationVehiclePad::findStaticShapes(%data, %object, %floorPlan)
|
||||
{
|
||||
%floorPlan.addStaticGeom(%object);
|
||||
}
|
||||
|
||||
function installNavThreats()
|
||||
{
|
||||
%group = nameToId("MissionGroup");
|
||||
%group.findTurretThreats();
|
||||
}
|
||||
|
||||
function SimObject::findTurretThreats(%this)
|
||||
{
|
||||
//declared here
|
||||
}
|
||||
|
||||
function SimGroup::findTurretThreats(%this)
|
||||
{
|
||||
for(%i = 0; %i < %this.getCount(); %i++)
|
||||
%this.getObject(%i).findTurretThreats();
|
||||
}
|
||||
|
||||
function GameBase::findTurretThreats(%this)
|
||||
{
|
||||
%this.getDataBlock().findTurretThreats(%this);
|
||||
}
|
||||
|
||||
function TurretData::findTurretThreats(%data, %turret)
|
||||
{
|
||||
%attackRadius = %turret.getMountedImage(0).attackRadius;
|
||||
NavGraph.installThreat(%turret, %turret.team, %attackRadius);
|
||||
}
|
||||
|
||||
function fpStart(%useSpecial)
|
||||
{
|
||||
$fp = new FloorPlan();
|
||||
$fp::special = %useSpecial;
|
||||
$fp.generate();
|
||||
}
|
||||
|
||||
function fpEnd()
|
||||
{
|
||||
if($fp > 0)
|
||||
$fp.delete();
|
||||
}
|
||||
|
||||
function writeNavMetrics()
|
||||
{
|
||||
navGraph.dumpInfo2File();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue