BVB Source Codes

CRYENGINE Show Interactor.h Source code

Return Download CRYENGINE: download Interactor.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef __INTERACTOR_H__
  4. #define __INTERACTOR_H__
  5.  
  6. #pragma once
  7.  
  8. #include "IGameObject.h"
  9. #include "IInteractor.h"
  10.  
  11. class CWorldQuery;
  12. struct IEntitySystem;
  13.  
  14. class CInteractor : public CGameObjectExtensionHelper<CInteractor, IInteractor>
  15. {
  16. public:
  17.         CInteractor();
  18.         ~CInteractor();
  19.  
  20.         // IGameObjectExtension
  21.         virtual bool                 Init(IGameObject* pGameObject);
  22.         virtual void                 InitClient(int channelId)                                                       {};
  23.         virtual void                 PostInit(IGameObject* pGameObject);
  24.         virtual void                 PostInitClient(int channelId)                                                   {};
  25.         virtual bool                 ReloadExtension(IGameObject* pGameObject, const SEntitySpawnParams& params);
  26.         virtual void                 PostReloadExtension(IGameObject* pGameObject, const SEntitySpawnParams& params) {}
  27.         virtual void                 Release();
  28.         virtual void                 FullSerialize(TSerialize ser);
  29.         virtual bool                 NetSerialize(TSerialize ser, EEntityAspects aspect, uint8 profile, int flags);
  30.         virtual void                 PostSerialize();
  31.         virtual void                 SerializeSpawnInfo(TSerialize ser) {}
  32.         virtual ISerializableInfoPtr GetSpawnInfo()                     { return 0; }
  33.         virtual void                 Update(SEntityUpdateContext& ctx, int slot);
  34.         virtual void                 HandleEvent(const SGameObjectEvent&);
  35.         virtual void                 ProcessEvent(SEntityEvent&) {};
  36.         virtual void                 SetChannelId(uint16 id)     {};
  37.         virtual void                 SetAuthority(bool auth)     {}
  38.         virtual void                 PostUpdate(float frameTime) { CRY_ASSERT(false); }
  39.         virtual void                 PostRemoteSpawn()           {};
  40.         virtual void                 GetMemoryUsage(ICrySizer* pSizer) const;
  41.         // ~IGameObjectExtension
  42.  
  43.         // IInteractor
  44.         virtual bool IsUsable(EntityId entityId) const;
  45.         virtual bool IsLocked() const                { return m_lockEntityId != 0; };
  46.         virtual int  GetLockIdx() const              { return m_lockIdx; };
  47.         virtual int  GetLockedEntityId() const       { return m_lockEntityId; };
  48.         virtual void SetQueryMethods(char* pMethods) { m_queryMethods = pMethods; };
  49.         virtual int  GetOverEntityId() const         { return m_overId; };
  50.         virtual int  GetOverSlotIdx() const          { return m_overIdx; };
  51.         //~IInteractor
  52.  
  53. private:
  54.  
  55.         struct SQueryResult
  56.         {
  57.                 SQueryResult() : entityId(0), slotIdx(0), hitPosition(0, 0, 0), hitDistance(0) {}
  58.                 EntityId entityId;
  59.                 int      slotIdx;
  60.                 Vec3     hitPosition;
  61.                 float    hitDistance;
  62.         };
  63.  
  64.         typedef std::pair<IEntity*, SQueryResult> TQueryElement;
  65.         typedef std::vector<TQueryElement>        TQueryVector;
  66.         typedef std::map<IEntityClass*, bool>     TUsableClassesMap;
  67.  
  68.         CWorldQuery*      m_pQuery;
  69.  
  70.         float             m_useHoverTime;
  71.         float             m_unUseHoverTime;
  72.         float             m_messageHoverTime;
  73.         float             m_longHoverTime;
  74.  
  75.         ITimer*           m_pTimer;
  76.         IEntitySystem*    m_pEntitySystem;
  77.  
  78.         string            m_queryMethods;
  79.  
  80.         SmartScriptTable  m_pGameRules;
  81.         HSCRIPTFUNCTION   m_funcIsUsable;
  82.         HSCRIPTFUNCTION   m_funcOnNewUsable;
  83.         HSCRIPTFUNCTION   m_funcOnUsableMessage;
  84.         HSCRIPTFUNCTION   m_funcOnLongHover;
  85.  
  86.         SmartScriptTable  m_areUsableEntityList;
  87.         HSCRIPTFUNCTION   m_funcAreUsable;
  88.         TQueryVector      m_frameQueryVector;
  89.         TUsableClassesMap m_usableEntityClasses;
  90.  
  91.         EntityId          m_lockedByEntityId;
  92.         EntityId          m_lockEntityId;
  93.         int               m_lockIdx;
  94.  
  95.         EntityId          m_nextOverId;
  96.         int               m_nextOverIdx;
  97.         CTimeValue        m_nextOverTime;
  98.         EntityId          m_overId;
  99.         int               m_overIdx;
  100.         CTimeValue        m_overTime;
  101.         bool              m_sentMessageHover;
  102.         bool              m_sentLongHover;
  103.  
  104.         float             m_lastRadius;
  105.  
  106.         static ScriptAnyValue EntityIdToScript(EntityId id);
  107.         void                  PerformQueries(EntityId& id, int& idx);
  108.         void                  UpdateTimers(EntityId id, int idx);
  109.  
  110.         bool                  PerformRayCastQuery(SQueryResult& r);
  111.         bool                  PerformViewCenterQuery(SQueryResult& r);
  112.         bool                  PerformDotFilteredProximityQuery(SQueryResult& r, float minDot);
  113.         bool                  PerformMergedQuery(SQueryResult& r, float minDot);
  114.         bool                  PerformUsableTestAndCompleteIds(IEntity* pEntity, SQueryResult& r) const;
  115.         int                   PerformUsableTest(IEntity* pEntity) const;
  116.         void                  PerformUsableTestOnEntities(TQueryVector& query);
  117.         float                 LinePointDistanceSqr(const Line& line, const Vec3& point);
  118.  
  119.         bool                  IsEntityUsable(const IEntity* pEntity);
  120. };
  121.  
  122. #endif
  123.  
downloadInteractor.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