Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
Todo List
Member __KEYDEFS_H_
NOTE: These key definitions are currently tied directly to the Direct Input key codes, therefore making these definitions device dependent even though this code lives on the device INdependent side of the engine. In the future to be truly device independent we need to define our own key codes, and have a translation between what we read from the device to our own system
Member _PARTICLE_SYS_H_
Replace with our own matrix library
Member ActionManager::canEnterObject (const Object *obj, const Object *objectToEnter, CommandSourceType commandSource, CanEnterType mode)

srj – this is horrible, but expedient.

srj – seems like we should check always (not just for checkCap), but scared to change now – check later

Member ActiveBody::attemptHealing (DamageInfo *damageInfo)
we need to figure out what has changed so we don't have to hack this (CBD 11-1-2002)
Member ActiveBody::setCorrectDamageState ()

srj – bleah, this is an icky way to do it. oh well.

I had to change this to a Z only version to keep it from disappearing from the PartitionManager for a frame. That didn't used to happen.

Member AI::findGroup (UnsignedInt id)
Optimize this (MSB)
Member AIAttackApproachTargetState::computePath ()
Unify recomputation conditions & account for obj ID so everyone doesnt compute on the same frame (MSB)
Member AIAttackAreaState::update ()
srj – find a way to sleep for a number of frames here, if possible
Member AIAttackPursueTargetState::computePath ()
Unify recomputation conditions & account for obj ID so everyone doesnt compute on the same frame (MSB)
Member AICommandParmsStorage::reconstitute (AICommandParms &parms) const
srj – probably need a better way to safely save/restore this
Member AICommandParmsStorage::store (const AICommandParms &parms)
srj – probably need a better way to safely save/restore this
Member AIDockWaitForClearanceState::update (void)
What if we are pushed off of our queue spot? We need to move back on... (MSB)
Member AIGroup::computeIndividualDestination (Coord3D *dest, const Coord3D *groupDest, Object *obj, const Coord3D *center, Bool isFormation)
use fast int->real type cast here later
Member AIGroup::MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE (AIGroup, "AIGroupPool")
Set real numbers for mem alloc
Member AIHuntState::update ()
srj – find a way to sleep for a number of frames here, if possible
Member AIInternalMoveToState::update ()
srj – find a way to sleep for a number of frames here, if possible
Member AIPickUpCrateState::update ()
srj – find a way to sleep for a number of frames here, if possible
Member AIStateMachine::setGoalPath (const std::vector< Coord3D > *path)
Rethink state parameter passing. Continuing in this fashion will have a pile of params in the machine (MSB)
Member AIUpdateInterface::evaluateMoraleBonus (void)

Find a better way to represent nationalism without hardcoding here (CBD)

Find a better way to represent fanaticism without hardcoding here (MAL)

Member AIUpdateInterface::update (void)
Yikes! If we are not interruptable, and we die, what do we do? (MSB)
Member AIWaitState::update ()
srj – find a way to sleep for a number of frames here, if possible
Member AlphaTerrainTextureClass::Apply (unsigned int stage)
: Remove 8-Stage Nvidia hack after drivers are fixed.
Member ApplicationHInstance
for demo, remove
Member ApplicationHWnd
: this is a quick hack for adding/removing/testing breaking waves inside the client. Will need to move this code to an external editor at some pont.
Member ApplyRandomForceNugget::create (const Object *primary, const Object *secondary, UnsignedInt lifetimeFrames=0) const
srj – ack. const_cast is evil.
Member ArmorTemplateSet::parseArmorTemplateSet (INI *ini)
srj – move this to another file
Member AsciiString::translate (const UnicodeString &stringSrc)
srj put in a real translation here; this will only work for 7-bit ascii
Member AssaultTransportAIUpdate::update ()
srj – someday, make sleepy. for now, must not sleep.
Member AutoDepositUpdate::update (void)
srj use SLEEPY_UPDATE here
Member AutoFindHealingUpdate::update ()
srj use SLEEPY_UPDATE here
Member BaseHeightMapRenderObjClass::Cast_Ray (RayCollisionTestClass &raytest)

: Ray intersection needs to be optimized with some sort of grid-tracing (ala line drawing). We should also try making the search in a front->back order relative to the ray so we can early exit as soon as we have a hit.

: WW3D uses this to return dirt, grass, etc. Do we need this?

Member BitFlags< NUMBITS >::anyIntersectionWith (const BitFlags &that) const
srj – improve me.
Member BitFlags< NUMBITS >::testSetAndClear (const BitFlags &mustBeSet, const BitFlags &mustBeClear) const
srj – improve me.
Member BoneFXUpdate::update ()
srj use SLEEPY_UPDATE here
Member BridgeBehavior::onBodyDamageStateChange (const DamageInfo *damageInfo, BodyDamageType oldState, BodyDamageType newState)
this should be re-written, there no need for this looping bridge examination
Member CheckpointUpdate::update ()

srj use SLEEPY_UPDATE here

srj – for now, this assumes at most one door

srj – for now, this assumes at most one door

ask steven about the distance covered always being zero

Member CleanupHazardUpdate::update ()
srj use SLEEPY_UPDATE here
Member CloudMapTerrainTextureClass::restore (void)
: Remove 8-Stage Nvidia hack after drivers are fixed.
Member Color
we need real color representation, this is just palce holder so we can more easily identify sections of the code that need it
Member Connection::doSend ()
Make the act of giving the transport object a packet to send more efficient. Make the transport take a NetPacket object rather than the raw data, thus avoiding an extra memcpy.
Member ConnectionManager::init ()
The LAN/WOL interface should be telling us who the packet router is based on machine specs passed around through game options.
Member ControlBar::doTransportInventoryUI (Object *transport, const CommandSet *commandSet)
srj – remove hard-coding here, please
Member ControlBar::getCommandAvailability (const CommandButton *command, Object *obj, GameWindow *win, GameWindow *applyToWin=NULL, Bool forceDisabledEvaluation=FALSE) const

srj – not sure why this next check is necessary, but the Comanche missile buttons will flicker without it. figure out someday.

ml – and note: that the "now-1" below causes zero-clip-reload weapons to never be ready, so I added this If you make changes to this code, make sure that the DragonTank's firewall weapon can be retargeted while active, that is, while the tank is squirting out flames all over the floor, you can click the firewall button (or "F"), and re-target the firewall without having to stop or move in-betwen.. Thanks for reading

Member ControlBar::onPlayerRankChanged (const Player *p)
implement me
Member ControlBar::onPlayerSciencePurchasePointsChanged (const Player *p)
implement me
Member ControlBar::populateBuildQueue (Object *producer)

srj – remove hard-coding here, please

srj – remove hard-coding here, please

Member ControlBar::populateOCLTimer (Object *creatorObject)
srj – remove hard-coding here, please
Member ControlBar::populateStructureInventory (Object *building)

srj – remove hard-coding here, please

srj – remove hard-coding here, please

srj – remove hard-coding here, please

