BVB Source Codes

CRYENGINE Show GoalOp_G02.h Source code

Return Download CRYENGINE: download GoalOp_G02.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. /********************************************************************
  4.    -------------------------------------------------------------------------
  5.    File name:   GoalOp_G02.h
  6.    Description: Game 02 goalops
  7.              These should move into GameDLL when interfaces allow!
  8.    -------------------------------------------------------------------------
  9.    History:
  10.    - 25:02:2008 - Created by Matthew Jack
  11.    - 2 Mar 2009 - Evgeny Adamenkov: Removed IRenderer
  12.  *********************************************************************/
  13.  
  14. #ifndef __GoalOp_G02_H__
  15. #define __GoalOp_G02_H__
  16.  
  17. #pragma once
  18.  
  19. #include "GoalOp.h"
  20. #include "GoalOpFactory.h"
  21.  
  22. // Forward declarations
  23. class COPPathFind;
  24. class COPTrace;
  25.  
  26. /**
  27.  * Factory for G02 goalops
  28.  *
  29.  */
  30. class CGoalOpFactoryG02 : public IGoalOpFactory
  31. {
  32.         IGoalOp* GetGoalOp(const char* sGoalOpName, IFunctionHandler* pH, int nFirstParam, GoalParameters& params) const;
  33.         IGoalOp* GetGoalOp(EGoalOperations op, GoalParameters& params) const;
  34. };
  35.  
  36. ////////////////////////////////////////////////////////////
  37. //
  38. //                              CHARGE - chase target and charge when condition is met.
  39. //
  40. ////////////////////////////////////////////////////////
  41. class COPCharge : public CGoalOp
  42. {
  43.         CAIObject* m_moveTarget;
  44.         CAIObject* m_sightTarget;
  45.         int        m_looseAttentionId;
  46.  
  47.         Vec3       m_debugAntenna[9];
  48.         Vec3       m_debugRange[2];
  49.         Vec3       m_debugHit[2];
  50.         bool       m_debugHitRes;
  51.         float      m_debugHitRad;
  52.  
  53.         int        m_state;
  54.         enum EChargeState
  55.         {
  56.                 STATE_APPROACH,
  57.                 STATE_ANTICIPATE,
  58.                 STATE_CHARGE,
  59.                 STATE_FOLLOW_TROUGH,
  60.         };
  61.  
  62.         float      m_distanceFront;
  63.         float      m_distanceBack;
  64.         bool       m_useLastOpResult;
  65.         bool       m_lookAtLastOp;
  66.         bool       m_initialized;
  67.         CTimeValue m_anticipateTime;
  68.         CTimeValue m_approachStartTime;
  69.         bool       m_bailOut;
  70.  
  71.         float      m_stuckTime;
  72.  
  73.         Vec3       m_chargePos;
  74.         Vec3       m_chargeStart;
  75.         Vec3       m_chargeEnd;
  76.         Vec3       m_lastOpPos;
  77.  
  78.         CPipeUser* m_pOperand;
  79.  
  80.         void ValidateRange();
  81.         void SetChargeParams();
  82.         void UpdateChargePos();
  83.  
  84. public:
  85.         COPCharge(float distanceFront, float distanceBack, bool bUseLastOp, bool bLookatLastOp);
  86.         ~COPCharge();
  87.  
  88.         void          SteerToTarget();
  89.  
  90.         EGoalOpResult Execute(CPipeUser* pOperand);
  91.         void          ExecuteDry(CPipeUser* pOperand);
  92.         void          Reset(CPipeUser* pOperand);
  93.         void          OnObjectRemoved(CAIObject* pObject);
  94.         void          DebugDraw(CPipeUser* pOperand) const;
  95. };
  96.  
  97. ////////////////////////////////////////////////////////////
  98. //
  99. // SEEKCOVER - Seek cover dynamically
  100. //
  101. ////////////////////////////////////////////////////////
  102.  
  103. class COPSeekCover : public CGoalOp
  104. {
  105. public:
  106.         COPSeekCover(bool uncover, float radius, float minRadius, int iterations, bool useLastOpAsBackup, bool towardsLastOpResult);
  107.         explicit COPSeekCover(const XmlNodeRef& node);
  108.         ~COPSeekCover();
  109.  
  110.         EGoalOpResult Execute(CPipeUser* pOperand);
  111.         void          ExecuteDry(CPipeUser* pOperand);
  112.         void          Reset(CPipeUser* pOperand);
  113.         void          Serialize(TSerialize ser);
  114.         void          DebugDraw(CPipeUser* pOperand) const;
  115.  
  116. private:
  117.  
  118.         struct SAIStrafeCoverPos
  119.         {
  120.                 SAIStrafeCoverPos(const Vec3& pos, bool vis, bool valid, IAISystem::ENavigationType navType)
  121.                         : pos(pos)
  122.                         , vis(vis)
  123.                         , valid(valid)
  124.                         , navType(navType)
  125.                 {
  126.                 };
  127.  
  128.                 Vec3                           pos;
  129.                 bool                           vis;
  130.                 bool                           valid;
  131.                 IAISystem::ENavigationType     navType;
  132.                 std::vector<SAIStrafeCoverPos> child;
  133.         };
  134.  
  135.         bool IsTargetVisibleFrom(const Vec3& from, const Vec3& targetPos);
  136.  
  137.         typedef std::pair<Vec3, float> Vec3FloatPair;
  138.  
  139.         bool IsSegmentValid(IAISystem::tNavCapMask navCap, float rad, const Vec3& posFrom, Vec3& posTo, IAISystem::ENavigationType& navTypeFrom);
  140.         void CalcStrafeCoverTree(SAIStrafeCoverPos& pos, int i, int j, const Vec3& center, const Vec3& forw, const Vec3& right,
  141.                                  float radius, const Vec3& target, IAISystem::tNavCapMask navCap, float passRadius, bool insideSoftCover,
  142.                                  const std::vector<Vec3FloatPair>& avoidPos, const std::vector<Vec3FloatPair>& softCoverPos);
  143.  
  144.         bool               GetPathTo(SAIStrafeCoverPos& pos, SAIStrafeCoverPos* pTarget, CNavPath& path, const Vec3& dirToTarget, IAISystem::tNavCapMask navCap, float passRadius);
  145.         void               DrawStrafeCoverTree(SAIStrafeCoverPos& pos, const Vec3& target) const;
  146.  
  147.         bool               OverlapSegmentAgainstAvoidPos(const Vec3& from, const Vec3& to, float rad, const std::vector<Vec3FloatPair>& avoidPos);
  148.         bool               OverlapCircleAgaintsAvoidPos(const Vec3& pos, float rad, const std::vector<Vec3FloatPair>& avoidPos);
  149.         void               GetNearestPuppets(CPuppet* pSelf, const Vec3& pos, float radius, std::vector<Vec3FloatPair>& positions);
  150.         bool               IsInDeepWater(const Vec3& pos);
  151.  
  152.         SAIStrafeCoverPos* GetFurthestFromTarget(SAIStrafeCoverPos& pos, const Vec3& center, const Vec3& forw, const Vec3& right, float& maxDist);
  153.         SAIStrafeCoverPos* GetNearestToTarget(SAIStrafeCoverPos& pos, const Vec3& center, const Vec3& forw, const Vec3& right, float& minDist);
  154.         SAIStrafeCoverPos* GetNearestHidden(SAIStrafeCoverPos& pos, const Vec3& from, float& minDist);
  155.  
  156.         void               UsePath(CPipeUser* pOperand, SAIStrafeCoverPos* pos, IAISystem::ENavigationType navType);
  157.  
  158.         SAIStrafeCoverPos*         m_pRoot;
  159.  
  160.         bool                       m_uncover;
  161.         int                        m_state;
  162.         float                      m_radius;
  163.         float                      m_minRadius;
  164.         int                        m_iterations;
  165.         float                      m_endAccuracy;
  166.         bool                       m_useLastOpAsBackup;
  167.         bool                       m_towardsLastOpResult;
  168.         CTimeValue                 m_lastTime;
  169.         int                        m_notMovingTimeMs;
  170.         COPTrace*                  m_pTraceDirective;
  171.         Vec3                       m_center, m_forward, m_right;
  172.         Vec3                       m_target;
  173.         std::vector<Vec3FloatPair> m_avoidPos;
  174.         std::vector<Vec3FloatPair> m_softCoverPos;
  175. };
  176.  
  177. #endif //__GoalOp_G02_H__
  178.  
downloadGoalOp_G02.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top