Tactics: Western Philosophers Vs. Musicians  0.12
A turn-based tactical game combining rules and gameplay elements inspired by Final Fantasy Tactics and the Mayfair Exponential Game System. Unlike most games of this type, motion is in full, grid-less 3D.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Todo List
Member OpenSkyNet::CD::Box::getFirstIntersection (const Math::Point<> &thisCenter_, const Math::Matrix3x3 &thisRot_, const Math::Point<> &thisVel_, const Shape *otherShape_, const Math::Point<> &otherCenter_, const Math::Matrix3x3 &otherRot_, const Math::Point<> &otherVel_, HitInfo &hitInfo_) const

hit position

hit normal for edges and corners

hit position

hit normal for edges and corners

box-sphere first intersection

Member OpenSkyNet::CD::Grid::BinOccupiersList
Use a custom pool allocator
Member OpenSkyNet::Core::CollisionDetector::_nonCollidingOccupiers
Use a custom pool allocator
Member OpenSkyNet::Core::CollisionDetector::CollisionDetector ()
Only reason to call init is for g_binLookupTable initialization. Separate it from g_initialGrid.
Member OpenSkyNet::Core::CollisionDetector::getClosestRayIntersection (const Math::Point<> &rayOrigin_, const Math::Point<> &rayDir_, Utils::uint colGroup_, CD::HitInfo &hitInfo_) const
Find grid bins that intersect first?
Member OpenSkyNet::Core::CollisionDetector::update (float dt_)
Use a custom pool allocator
Member OpenSkyNet::Core::Director::update (float dt_)
Update other cinematographers besides the current one.
Member OpenSkyNet::Core::PhysVisUpdater::update (float dt_)
This is inefficient as a check is not needed per object
Member OpenSkyNet::Graphics::ObjectTextDisplay::update ()
use hardware occlusion queries to determine whether text should be displayed
Member OpenSkyNet::Graphics::OgreApp::createScene (const char *sceneGraphXML_)
Don't hack attenuation
Member OpenSkyNet::Graphics::OgreApp::serializeSceneGraph (const char *sceneGraphXML_)
allow other light types than ambient and point
Member OpenSkyNet::Math::Quaternion::Quaternion ()
Implement Quaternion class.
Member OpenSkyNet::OgreCore::OgreCinematographer::setRot (const Math::Matrix3x3 &rot_)
Should I really be setting ortho here?
Member OpenSkyNet::OgreCore::OgrePhysVisObject::syncVisFromPhys ()
Should I really be setting ortho here?
Member OpenSkyNet::OgreCore::OgreVisibleObject::setRot (const Math::Matrix3x3 &rot_)
Should I really be setting ortho here?
Class OpenSkyNet::PF::Manager

and rotating) obstacles.

Obstacles can occupy multiple bins. The driver and target, however, are only hashed to one bin, regardless of their volumes. This can result in the driver not reaching its goal since the space it occupies may extend into bins outside the found path and where obstacles lie. Another result is that a path is only searched for to the bin containing the center of the target's bounding volume.

Member OpenSkyNet::PF::Manager::resetPathfindingVars ()
attempting paths with different initial directions (not implemented). This method also stops any unfinished piecemeal pathfinding.
Class OpenSkyNet::PF::WaypointCollection
A WaypointCollection is currently translatable, but not rotatable.
Member Tactics3D::App::frameStarted (const Ogre::FrameEvent &evt)

This is inefficient as _movementLeftInAction may not change each frame.

shouldn't check this every frame

notify all players; probably need PCs to wait in onEvocation()

should verify this happens for all clients in networked games

should remove from warrior

shouldn't check this every frame

notify all players; probably need PCs to wait in onEvocation()

should verify this happens for all clients in networked games

should remove from warrior

Member Tactics3D::App::handleActionCancelButton (const CEGUI::EventArgs &e)
Member Tactics3D::App::handleActionsListbox (const CEGUI::EventArgs &e)
static_cast here is dangerous, but CEGUI does not seem to have RTTI enabled for Win32 when packaged with the Ogre SDK.
Member Tactics3D::App::handleWarriorsSetupWindows (const CEGUI::EventArgs &e)
Allow save games for multi-player?
Member Tactics3D::App::loadTactics3DObjectsXML (const char *tactics3DObjectsXML_, bool loadWarriorsImages_)
Don't force teams based on whether server or client
Member Tactics3D::App::loadWarriorXML (OpenSkyNet::Utils::uint index_)
collectible refactoring
Member Tactics3D::App::notifyRenderSingleObject (Ogre::Renderable *rend, const Ogre::Pass *pass, const Ogre::AutoParamDataSource *source, const Ogre::LightList *pLightList, bool suppressRenderStateChanges)
Follow the Ogre lighting sample in 1.8.1
Member Tactics3D::App::processUnbufferedMouseInput (const Ogre::FrameEvent &evt)
Don't make this hardcoded; the HUD display image is set to this and does not scale
Member Tactics3D::EvocationObject::EvocationObject (OpenSkyNet::Core::PhysVisObject *pVO_)
remove this hack of setting an out-of-grid transform to handle collisions on creation
Member Tactics3D::EvocationObject::~EvocationObject ()
_pVO is not destroyed until destroyAllObjects(); is that a problem?
Member Tactics3D::NPC::doPerformAction (const Action *action_, bool &doDelay_, bool &doSubstitute_, Action *&substitute_)

handle multiple defenders

Skip the current move action if the warrior is moving towards another warrior for an attack or special move this round and the defender is already in attack range. However, this prevents rotating towards the defender, so don't allow the skip for now.

Member Tactics3D::NPC::handleTransformChange (OpenSkyNet::Core::Object *obj_, const OpenSkyNet::Math::Point<> &prevPos_, const OpenSkyNet::Math::Matrix3x3 &prevRot_, float dt_)
find a better way to detect rotation changes
Member Tactics3D::NPC::onPrePerformAnyAction (const std::vector< Warrior * > &warriors_)
don't hardcode an attack range
Member Tactics3D::NPC::setActions ()

lame, have a better way to choose a special move based on the closest attack ranges

lame, don't just choose a random attack

lame, don't just hardcode the power punch modifier

Member Tactics3D::PC::handleNonCollidingTransformApplied (OpenSkyNet::Core::Object *obj_)
verify this is always warranted
Member Tactics3D::PC::setPos (const OpenSkyNet::Math::Point<> &pos_)
verify this is always warranted
Member Tactics3D::recvPCAttributes (void *arg)
Don't hardcode the number of expected PCs
Member Tactics3D::RemotePC::onEvocation ()
check if creation failed for sender
Member Tactics3D::RemotePC::onMove ()
Lerp to final position
Member Tactics3D::Utils::calcSpeed (int dex_, int str_, int equipmentWeightInPounds_)
Factor in str and equipment
Member Tactics3D::Warrior::doPerformAction (const Action *action_, bool &doDelay_, bool &doSubstitute_, Action *&substitute_)
don't check for specific special moves
Member Tactics3D::Warrior::FightingStyleContextMap
Use a custom pool allocator
Member Tactics3D::Warrior::takeDamage (int dmg_)
is it correct that if damage is taken, then all continuous actions are lost?
Member Tactics3D::WarriorsSetupScreen::handleAddButton (const CEGUI::EventArgs &e)
collectible refactoring
Member Tactics3D::WarriorsSetupScreen::setupEventHandlers ()
Don't force teams based on whether server or client