BVB Source Codes

CRYENGINE Show Group.h Source code

Return Download CRYENGINE: download Group.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef __Group_h__
  4. #define __Group_h__
  5.  
  6. #pragma once
  7.  
  8. typedef int GroupID;
  9.  
  10. class Group
  11. {
  12. public:
  13.         typedef uint32 NotificationID;
  14.  
  15.         enum
  16.         {
  17.                 MaxNotificationLength = 56,
  18.         };
  19.  
  20.         Group();
  21.         Group(const GroupID& groupID);
  22.         ~Group();
  23.  
  24.         static void ClearStaticData() { stl::free_container(s_targetInfos); }
  25.  
  26.         typedef VectorSet<tAIObjectID> Members;
  27.         const Members&                GetMembers() const;
  28.  
  29.         IAIGroupProxy*                GetProxy() const { return m_proxy; }
  30.  
  31.         uint32                        GetMemberCount() const;
  32.         void                          AddMember(tAIObjectID objectID);
  33.         void                          RemoveMember(tAIObjectID objectID);
  34.  
  35.         void                          Reset(EObjectResetType type);
  36.         void                          Update(float updateTime);
  37.         bool                          Empty() const;
  38.  
  39.         void                          Swap(Group& other);
  40.  
  41.         const CCountedRef<CAIObject>& GetTarget() const;
  42.         EAITargetThreat               GetTargetThreat() const;
  43.         EAITargetType                 GetTargetType() const;
  44.         const Vec3& GetTargetLocation() const;
  45.  
  46.         void        Notify(const NotificationID& notificationID, tAIObjectID recipientID, const char* name);
  47.  
  48.         void        Serialize(TSerialize ser);
  49.  
  50. private:
  51.         struct TargetInfo
  52.         {
  53.                 TargetInfo(const tAIObjectID& _targetID, uint32 _threat, uint32 _type, const Vec3& _position)
  54.                         : targetID(_targetID)
  55.                         , threat(_threat)
  56.                         , type(_type)
  57.                         , occurences(1)
  58.                         , position(_position)
  59.                 {
  60.                 }
  61.  
  62.                 tAIObjectID targetID;
  63.                 uint32      threat;
  64.                 uint32      type;
  65.                 uint32      occurences;
  66.                 Vec3        position;
  67.  
  68.                 bool operator<(const TargetInfo& other) const
  69.                 {
  70.                         if (threat == other.threat)
  71.                                 return occurences < other.occurences;
  72.                         return threat < other.threat;
  73.                 }
  74.         };
  75.  
  76.         typedef std::vector<TargetInfo> TargetInfos;
  77.         static TargetInfos        s_targetInfos;
  78.  
  79.         CCountedRef<CAIObject>    m_target;
  80.         EAITargetThreat           m_targetThreat;
  81.         EAITargetType             m_targetType;
  82.         EAITargetType             m_prevTargetType;
  83.  
  84.         Vec3                      m_targetLocation;
  85.  
  86.         _smart_ptr<IAIGroupProxy> m_proxy;
  87.  
  88.         Members                   m_members;
  89.  
  90.         struct QueuedNotification
  91.         {
  92.                 QueuedNotification()
  93.                         : ID(0)
  94.                         , senderID(0)
  95.                 {
  96.                         notification[0] = 0;
  97.                 }
  98.  
  99.                 QueuedNotification(const NotificationID& _notificationID, tAIObjectID _senderID, const char* _notification)
  100.                         : ID(_notificationID)
  101.                         , senderID(_senderID)
  102.                 {
  103.                         cry_strcpy(notification, _notification);
  104.                 }
  105.  
  106.                 NotificationID ID;
  107.                 tAIObjectID    senderID;
  108.                 char           notification[MaxNotificationLength];
  109.  
  110.                 void           Serialize(TSerialize ser)
  111.                 {
  112.                         ser.Value("ID", ID);
  113.                         ser.Value("senderID", senderID);
  114.  
  115.                         string textString(notification);
  116.                         ser.Value("notification", textString);
  117.  
  118.                         if (ser.IsReading())
  119.                                 cry_strcpy(notification, textString.c_str());
  120.                 }
  121.         };
  122.  
  123.         std::deque<QueuedNotification> m_notifications;
  124.         GroupID                        m_groupID;
  125. };
  126.  
  127. #endif // __Group_h__
  128.  
downloadGroup.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