Member ControlBar::populateUnderConstruction (Object *objectUnderConstruction)
srj – remove hard-coding here, please
Member ControlBar::processCommandUI (GameWindow *control, GadgetGameMessage gadgetMessage)
Added obj check because Single Use and Multi Select crash when used together, but with this check they just won't work. When the "rethinking" occurs, this can get fixed. Right now it is unused. Convoy Truck needs Multi Select so Single Use is turned off, and noone else has it.
Member CWorldBuilderDoc::CWorldBuilderDoc ()
- make it dynamic. jba.
Member Debug::AssertDone (void)
replace MessageBox with custom dialog w/ 4 options: abort, skip 1, skip all, break
Member DEBUG_STRING_IT (b)
: the standard line-to-string trick isn't working correctly in vc6; figure out why
Member DEFAULT_RENDER_TARGET_WIDTH
: We're going to have a pool of a couple rendertargets to use in rare cases when dynamic shadows need to be generated. Maybe we can even get away with a single one that gets used immediatly to render, then recycled. For most of the objects, we need to have a static texture that is reused for all instances on the level.
Member DefaultProductionExitUpdate::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)
This really should be automatically wrapped up in an actication sequence for objects in general
Member DeliveringState::onEnter ()
srj – for now, this assumes at most one door
Member DeliveringState::onExit (StateExitType status)
srj – for now, this assumes at most one door
Member DeliveringState::update ()
srj – urg. icky.
Member DeliverPayloadAIUpdate::calcMinTurnRadius (Real *timeToTravelThatDist) const
srj – this should probably use min-speed, not max-speed... fix after E3
Member DemoTrapUpdate::update ()
srj use SLEEPY_UPDATE here
Member DirectInputKeyboard::openKeyboard (void)
Check the cooperative level of keyboard for NT, 2000, DX8 etc ...
Member DirectInputMouse::update (void)
we need to really visit this system and possibly come up with our own multi-threaded cursor etc
Member DisconnectManager::update (ConnectionManager *conMgr)
: plug in some better measure here
Member Display::attachView (View *view)
Rethink the "attachView" notion...
Member Display::draw (void)
Switch between in-game and shell interfaces
Member DoTrees (RenderInfoClass &rinfo)
: Remove these globals since we no longer need W3D to call them for us.
Member DozerActionDoActionState::update (void)

need to write this

write me

Member DozerAIUpdate::construct (const ThingTemplate *what, const Coord3D *pos, Real angle, Player *owningPlayer, Bool isRebuild)
make 'construct' a real AI command and you won't need a special case
Member DozerAIUpdate::internalTaskCompleteOrCancelled (DozerTask task)
This would be correct except that we don't have idle crane animations and it is December.
Member DozerAIUpdate::update (void)
shouldn't this be at a higher level?
Member Drawable::calcPhysicsXformMotorcycle (const Locomotor *locomotor, PhysicsXformInfo &info)
Steven/John ... please review this and make sure it makes sense (CBD)
Member Drawable::calcPhysicsXformTreads (const Locomotor *locomotor, PhysicsXformInfo &info)
Z needs to accelerate/decelerate, not be directly set (MSB)
Member Drawable::calcPhysicsXformWheels (const Locomotor *locomotor, PhysicsXformInfo &info)
Steven/John ... please review this and make sure it makes sense (CBD)
Member Drawable::Drawable (const ThingTemplate *thing, DrawableStatus statusBits=DRAWABLE_STATUS_NONE)
srj – this is evil, we shouldn't look at the module name directly!
Member Drawable::setStealthLook (StealthLookType look)

srj – evil hack here... this whole heat-vision thing is fucked. don't want it on mines but no good way to do that. hack for now.

srj – evil hack here... this whole heat-vision thing is fucked. don't want it on mines but no good way to do that. hack for now.

Member DrawObject::Render (RenderInfoClass &rinfo)
- remove the istree stuff, or get the info from the thing template. jba.
Member DummyTexture
: remove this
Member DynamicGeometryInfoUpdate::update ()
srj use SLEEPY_UPDATE here
Member DynamicMemoryAllocator::~DynamicMemoryAllocator ()
this may cause double-destruction of the subpools – test & fix
Member EditWindow::inCornerTolerance (ICoord2D *dest, ICoord2D *source, Int tolerance)
we should write PointInRegion() stuff again like it was in Nox
Member EMPUpdate::update (void)
srj use SLEEPY_UPDATE here
Member EnemyNearUpdate::update ()
srj use SLEEPY_UPDATE here
Member FlightDeckBehavior::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)
srj – this is evil. fix.
Member FloatUpdate::update ()
srj use SLEEPY_UPDATE here
Member GadgetTextEntrySetFont (GameWindow *g, GameFont *font)
we might want to do something like this if we use IME for language support in this product
Member GadgetTextEntrySystem (GameWindow *window, UnsignedInt msg, WindowMsgData mData1, WindowMsgData mData2)

need to enable this for IME support

need to enable this for IME support

Member GameAtoi (S)
– add a non-malloc-based string dup func #define GameStrdup wcsdup
Member GameClient::adjustLOD (Int adj)=0
hack for evaluation, remove.
Member GameClient::allocDrawableID (void)
Find unused value in current set
Member GameClient::setTeamColor (Int red, Int green, Int blue)=0
superhack for demo, remove!!!
Member GameClient::~GameClient ()
: TheTerrainVisual used to be the first thing destroyed.
Member GameClientRandomVariable::getValue (void) const
fill in support for nonuniform GameClientRandomVariables.
Member GameEngine::init (int argc, char *argv[])
: I changed this to take argc & argv so we can parse those after the GDF is loaded. We need to rethink this immediately as it is a nasty hack
Member GameEngine::update (void)

Allow the client to run as fast as possible, but limit the execution of TheNetwork and TheGameLogic to a fixed framerate.

Move audio init, update, etc, into GameClient update

Member GameLODManager::applyStaticLODLevel (StaticGameLODLevel level)
: Still need to implement these settings:
Member GameLODManager::init (void)
: Need to scale these based on our apps usage of int/float/mem ops.
Member GameLogic::allocateObjectID (void)
Find unused value in current object set
Member GameLogic::init (void)
Clear object and destroy lists
Member GameLogic::isIntroMoviePlaying ()
remove this hack
Member GameLogic::logicMessageDispatcher (GameMessage *msg, void *userData)

Rename this to "CommandProcessor", or similiar.

: multiplayer semantics

Member GameLogic::sendObjectCreated (Object *obj)
COLIN ... shouldn't we have a check here for existing drawable!!!!!
Member GameLogic::setWidth (Real width)
Change this to refer to a Region3D as an extent of the world
Member GameLogic::startNewGame (Bool loadSaveGame)

: Here is where we would look at the game mode & play an intro movie or something.

: MDC add back in after demo

Member GameLogic::update (void)

remove this hack

- make sure this never happens during a network game. jba.

Member GameLogicRandomVariable::getValue (void) const
fill in support for nonuniform GameLogicRandomVariables.
Member GameMessage::getArgument (Int argIndex) const

This should be a more list-like interface. Very inefficient.

This should be a more list-like interface. Very inefficient.

Member GameMessage::Type

Replace this hardcoded enum with a generalized system that can be easily changed and updated

Because the Client will run faster than Logic, we'll need "superceding" messages for events such as mouse movements so we only send the latest one over the net

Create two classes of message: raw input messages, and command messages. Raw input messages will be destroyed when they reach the end of the stream, whereas command messages will be transferred to TheCommandList

Member GameWindowManager::drawWindow (GameWindow *window)
visit list boxes and borders, this is stupid!
Member GameWindowManager::initTestGUI (void)
just for testing, remov this
Member GameWindowManager::winFormatText (GameFont *font, UnicodeString text, Color color, Int x, Int y, Int width, Int height)
make all display string rendering go through here!
Member GameWindowManager::winGetTextSize (GameFont *font, UnicodeString text, Int *width, Int *height, Int maxWidth)
make display string size stuff go through here
Member GameWindowManager::winProcessMouseEvent (GameWindowMessage msg, ICoord2D *mousePos, void *data)

Colin, there are 3 cases here that are nearly identical code, break them up into functions with parameters

should allow for left handed mouse configs here?

Member GameWindowManager::winTextLabelToText (AsciiString label)
we need to write the string manager here, this is TEMPORARY!!!
Member GarrisonContain::exitObjectViaDoor (Object *exitObj, ExitDoorType exitDoor)

This really should be automatically wrapped up in an activation sequence for objects in general

This really should be automatically wrapped up in an activation sequence for objects in general

Member GarrisonContain::onRemoving (Object *obj)
: we should probably not draw the unit to begin with and just have them pop out.
Member GeometryInfo::calcPitches (const Coord3D &thisPos, const GeometryInfo &that, const Coord3D &thatPos, Real &minPitch, Real &maxPitch) const
srj – this could be better, by calcing it for all the corners, not just top-center and bottom-center... oh well
Member GeometryInfo::isIntersectedByLineSegment (const Coord3D &loc, const Coord3D &from, const Coord3D &to) const
srj – treats everything as a sphere for now. fix.
Member getMaterialUV (UVVert &tvert, unsigned int diffuse, unsigned int *materialColors, int &numMaterialColors, int &numHouseColors, bool house)

: MW: Remove hard-coded texture size

: MW: Remove hard-coded texture size

: MW: Remove hard-coded texture size

Member GhostObject::xfer (Xfer *xfer)
write me ---> !!!!!
Class GlobalData
Change this entire system. Otherwise this will end up a huge class containing tons of variables, and will cause re-compilation dependancies throughout the codebase. OOPS – TOO LATE! :)
Member GUIEdit::menuOpen (void)
should probably make the window manager interface for this a little nicer to tell us success and whatnot
Member HackInternetAIUpdate::update ()
srj – someday, make sleepy. for now, must not sleep.
Member HeightMapRenderObjClass::updateCenter (CameraClass *camera, RefRenderObjListIterator *pLightsIterator)
find out why values go out of range
Member HelicopterSlowDeathBehavior::update ()
srj use SLEEPY_UPDATE here
Member HijackerUpdate::update ()
srj use SLEEPY_UPDATE here
Member HintSpyTranslator::translateGameMessage (const GameMessage *msg)
Create an automated way to associate method callbacks with messages
Member HordeUpdate::joinOrLeaveHorde (SimpleObjectIterator *iter, Bool join)
I think we should model the horde list ... so we can do all this without doing all this scanning, plus we can give exactly 1 flag to the right person in the center of the horde which I think would look better (CBD)
Member InGamePopupMessageInit (WindowLayout *layout, void *userData)
: add a call to the close this bitch method when I implement it CLH
Member InGameUI::deselectAllDrawables (Bool postMsg=true)

don't we want to not emit this message if there wasn't a group at all? (CBD)

also, we probably are sending this message too much, we should come up with some kind of "selections are dirty" status that we can check once per frame and send the correct group info over the network ... could be tricky tho (or impossible) given the order of operations of things happening in the code (CBD)

Member InGameUI::handleBuildPlacements (void)
this whole orientation vector thing is LAME! Must replace, all I want to to do is set a simple angle and have it automatically change, ug!
Member InGameUI::init (void)

this may be the wrong place to create the sidebar, but for now this is where it lives

This may be the wrong place to create the replay menu, but for now this is where it lives

Member InGameUI::isAllSelectedKindOf (KindOfType kindOf) const
, it seems like we might want to keep a list of drawable pointers so we don't have to do this lookup ... it seems "tightly coupled" to me (CBD)
Member InGameUI::isAnySelectedKindOf (KindOfType kindOf) const
, it seems like we might want to keep a list of drawable pointers so we don't have to do this lookup ... it seems "tightly coupled" to me (CBD)
Member InGameUI::update (void)
make sure this code gets called even when the UI is not being drawn
Member Keyboard::checkKeyRepeat (void)
we shouldn't think about repeating any keys while we don't have the focus
Member Keyboard::updateKeys (void)
– if we don't have focus, we could destroy all the keys retrieved here so that we don't process anything
Member LANAPI::handleRequestGameLeave (LANMessage *msg, UnsignedInt senderIP)
re-add myself to lobby? Or just keep me there all the time? If we send a LOBBY_ANNOUNCE things'll work out...
Member LANAPI::m_isActive
: hack for demo - remove this
Member LANAPI::OnGameJoin (ReturnType ret, LANGameInfo *theGame)
: re-enable lobby controls? Error msgs?
Member LANAPI::RequestGameCreate (UnicodeString gameName, Bool isDirectConnect)

: make sure LAN games with identical names don't crash things like in RA2.

: Need to initialize the players elsewere.

Member LanLobbyMenuInit (WindowLayout *layout, void *userData)

clh delete TheLAN and

: display error and exit lan lobby if no IPs are found

Member LeftHUDInput (GameWindow *window, UnsignedInt msg, WindowMsgData mData1, WindowMsgData mData2)
This is wrong. The radar should be in the message stream, and eat all messages and propagate them as a new message with the coords converted to world coords and the message flagged as being from the radar. This would let all of the normal processing occur, and allow individual commands to easily reject being used on the radar.
Member LOAD_TEST_ASSETS
this allows us to use the test art directory, it should be removed for FINAL release
Member Locomotor::maintainCurrentPositionThrust (Object *obj, PhysicsBehavior *physics)
srj – should these also use the "circling radius" stuff, like wings?
Member Locomotor::rotateObjAroundLocoPivot (Object *obj, const Coord3D &goalPos, Real maxTurnRate, Real *relAngle=NULL)
srj – there's probably a more efficient & more direct way to do this. find it.
Member MAX_SHADOW_CASTER_MESHES
Make the 100 below a 'better' number. Was 32, increased because of overcomplex models.
Member MEM_BOUND_ALIGNMENT
srj – make this work for 8
Member MessageStream::reset (void)
Reset the MessageStream
Member MIN_CAPPED_ZOOM
This is inefficient. We should construct the matrix directly using vectors.
Member MirrorRenderObjClass::Get_Obj_Space_Bounding_Sphere (SphereClass &sphere) const
: Add methods for collision detection with mirror surface
Member MissileAIUpdate::update ()
srj – someday, make sleepy. for now, must not sleep.
Class MissionStats
: not sure what need to be here. Alas. For now, I have just put in the fields from RA2 that are indicated as being used for scoring in multiplayer games, so this will certainly increase.
Member MobMemberSlavedUpdate::update ()
srj use SLEEPY_UPDATE here
Class ModuleData
srj – make ModuleData be MemoryPool based
Member Mouse::drawTooltip (void)
: Still need to put in display logic so it puts the tool tips in a visable position on the edge of the screen
Member Mouse::getCursorIndex (const AsciiString &name)
This is silly to have to define these names from INI in the code ... that should be changed (CBD)
Struct MouseIO
this mouse structure needs to be revisited to allow for devices with more than 3 buttons
Member MPSB_DLINK
verify this speedup is enough to be worth the extra space
Member Network::init (void)
: don't hard-code the run-ahead.
Member NetworkDirectConnectInit (WindowLayout *layout, void *userData)
: display error and exit lan lobby if no IPs are found
Member NeutronMissileSlowDeathBehavior::doScorchBlast (const BlastInfo *blastInfo)
can't to this now, flames eat too many particles
Member NeutronMissileSlowDeathBehavior::update (void)
srj use SLEEPY_UPDATE here
Class Object
Create an ObjectInterface class.
Member Object::attemptDamage (DamageInfo *damageInfo)
track damage dealt/attempted
Member Object::getAmmoPipShowingInfo (Int &numTotal, Int &numFull) const
srj – may need to cache this inside weaponset.
Member Object::Object (const ThingTemplate *thing, const ObjectStatusMaskType &objectStatusMask, Team *team)
srj – figure out how to create this only on demand. currently we don't have a good way to add/remove update modules from an object on-the-fly, so we fake it here, and just skip the creation if it is impossible for this object to ever defect...
Member Object::scoreTheKill (const Object *victim)
Multiplayer score hook location?
Member OCLUpdate::update ()
srj use SLEEPY_UPDATE here
Member OpenContain::exitObjectInAHurry (Object *newObj)

srj – for now, OpenContain assumes at most one door

This really should be automatically wrapped up in an activation sequence for objects in general

Member OpenContain::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)

srj – for now, OpenContain assumes at most one door

This really should be automatically wrapped up in an activation sequence for objects in general

This really should be automatically wrapped up in an activation sequence for objects in general

Member OpenContain::getContainedItemsMass () const
srj – may want to cache this information.
Member OpenContain::update ()
srj – for now, OpenContain assumes at most one door
Member ParkingPlaceBehavior::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)
srj – this is evil. fix.
Member Particle::update (void)
Rethink this - at least its name
Member ParticleSystem::computeParticleVelocity (const Coord3D *pos)
Implement BOX OUTWARD velocity
Member ParticleSystem::computePointOnUnitSphere (void)
The density of random points generated is not uniform within the sphere
Member ParticleSystem::generateParticleInfo (Int particleNum, Int particleCount)
Avoid conversion from Coord3D to Vector3 somehow
Member ParticleSystem::getTemplate (void)
Const this (MSB)
Member ParticleSystem::ParticleSystem (const ParticleSystemTemplate *sysTemplate, ParticleSystemID id, Bool createSlaves)

: further formalize this parameter with an UnsignedInt field in the editor

It is confusing to do this conversion here...

Member ParticleSystem::update (Int localPlayerIndex)

reset start time when system is stopped/started

Concatenate this, instead of overriding (MSB)

Member ParticleSystemDebugDisplay (DebugDisplayInterface *dd, void *, FILE *fp)
Implement a real console (MSB)
Member ParticleSystemTemplate::DebugWindowDialog
remove this friendship when no longer editing particles
Member ParticleSystemTemplate::ParticleSystem
remove this friendship
Member ParticleSystemTemplate::ParticleSystemManager
remove this friendship
Member Path::computePointOnPath (const Object *obj, const LocomotorSet &locomotorSet, const Coord3D &pos, ClosestPointOnPathInfo &out)
Precompute this and store in path
Member Path::MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE (Path, "PathPool")
Set real numbers for mem alloc
Class PathfindCell
Optimize memory usage of pathfind grid.
Member PathfindCellInfo::m_open
Do we need both mark values in this cell? Can't store a single value and compare it?
Member Pathfinder::classifyMapCell (Int x, Int y, PathfindCell *cell)
optimize this - lots of redundant computation
Member Pathfinder::getMoveAwayFromPath (Object *obj, Object *otherObj, Path *pathToAvoid, Object *otherObj2, Path *pathToAvoid2)
- Adjust cost intersecting path - closer to front is more expensive. jba.
Member Pathfinder::internal_classifyObjectFootprint (Object *obj, Bool insert)
This is a very inefficient circle-rasterizer
Member Pathfinder::processHierarchicalCell (const ICoord2D &scanCell, const ICoord2D &deltaPathfindCell, PathfindCell *parentCell, PathfindCell *goalCell, zoneStorageType parentZone, zoneStorageType *examinedZones, Int &numExZones, Bool crusher, Int &cellCount)
- somehow out of bounds or bogus newZone.
Member PathNode::appendToList (PathNode *list)

optimize this

optimize this

Member PhysicsBehavior::checkForOverlapCollision (Object *other)
GS To account for different sized crushers, this should be redone as a box or circle test, not a point
Member PhysicsBehavior::onCollide (Object *other, const Coord3D *loc, const Coord3D *normal)

Make this work properly for non-cylindrical objects (MSB)

Physics collision resolution is 2D - should it be 3D? (MSB)

srj – ugh, an awful hack for paradrop problems. fix someday.

srj – what the hell is this code doing here? ack!

Member PhysicsBehavior::setAngles (Real yaw, Real pitch, Real roll)
Rotations should be handled by this system as well (MSB)
Member PhysicsBehavior::update ()

Currently, only translations are integrated. Rotations should also be integrated. (MSB)

Rotation should use torques, and integrate just like forces (MSB)

Member Player::garrisonAllUnits (CommandSourceType source)
srj – we should really use iterateAllObjects() here instead, but I have no time to
Member Player::getSupplyBoxValue ()
This would be the hookup for difficulty level modifiers and special economy buildings
Member Player::initFromDict (const Dict *d)
Ack! the todo in PlayerList::reset() mentioning the need for a Player::reset() really needs to get done.
Member Player::onUpgradeRemoved ()
Can't do edge trigger until after demo; make things check for power on creation
Member PlayerList::newGame (void)
The Player class should have a reset() method, instead of directly calling initFromDict() (MSB)
Member PlayerRelationMap::m_map
I'm jsut wrappign this up in a nice snapshot object, we really should isolate m_map from public access and make access methods for our operations
Member PointDefenseLaserUpdate::update ()
srj use SLEEPY_UPDATE here
Member PointGroupClass::_Init (void)

lorenzen sez: unwrap loop and use pointer arithmetic (if this gets called a lot)

lorenzen sez: umwrap and use pointers

lorenzen sez: pointer arithmetic like "++ib=vert+1"

lorenzen sez: pointers!

Member PointGroupClass::Render (RenderInfoClass &rinfo)

lorenzen asks: is particle culling in the shader perhaps faster than in DoParticles? Fix winding and find out...

lorenzen sez: precompute pointers to indexed array elements, below

lorenzen sez: use pointer arithmetic here and a fast while loop

lorenzen sez: if tri-based particles are not supported, elim this test

lorenzen sez: use pointer arithmetic throughout this block

lorenzen sez: delare thes locals outside this loop

lorenzen sez: use a fast while loop

Member PointGroupClass::RenderVolumeParticle (RenderInfoClass &rinfo, unsigned int depth)

lorenzen sez: precompute pointers to indexed array elements, below

lorenzen sez: use pointer arithmetic here and a fast while loop

lorenzen sez: if tri-based particles are not supported, elim this test

lorenzen sez: use pointer arithmetic throughout this block

lorenzen sez: delare thes locals outside this loop

lorenzen sez: use a fast while loop

lorenzen sez: precompute these params, above

Member PointGroupClass::Update_Arrays (Vector3 *point_loc, Vector4 *point_diffuse, float *point_size, unsigned char *point_orientation, unsigned char *point_frame, int active_points, int total_points, int &vnum, int &pnum)

lorenzen sez: precompute params below

lorenzen sez: this switch statement may be done more compactly another way... look into it

lorenzen sez: use pointer arithmetic below

lorenzen sez: use pointer arithmetic below

lorenzen sez: use a quicker, unwrapped loop, and pointer arithmetic

lorenzen sez: this is a leaf function, dang it

Member populateMapListboxNoReset (GameWindow *listbox, Bool useSystemMaps, Bool isMultiplayer, AsciiString mapToSelect)
: mapDisplayName = TheGameText->fetch(it->second.m_displayName.str());
Member populatePlayerInfo (Player *player, Int pos)

: what's a good percent of pings to have gotten?

: need something more than this, really. :(

Member ProductionPrerequisite::resolveNames ()
for now removing this assert until we can completely remove the GDF stuff, the problem is that some INI files refer to GDF names, and they aren't yet loaded in the world builder but will all go away later anyway etc
Member ProductionUpdate::canQueueCreateUnit (const ThingTemplate *unitType) const
srj – this is horrible, but the "right" way to do it is to move
Member ProductionUpdate::queueCreateUnit (const ThingTemplate *unitType, ProductionID productionID)
srj – this is horrible, but the "right" way to do it is to move
Member ProductionUpdate::update (void)
srj use SLEEPY_UPDATE here
Member ProneUpdate::update ()
srj use SLEEPY_UPDATE here
Member PropagandaTowerBehavior::update (void)
srj use SLEEPY_UPDATE here
Member QueueProductionExitUpdate::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)
This really should be automatically wrapped up in an actication sequence for objects in general
Member Radar::tryInfiltrationEvent (const Object *obj)
Should make an INI data driven table for radar event strings, and audio events
Member Radar::tryUnderAttackEvent (const Object *obj)
Should make an INI data driven table for radar event strings, and audio events
Member RadarUpdate::update (void)
srj use SLEEPY_UPDATE here
Member RadiusDecal::xferRadiusDecal (Xfer *xfer)
implement me
Member RayEffectSystem::addRayEffect (const Drawable *draw, const Coord3D *startLoc, const Coord3D *endLoc)
this should be more intelligent and should not be limited to any kind of max ray effects, this is all a temporary hack system for the demo anyway right now though
Member RecorderClass::startRecording (GameDifficulty diff, Int originalGameMode, Int rankPoints, Int maxFPS)
Need to write game options when there are some to be written.
Member RecorderClass::writeToFile (GameMessage *msg)
should this be in the final release?
Member RefreshGameInfoWindow (GameInfo *gameInfo, UnicodeString gameName)
: When we get art that shows player's side, then we'll actually draw the art instead of putting in text
Member Render2DClass::Add_Outline (const RectClass &rect, float width, const RectClass &uv, unsigned long color=0xFFFFFFFF)
colin, I had to tweak these to get precise line drawing, as we want the UV bias on, but it just isn't lining up
Member RoadType::loadTexture (AsciiString path, Int id)
- delay loading textures and only load textures referenced by map.
Member RTS3DScene::flagOccludedObjects (CameraClass *camera)
: Need some kind of scene subdivision or find way to use Partition manger to speed up the ray intersection tests. Maybe truncate the ray to terrain length before using it?
Member RTS3DScene::flushOccludedObjects (RenderInfoClass &rinfo)
: Optimize this so that the extra passes don't actually install the material since it's all the same.
Member RTS3DScene::Render (RenderInfoClass &rinfo)

: this probably doesn't need to be done each frame.

: Clearing to black may not be needed if the scene already did the clear.

: Clearing to black may not be needed if the scene already did the clear.

Member RTS3DScene::Visibility_Check (CameraClass *camera)

: Have better flag to detect reflection pass

: We're not using LOD yet so I disabled this code. MW

Member SC_DETAIL_BLEND
: Fix clipping of objects that intersect the mirror surface
Member ScorchTextureClass::ScorchTextureClass (MipCountType mipLevelCount=MIP_LEVELS_3)
- get "EXScorch01.tga" from not hard coded location.
Member ScreenCrossFadeFilterList []
: Add a version that doesn't require pixel shader
Member ScriptActions::doCreateReinforcements (const AsciiString &team, const AsciiString &waypoint)
- have better positioning for reinforcement units.
Member ScriptActions::doNamedAttack (const AsciiString &attackerName, const AsciiString &victimName)

Implement me (MSB)

Teams should have a method that returns the number of members in the team (MSB)

Member ScriptConditions::evaluateNamedCreated (Parameter *pUnitParm)
- evaluate created, not exists...
Member ScriptConditions::evaluatePlayerDestroyedNOrMoreBuildings (Parameter *pPlayerParm, Parameter *pNumParm, Parameter *pOppenentParm)
CLH implement me!
Member ScriptList::reset (void)
- move this code into sides list.
Member SegLineRendererClass::Set_Texture_Tile_Factor (float factor)
: I raised this number and didn't see much difference on our min-spec. -MW
Member Shadow::setOpacity (Int value)
: Pull these out so casting, etc. is only done for visible decals.
Member shadowVertexBufferD3D
: Externs from volumetric shadow renderer - these need to be moved into W3DBufferManager
Member SlavedUpdate::update ()
srj use SLEEPY_UPDATE here
Member SortingRendererClass::Insert_Triangles (const SphereClass &bounding_sphere, unsigned short start_index, unsigned short polygon_count, unsigned short min_vertex_index, unsigned short vertex_count)
lorenzen sez use a bucket sort here... and stop copying so much data so many times
Member SortingRendererClass::Insert_VolumeParticle (const SphereClass &bounding_sphere, unsigned short start_index, unsigned short polygon_count, unsigned short min_vertex_index, unsigned short vertex_count, unsigned short layerCount)
lorenzen sez use a bucket sort here... and stop copying so much data so many times
Member SpawnBehavior::onDie (const DamageInfo *damageInfo)
isDieApplicable should be called outside of the onDie call
Member SpawnBehavior::update ()
srj use SLEEPY_UPDATE here
Member SpawnPointProductionExitUpdate::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)
This really should be automatically wrapped up in an actication sequence for objects in general
Member SpawnPointProductionExitUpdate::SpawnPointProductionExitUpdate (Thing *thing, const ModuleData *moduleData)
Replace with our own matrix library
Member Speaker::update (void)
write an INI compatible dialog player
Member SpecialAbilityUpdate::update ()
srj – this could probably sleep more between stages. maybe someday.
Member StateMachine::internalSetState (StateID newStateID)
It might be useful to pass the old state in... (MSB)
Member StealthDetectorUpdate::update ()
srj – evil hack here... this whole heat-vision thing is fucked. don't want it on mines but no good way to do that. hack for now.
Member StealthUpdate::update ()

srj – improve sleeping behavior. we currently just sleep when not enabled,

srj – evil hack here... this whole heat-vision thing is fucked. don't want it on mines but no good way to do that. hack for now.

srj – do we need to do this EVERY frame?

Member SupplyCenterProductionExitUpdate::exitObjectViaDoor (Object *newObj, ExitDoorType exitDoor)
This really should be automatically wrapped up in an actication sequence for objects in general
Member Team::moveTeamTo (Coord3D destination)
This should give a "team move" command, not individual move orders (MSB)
Member TeamRelationMap::m_map
I'm jsut wrappign this up in a nice snapshot object, we really should isolate m_map from public access and make access methods for our operations
Member TerrainLogic::addWaypointLink (Int id1, Int id2)
ID's should be UnsignedInts (MSB)
Member TerrainLogic::alignOnTerrain (Real angle, const Coord3D &pos, Bool stickToGround, Matrix3D &mtx)
- fix brutal hack for bridges that are too high. jba
Member TerrainLogic::enableWaterGrid (Bool enable)
we should have this stuff stored with the map and have a real interface for design to edit such things so that people can put gridded water in any map without all this hard coded nasty stuff, but this is what "they" want for now
Member TerrainLogic::getExtent (Region3D *extent) const
This should not be a stub - this should own this functionality
Member TerrainLogic::getExtentIncludingBorder (Region3D *extent) const
This should not be a stub - this should own this functionality
Member TerrainLogic::getMaximumPathfindExtent (Region3D *extent) const
This should not be a stub - this should own this functionality
Member TerrainLogic::getWaterHandle (Real x, Real y)
: Remove this after we have all water types included in water triggers. For now do special check for water grid mesh.
Member TerrainLogic::newMap (Bool saveGame)
Mark W, remove this when you have water plane placements in the map done (Colin)
Member TerrainTracksRenderObjClass::addCapEdgeToTrack (Real x, Real y)

: Have object pass its height and orientation so we can remove extra calls.

: try getting height at endpoint

: try getting height at endpoint

Member TerrainTracksRenderObjClass::addEdgeToTrack (Real x, Real y)

: Have object pass its height and orientation so we can remove extra calls.

: try getting height at endpoint

: try getting height at endpoint

Member TerrainTracksRenderObjClass::Get_Obj_Space_Bounding_Sphere (SphereClass &sphere) const
: Add code to cull track marks to screen by constantly updating bounding volumes
Member TerrainTracksRenderObjClass::Render (RenderInfoClass &rinfo)
: After adding track mark visibility tests, add visible marks to another list.
Member TerrainTracksRenderObjClassSystem::flush (void)

: Optimize system by drawing tracks as triangle strips and use dynamic vertex buffer access. May also try rendering all tracks with one call to W3D/D3D by grouping them by texture. Try improving the fit to vertical surfaces like cliffs.

: Add diffuse lighting.

Member TheTeamFactory
- do delayed script evaluations for team scripts. jba.
Member TheW3DFrameLengthInMsec

This should be TerrainVisual (client side)

Remove this, it's only here because we are using timeGetTime, but we can remove that when we have our own timer

Member TheW3DVolumetricShadowManager

: Must cap shadow volumes if we ever allow camera inside the volumes.

: Find better way to determine when shadow volumes need updating - lights move, objects move.

Member ThingFactory::newDrawable (const ThingTemplate *tmplate, DrawableStatus statusBits=DRAWABLE_STATUS_NONE)
we should keep track of all the drawables we've allocated here but we'll wait until we have an drawable storage to do that cause it will all be tied together
Member UnicodeString::translate (const AsciiString &stringSrc)
srj put in a real translation here; this will only work for 7-bit ascii
Member UnitCrateCollide::executeCrateBehavior (Object *other)
As a user of the future findLegalPositionAround, I wouldn't mind not having to specify range. I just want a non colliding point.
Member UpgradeCenter::canAffordUpgrade (Player *player, const UpgradeTemplate *upgradeTemplate, Bool displayReason=FALSE) const
maybe have prereq checks for upgrades???
Member UpgradeTemplate::calcCostToBuild (Player *player) const
modify this by any player handicaps
Member UpgradeTemplate::calcTimeToBuild (Player *player) const
modify this by power state of player
Class Version
: increment build number on compile, and stamp exe with username
Member View::lookAt (const Coord3D *o)
this needs to be changed to be 3D, this is still old 2D stuff
Member W3DAssetManager::Report_Used_Assets (void)
: Report unfreed skeletons and animations
Member W3DBridge::cullBridge (CameraClass *camera)
- cull bridges.
Member W3DBridge::load (enum BodyDamageType curDamageState)
, should these be defaults in INI??? CBD
Member W3DBridgeBuffer::cull (CameraClass *camera)
- Sort bridges by texture for better performance.
Member W3DBridgeBuffer::worldBuilderUpdateBridgeTowers (W3DAssetManager *assetManager, SimpleSceneClass *scene)
integrate the editor with the game ... will never happen tho ...
Member W3DDebrisDraw::setModelName (AsciiString name, Color color, ShadowType t)
: Change back to identity once we figure out why objects show up at 0,0,0 OBJECT_PILE
Member W3DDisplay::createLightPulse (const Coord3D *pos, const RGBColor *color, Real innerRadius, Real outerRadius, UnsignedInt increaseFrameTime, UnsignedInt decayFrameTime)
Replace these light management routines with a LightManager singleton
Member W3DDisplay::createVideoBuffer (void)
query video player for supported formats - we assume bink formats here
Member W3DDisplay::draw (void)

Make more explicit drawing layers(ground, ground UI, objects, object UI, overlay UI)

: Ask Vegas why the LOD optimizer hangs particle system.

: I'm assuming the first view is our main 3D view.

: Is there a better place to put per-frame updates like this?

Decouple framerate from timestep

Member W3DDisplay::drawFillRect (Int startX, Int startY, Int width, Int height, UnsignedInt color)
we need to consider the efficiency of the 2D renderer
Member W3DDisplay::drawImage (const Image *image, Int startX, Int startY, Int endX, Int endY, Color color=0xFFFFFFFF, DrawImageMode mode=DRAW_IMAGE_ALPHA)
: Why are we alpha blending all images? Reduces our fillrate. -MW
Member W3DDisplay::drawLine (Int startX, Int startY, Int endX, Int endY, Real lineWidth, UnsignedInt lineColor)
we need to consider the efficiency of the 2D renderer
Member W3DDisplay::drawLine (Int startX, Int startY, Int endX, Int endY, Real lineWidth, UnsignedInt lineColor1, UnsignedInt lineColor2)
we need to consider the efficiency of the 2D renderer
Member W3DDisplay::drawOpenRect (Int startX, Int startY, Int width, Int height, Real lineWidth, UnsignedInt lineColor)
we need to consider the efficiency of the 2D renderer
Member W3DDisplay::init (void)

W3DDisplay needs RE-init logic!

we should set this according to options read from a file

Member W3DDisplay::m_3DScene
Need a scene abstraction
Member W3DDisplay::reset (void)
really need that "scene abstraction", having this stuff in the display is icky
Member W3DDisplay::setClipRegion (IRegion2D *region)
: Make this work for all primitives, not just drawImage.
Member W3DDisplay::setShroudLevel (Int x, Int y, CellShroudStatus setting)
placeholder to get feedback on logic work while graphic side being decided
Member W3DGameClient::adjustLOD (Int adj)
hack for evaluation, remove.
Member W3DGameClient::setTeamColor (Int red, Int green, Int blue)
superhack for demo, remove!!!
Member W3DGameClient::W3DGameClient ()
superhack for demo, remove!
Member W3DGameWinDefaultDraw (GameWindow *window, WinInstanceData *instData)
NOTE that we're making a W3DGameWindow cast here, it seems logical because we are in a W3D draw function so it's reasonable to assume that we have a W3DGameWindow. However, we may want to revisit this type of casting in the future, we have the same problems with the ObjectModules where we cast object modules for their individual methods. Also note that the other W3D implementations of GUI controls are making a similar cast for their device implementation functions
Member W3DGameWindow::winDrawBorder (void)
this WinDrawBorder is the old Nox function for drawing the borders on various windows and controls. We should derive classes of game windows for the different GUI controls and move the specific pieces of code that apply for those gadgets to those classes
Member W3DGhostObject::m_nextSystem
this list should really be part of the device independent base class (CBD 12-3-2002)
Member W3DGhostObject::snapShot (int playerIndex)
: We're going to ignore the case where each player index could be
Member W3DGhostObjectManager::m_freeModules
this list should really be part of the device independent base class (CBD 12-3-2002)
Member W3DInGameUI::draw (void)
should the UI be iterating through views like this?
Member W3DInGameUI::drawMoveHints (View *view)
write this to check if point is visible in view
Member W3dMaterialClass::Init (Mtl *mtl, char *materialColorTexture=NULL)

: Fix this for substituted textures.

: Fix this to procedural name/path

Member W3DModelDraw::getRenderObject ()
: I had to make this public because W3DDevice needs access for casting shadows -MW
Member W3DModelDraw::handleWeaponFireFX (WeaponSlotType wslot, Int specificBarrelToUse, const FXList *fxl, Real weaponSpeed, const Coord3D *victimPos, Real damageRadius)
Once Firepoint bones are actually implemented, this matrix will become correct. Unless of course they decide to not have the tracers come out of the windows, but rather go towards the target. In that case, tracers will have to be rewritten to be "point towards secondary" instead of "point straight ahead" which assumes we are facing the target.
Member W3DParticleSystemManager::doParticles (RenderInfoClass &rinfo)

lorenzen sez: this should be debug only:

lorenzen sez: declare these outside the sys loop, and put some in registers

Use both QUADS and TRIS for particles

Support animated texture particles

lorenzen sez: unimplemented code wastes cpu cycles

lorenzen sez: this should be debug only:

lorenzen sez: this should be debug only:

Member W3DParticleSystemManager::queueParticleRender ()
Clean up the flag/Flush hack.
Member W3DProjectedShadow::update (void)
: See why infinite light sources don't project shadows correctly.
Member W3DProjectedShadow::updateTexture (Vector3 &lightPos)

: See why infinite light sources don't project shadows correctly.

: tweak decal bounding volumes to something sensible

Member W3DProjectedShadowManager::addDecal (Shadow::ShadowTypeInfo *shadowInfo)
: Fix projected shadows to allow multiple lights
Member W3DProjectedShadowManager::addDecal (RenderObjClass *robj, Shadow::ShadowTypeInfo *shadowInfo)
: Fix projected shadows to allow multiple lights
Member W3DProjectedShadowManager::addShadow (RenderObjClass *robj, Shadow::ShadowTypeInfo *shadowInfo, Drawable *draw)
: Fix projected shadows to allow multiple lights
Member W3DProjectedShadowManager::queueDecal (W3DProjectedShadow *shadow)

: Optimize this bounding box calculation to use transformed extents

: fix the winding order in heightmap to be in strip order like above!

Member W3DProjectedShadowManager::queueSimpleDecal (W3DProjectedShadow *shadow)
: We should have a pre-made static filled index buffer since we always send down 2 triangles.
Member W3DProjectedShadowManager::ReAcquireResources (void)
: We should allocate our render target pool here.
Member W3DProjectedShadowManager::renderShadows (RenderInfoClass &rinfo)

: implement this method.

: may need to fix this if shadows are large enough to be seen while object is not visible

: don't apply shadows to translcuent objects unless they are MOBILE - hack to get tanks to work.

: may need to fix this if shadows are large enough to be seen while object is not visible

Member W3DProjectedShadowManager::updateRenderTargetTextures (void)
: Don't update texture for shadows that can't be seen!!
Member W3DRadar::setShroudLevel (Int x, Int y, CellShroudStatus setting)

srj – this really needs to smooth the display!

placeholder to get feedback on logic work while graphic side being decided

Member W3DShaderManager::getChipset (void)
: Just guessing on this one - find actual Voodoo4 deviceID.
Member W3DShadowGeometryMesh::GetPolygonNormal (long dwPolyNormId) const
: Cache/Store face normals someplace so they are not recomputed when lights move.
Member W3DShadowManager::setLightPosition (Int lightIndex, Real x, Real y, Real z)
: Add support for multiple lights
Member W3DShadowTexture::init (RenderObjClass *robj)
: implement this function
Member W3DShadowTexture::updateBounds (Vector3 &lightPos, RenderObjClass *robj)
: fix for multiple lights
Member W3DShroud::init (WorldHeightMap *pMap, Real worldCellSizeX, Real worldCellSizeY)
: Check if size has changed - probably never
Member W3DTerrainLogic::loadMap (AsciiString filename, Bool query)
The loading of the raw height data should be device independent
Member W3DView::draw ()

: Don't clear z-buffer unless shader uses z-bias or anything else that would cause <= z to fail on normal render.

we might want to consider wiping this iterate out if there is nothing to post draw

Member W3DView::iterateDrawablesInRegion (IRegion2D *screenRegion, Bool(*callback)(Drawable *draw, void *userData), void *userData)

we need to have partitions of which drawables are in the view so we don't have to march through the whole list

use fast int->real type casts here later

use a real 3D position in the drawable

Member W3DView::pickDrawable (const ICoord2D *screen, Bool forceAttack, PickType pickType)
terrain and picking!
Member W3DView::shake (const Coord3D *epicenter, CameraShakeType shakeType)

This should be part of "View", not "W3DView".

make this 3D once we have the real "lookat" spot

Member W3DView::update ()

Make this framerate-independent

this needs to use a real region partition or something

Member W3DVolumetricShadow::allocateSilhouette (Int meshIndex, Int numVertices)
: HACK, HACK... Should be 2!
Member W3DVolumetricShadow::RenderMeshVolume (Int meshIndex, Int lightIndex, const Matrix3D *meshXform)
: W3D always does transpose on all of matrix sets. Slow??? Better to hack view matrix.
Member W3DVolumetricShadow::updateMeshVolume (Int meshIndex, Int lightIndex, const Matrix3D *meshXform, const AABoxClass &meshBox, float floorZ)
: Find a better way to deal with this - use maximum extrusion once! Also avoid hit for units climbing hills.
Member W3DVolumetricShadow::updateVolumes (Real zoffset)
: Getting the transform of the mesh may be forcing a full hierarchy evaluation. Expensive for off-screen models... do we really need this?
Member W3DVolumetricShadowManager::renderShadows (Bool forceStencilFill)
: Put this check back in after water is fixed so it doesn't require shadow rendering to fix alpha.
Member WaterHandle::m_polygon
we need to formalize the water systems
Member WaterRenderObjClass::drawRiverWater (PolygonTrigger *pTrig)
: Figure out why rivers don't draw without reset of all states.
Member WaterRenderObjClass::Get_Obj_Space_Bounding_Sphere (SphereClass &sphere) const
: Add methods for collision detection with water surface
Member WaterRenderObjClass::getClippedWaterPlane (CameraClass *cam, AABoxClass *box)
: generate proper sized polygon
Member WaterRenderObjClass::init (Real waterLevel, Real dx, Real dy, SceneClass *parentScene, WaterType type)
: calculate a real normal/distance for arbitrary planes.
Member WaterRenderObjClass::renderSkyBody (Matrix3D *mat)

: Add code to render properly sorted sun sky body.

: hacked so only works for reflections across xy plane

Member WaterTracksObj::Get_Obj_Space_Bounding_Sphere (SphereClass &sphere) const
: Add code to cull track marks to screen by constantly updating bounding volumes
Member WaterTracksObj::render (DX8VertexBufferClass *vertexBuffer, Int batchStart)
: bug?
Member WaterTracksObj::update (Int msElapsed)
: Should check in here if we are done with this object are return FALSE to free it.
Member WaterTracksRenderSystem::flush (RenderInfoClass &rinfo)
: Optimize system by drawing tracks as triangle strips and use dynamic vertex buffer access. May also try rendering all tracks with one call to W3D/D3D by grouping them by texture. Try improving the fit to vertical surfaces like cliffs.
Member WaterTracksRenderSystem::init (void)

: Get a value out of gdf

: grab these out of gdf or define

Member WaveGuideUpdate::update (void)
srj use SLEEPY_UPDATE here
Member WBHeightMap::Cast_Ray (RayCollisionTestClass &raytest)
: WW3D uses this to return dirt, grass, etc. Do we need this?
Member WbView3d::getBestModelName (const ThingTemplate *tt, const ModelConditionFlags &c)
srj – this is a terrible hack, since things can have multiple models, and it's private info. fix later.
Member WbView3d::invalidateCellInView (int xIndex, int yIndex)
be smarter about invaling the area
Member WbView3d::shutdownWW3D ()
: where does this need to be done?
Member Weapon::computeApproachTarget (const Object *source, const Object *target, const Coord3D *pos, Real angleOffset, Coord3D &approachTargetPos) const
- make sure we can get to the approach position.
Member WeaponTemplate::dealDamageInternal (ObjectID sourceID, ObjectID victimID, const Coord3D *pos, const WeaponBonus &bonus, Bool isProjectileDetonation) const

We need to rewrite the historic stuff ... if you fire 5 missiles, and the 5th, one creates a firestorm ... and then half a second later another volley of 5 missiles come in, the second wave of 5 missiles would all do a historic weapon, making 5 more firestorms (CBD)

E3 hack! Clear the list for now to make sure we don't have multiple firestorms remove this when the branches merge back into one. What is causing the multiple firestorms, who is to say ... this is a plug, not a fix!

Member WinInstanceData::m_id
you may want to make these data members protected, they are public because of the legacy of porting all this code in from Nox, but they really should be protected and have the rest of the code use access functions to edit them
Member WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, Int nCmdShow)
remove this force set of working directory later
Member WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
remove this force set of working directory later
Member WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
: Look into proper support for dual monitor systems.
Member WOLQuickMatchMenuUpdate (WindowLayout *layout, void *userData)
: MDC handle disconnects in-game the same way as Custom Match!
Member WOLWelcomeMenuSystem (GameWindow *window, UnsignedInt msg, WindowMsgData mData1, WindowMsgData mData2)
: log out instead of disconnecting
Member WorkerAIUpdate::construct (const ThingTemplate *what, const Coord3D *pos, Real angle, Player *owningPlayer, Bool isRebuild)
make 'construct' a real AI command and you won't need a special case
Member WorkerAIUpdate::internalCancelTask (DozerTask task)
we really need a stop command instead of making it move to it's current location
Member WorkerAIUpdate::internalTaskCompleteOrCancelled (DozerTask task)
This would be correct except that we don't have idle crane animations and it is December.
Member WorkerAIUpdate::update ()
shouldn't this be at a higher level?
Member WorldHeightMap::getExtraAlphaUVData (Int xIndex, Int yIndex, float U[4], float V[4], UnsignedByte alpha[4], Bool *flip, Bool *cliff)
: Are the different "if" cases mutually exclusive? If so, should add else statements.
Member WorldHeightMapEdit::loadBaseImages (void)
- take this out when we are done evaluating terrain textures.