mirror of
https://github.com/Ragora/T2-DXAI.git
synced 2026-07-16 02:34:35 +00:00
Added more documentation
This commit is contained in:
parent
ea665f4095
commit
32fda6de67
2 changed files with 58 additions and 5 deletions
|
|
@ -90,6 +90,12 @@ function GameConnection::calculateViewCone(%this, %distance)
|
||||||
return %coneOrigin SPC %viewConeClockwisePoint SPC %viewConeCounterClockwisePoint SPC %viewConeUpperPoint SPC %viewConeLowerPoint;
|
return %coneOrigin SPC %viewConeClockwisePoint SPC %viewConeCounterClockwisePoint SPC %viewConeUpperPoint SPC %viewConeLowerPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Returns a SimSet of all contained object ID's inside of the given SimSet,
|
||||||
|
// including those in child SimGroup and SimSet instances.
|
||||||
|
// TODO: Use the nav graph to estimate an actual distance?
|
||||||
|
// FIXME: Return *working* stations only.
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function SimSet::recurse(%this, %result)
|
function SimSet::recurse(%this, %result)
|
||||||
{
|
{
|
||||||
if (!isObject(%result))
|
if (!isObject(%result))
|
||||||
|
|
@ -108,7 +114,13 @@ function SimSet::recurse(%this, %result)
|
||||||
return %result;
|
return %result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Returns the closest friendly inventory station to the given client.
|
||||||
|
// Return: The object ID of the inventory station determined to be the closest to this
|
||||||
|
// client.
|
||||||
// TODO: Use the nav graph to estimate an actual distance?
|
// TODO: Use the nav graph to estimate an actual distance?
|
||||||
|
// FIXME: Return *working* stations only.
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function GameConnection::getClosestInventory(%this)
|
function GameConnection::getClosestInventory(%this)
|
||||||
{
|
{
|
||||||
if (!isObject(%this.player))
|
if (!isObject(%this.player))
|
||||||
|
|
@ -143,7 +155,16 @@ function GameConnection::getClosestInventory(%this)
|
||||||
return %closestInventory;
|
return %closestInventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
// View cone simulation function
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Calculates a list of objects that can be seen by the given client using
|
||||||
|
// distance & field of view values passed in for evaluation.
|
||||||
|
// Param %typeMask: The typemask of all objects to consider.
|
||||||
|
// Param %distance: The maximum distance to project our view cone checks out to.
|
||||||
|
// Param %performLOSTest: A boolean representing whether or not found objects should be
|
||||||
|
// verified using a raycast test. If you cannot draw a line from the player to the potential
|
||||||
|
// target, then it the potential target is discarded.
|
||||||
|
// Return: A SimSet of objects that can be seen by the given client.
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function GameConnection::getObjectsInViewcone(%this, %typeMask, %distance, %performLOSTest)
|
function GameConnection::getObjectsInViewcone(%this, %typeMask, %distance, %performLOSTest)
|
||||||
{
|
{
|
||||||
// FIXME: Radians
|
// FIXME: Radians
|
||||||
|
|
@ -203,12 +224,21 @@ function GameConnection::getObjectsInViewcone(%this, %typeMask, %distance, %perf
|
||||||
return %result;
|
return %result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandomPosition(%position, %distance)
|
function getRandomPosition(%position, %distance, %raycast)
|
||||||
{
|
{
|
||||||
// First, we determine a random direction vector
|
// First, we determine a random direction vector
|
||||||
%direction = vectorNormalize(getRandom(0, 10000) SPC getRandom(0, 10000) SPC getRandom(0, 10000));
|
%direction = vectorNormalize(getRandom(0, 10000) SPC getRandom(0, 10000) SPC getRandom(0, 10000));
|
||||||
|
|
||||||
// Return the scaled result
|
// Return the scaled result
|
||||||
return vectorAdd(%position, vectorScale(%direction, getRandom(0, %distance)));
|
%result = vectorAdd(%position, vectorScale(%direction, getRandom(0, %distance)));
|
||||||
|
|
||||||
|
if (!%raycast)
|
||||||
|
return %result;
|
||||||
|
|
||||||
|
%rayCast = containerRayCast(%position, %result, $TypeMasks::AllObjectType, 0);
|
||||||
|
%result = getWords(%raycast, 1, 3);
|
||||||
|
|
||||||
|
return %result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandomPositionOnTerrain(%position, %distance)
|
function getRandomPositionOnTerrain(%position, %distance)
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,10 @@ function PriorityQueue::topKey(%this)
|
||||||
return %this.keys[%this.count - 1];
|
return %this.keys[%this.count - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Pops off the value with the current highest key (priority). This value
|
||||||
|
// is then no longer present in the priority queue.
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function PriorityQueue::pop(%this)
|
function PriorityQueue::pop(%this)
|
||||||
{
|
{
|
||||||
if (%this.count == 0)
|
if (%this.count == 0)
|
||||||
|
|
@ -135,6 +139,9 @@ function PriorityQueue::pop(%this)
|
||||||
%this.count--;
|
%this.count--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Makes the entire priority queue empty.
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function PriorityQueue::clear(%this)
|
function PriorityQueue::clear(%this)
|
||||||
{
|
{
|
||||||
for (%iteration = 0; %iteration < %this.count; %iteration++)
|
for (%iteration = 0; %iteration < %this.count; %iteration++)
|
||||||
|
|
@ -143,17 +150,33 @@ function PriorityQueue::clear(%this)
|
||||||
%this.count = 0;
|
%this.count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function Priorityqueue::isEmpty(%this)
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Returns whether or not the priority queue is empty.
|
||||||
|
// Return: A boolean representing whether or not the priority queue is empty.
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
function PriorityQueue::isEmpty(%this)
|
||||||
{
|
{
|
||||||
return %this.count == 0;
|
return %this.count <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Prints a mapping of key (priority) to their respective values to the console
|
||||||
|
// for debugging purposes. The format is such:
|
||||||
|
// Key (Priority) -> Mapped Value
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function PriorityQueue::dump(%this)
|
function PriorityQueue::dump(%this)
|
||||||
{
|
{
|
||||||
for (%iteration = 0; %iteration < %this.count; %iteration++)
|
for (%iteration = 0; %iteration < %this.count; %iteration++)
|
||||||
echo(%iteration SPC %this.keys[%iteration] SPC "-> " @ %this.values[%iteration]);
|
echo(%iteration SPC %this.keys[%iteration] SPC "-> " @ %this.values[%iteration]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Description: Creates a new priority queue with the given name and returns the ID of
|
||||||
|
// the new priority queue created.
|
||||||
|
// Param %name: The name of the new priority queue.
|
||||||
|
//
|
||||||
|
// Usage: %queue = PriorityQueue::create("MyQueue");
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
function PriorityQueue::create(%name)
|
function PriorityQueue::create(%name)
|
||||||
{
|
{
|
||||||
%result = new ScriptObject(%name)
|
%result = new ScriptObject(%name)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue