BVB Source Codes

CRYENGINE Show FlashUIElement.h Source code

Return Download CRYENGINE: download FlashUIElement.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. // -------------------------------------------------------------------------
  4. //  File name:   FlashUIElement.h
  5. //  Version:     v1.00
  6. //  Created:     10/9/2010 by Paul Reindell.
  7. //  Description:
  8. // -------------------------------------------------------------------------
  9. //  History:
  10. //
  11. ////////////////////////////////////////////////////////////////////////////
  12. #ifndef __FlashUIElement_H__
  13. #define __FlashUIElement_H__
  14.  
  15. #include <CrySystem/Scaleform/IFlashUI.h>
  16. #include <CryCore/Containers/CryListenerSet.h>
  17. #include <CryCore/Platform/IPlatformOS.h>
  18.  
  19. struct SUIElementSerializer;
  20. class CFlashUI;
  21.  
  22. class CFlashUIElement
  23.         : public IUIElement
  24.           , public IFSCommandHandler
  25.           , public IVirtualKeyboardEvents
  26. {
  27. public:
  28.         CFlashUIElement(CFlashUI* pFlashUI, CFlashUIElement* pBaseInstance = NULL, uint instanceId = 0);
  29.         virtual ~CFlashUIElement();
  30.  
  31.         virtual void                                     AddRef();
  32.         virtual void                                     Release();
  33.  
  34.         virtual uint                                     GetInstanceID() const { return m_iInstanceID; }
  35.         virtual IUIElement*                              GetInstance(uint instanceID);
  36.         virtual IUIElementIteratorPtr                    GetInstances() const;
  37.         virtual bool                                     DestroyInstance(uint instanceID);
  38.         virtual bool                                     DestroyThis()                        { return DestroyInstance(m_iInstanceID); }
  39.  
  40.         virtual void                                     SetName(const char* sName)           { m_sName = sName; }
  41.         virtual const char*                              GetName() const                      { return m_sName.c_str(); }
  42.  
  43.         virtual void                                     SetGroupName(const char* sGroupName) { m_sGroupName = sGroupName; }
  44.         virtual const char*                              GetGroupName() const                 { return m_sGroupName.c_str(); }
  45.  
  46.         virtual void                                     SetFlashFile(const char* sFlashFile);
  47.         virtual const char*                              GetFlashFile() const { return m_sFlashFile.c_str(); }
  48.  
  49.         virtual bool                                     Init(bool bLoadAsset = true);
  50.         virtual void                                     Unload(bool bAllInstances = false);
  51.         virtual void                                     Reload(bool bAllInstances = false);
  52.         virtual bool                                     IsInit() const { return m_pFlashplayer != NULL; }
  53.  
  54.         virtual void                                     RequestUnload(bool bAllInstances = false);
  55.  
  56.         virtual bool                                     IsValid() const { return m_pBaseInstance ? m_pBaseInstance->m_bIsValid : m_bIsValid; }
  57.  
  58.         virtual void                                     UnloadBootStrapper();
  59.         virtual void                                     ReloadBootStrapper();
  60.  
  61.         virtual void                                     Update(float fDeltaTime);
  62.         virtual void                                     Render();
  63.         virtual void                                     RenderLockless();
  64.  
  65.         virtual void                                     RequestHide();
  66.         virtual bool                                     IsHiding() const { return m_bIsHideRequest; }
  67.  
  68.         virtual void                                     SetVisible(bool bVisible);
  69.         virtual inline bool                              IsVisible() const { return m_bVisible; }
  70.  
  71.         virtual void                                     SetFlag(EFlashUIFlags flag, bool bSet);
  72.         virtual bool                                     HasFlag(EFlashUIFlags flag) const;
  73.  
  74.         virtual float                                    GetAlpha() const { return m_fAlpha; }
  75.         virtual void                                     SetAlpha(float fAlpha);
  76.  
  77.         virtual int                                      GetLayer() const { return m_iLayer; }
  78.         virtual void                                     SetLayer(int iLayer);
  79.  
  80.         virtual void                                     SetConstraints(const SUIConstraints& newConstraints);
  81.         virtual inline const IUIElement::SUIConstraints& GetConstraints() const { return m_constraints; }
  82.  
  83.         virtual void                                     ForceLazyUpdate()      { ForceLazyUpdateInl(); }
  84.         virtual void                                     LazyRendered()         { m_bNeedLazyRender = false; }
  85.         virtual bool                                     NeedLazyRender() const { return (m_iFlags & (uint64) eFUI_LAZY_UPDATE) == 0 || m_bNeedLazyRender; }
  86.  
  87.         virtual IFlashPlayer*                            GetFlashPlayer();
  88.  
  89.         virtual const SUIParameterDesc*                  GetVariableDesc(int index) const                          { return index < m_variables.size() ? m_variables[index] : NULL; }
  90.         virtual const SUIParameterDesc*                  GetVariableDesc(const char* sVarName) const               { return m_variables(sVarName); }
  91.         virtual int                                      GetVariableCount() const                                  { return m_variables.size(); }
  92.  
  93.         virtual const SUIParameterDesc*                  GetArrayDesc(int index) const                             { return index < m_arrays.size() ? m_arrays[index] : NULL; }
  94.         virtual const SUIParameterDesc*                  GetArrayDesc(const char* sArrayName) const                { return m_arrays(sArrayName); }
  95.         virtual int                                      GetArrayCount() const                                     { return m_arrays.size(); }
  96.  
  97.         virtual const SUIMovieClipDesc*                  GetMovieClipDesc(int index) const                         { return index < m_displayObjects.size() ? m_displayObjects[index] : NULL; }
  98.         virtual const SUIMovieClipDesc*                  GetMovieClipDesc(const char* sMovieClipName) const        { return m_displayObjects(sMovieClipName); }
  99.         virtual int                                      GetMovieClipCount() const                                 { return m_displayObjects.size(); }
  100.  
  101.         virtual const SUIMovieClipDesc*                  GetMovieClipTmplDesc(int index) const                     { return index < m_displayObjectsTmpl.size() ? m_displayObjectsTmpl[index] : NULL; }
  102.         virtual const SUIMovieClipDesc*                  GetMovieClipTmplDesc(const char* movieClipTmplName) const { return m_displayObjectsTmpl(movieClipTmplName); }
  103.         virtual int                                      GetMovieClipTmplCount() const                             { return m_displayObjectsTmpl.size(); }
  104.  
  105.         virtual const SUIEventDesc*                      GetEventDesc(int index) const                             { return index < m_events.size() ? m_events[index] : NULL; }
  106.         virtual const SUIEventDesc*                      GetEventDesc(const char* sEventName) const                { return m_events(sEventName); }
  107.         virtual int                                      GetEventCount() const                                     { return m_events.size(); }
  108.  
  109.         virtual const SUIEventDesc*                      GetFunctionDesc(int index) const                          { return index < m_functions.size() ? m_functions[index] : NULL; }
  110.         virtual const SUIEventDesc*                      GetFunctionDesc(const char* sFunctionName) const          { return m_functions(sFunctionName); }
  111.         virtual int                                      GetFunctionCount() const                                  { return m_functions.size(); }
  112.  
  113.         virtual void                                     UpdateViewPort();
  114.         virtual void                                     GetViewPort(int& x, int& y, int& width, int& height, float& aspectRatio);
  115.  
  116.         virtual bool                                     Serialize(XmlNodeRef& xmlNode, bool bIsLoading);
  117.  
  118.         virtual void                                     AddEventListener(IUIElementEventListener* pListener, const char* name);
  119.         virtual void                                     RemoveEventListener(IUIElementEventListener* pListener);
  120.  
  121.         virtual bool                                     CallFunction(const char* fctName, const SUIArguments& args = SUIArguments(), TUIData* pDataRes = NULL, const char* pTmplName = NULL);
  122.         virtual bool                                     CallFunction(const SUIEventDesc* pFctDesc, const SUIArguments& args = SUIArguments(), TUIData* pDataRes = NULL, const SUIMovieClipDesc* pTmplDesc = NULL);
  123.  
  124.         virtual IFlashVariableObject*                    GetMovieClip(const char* movieClipName, const char* pTmplName = NULL);
  125.         virtual IFlashVariableObject*                    GetMovieClip(const SUIMovieClipDesc* pMovieClipDesc, const SUIMovieClipDesc* pTmplDesc = NULL);
  126.         virtual IFlashVariableObject*                    CreateMovieClip(const SUIMovieClipDesc*& pNewInstanceDesc, const char* movieClipTemplate, const char* mcParentName = NULL, const char* mcInstanceName = NULL);
  127.         virtual IFlashVariableObject*                    CreateMovieClip(const SUIMovieClipDesc*& pNewInstanceDesc, const SUIMovieClipDesc* pMovieClipTemplateDesc, const SUIMovieClipDesc* pParentMC = NULL, const char* mcInstanceName = NULL);
  128.         virtual void                                     RemoveMovieClip(const char* movieClipName);
  129.         virtual void                                     RemoveMovieClip(const SUIParameterDesc* pMovieClipDesc);
  130.         virtual void                                     RemoveMovieClip(IFlashVariableObject* pVarObject);
  131.  
  132.         virtual bool                                     SetVariable(const char* varName, const TUIData& value, const char* pTmplName = NULL);
  133.         virtual bool                                     SetVariable(const SUIParameterDesc* pVarDesc, const TUIData& value, const SUIMovieClipDesc* pTmplDesc = NULL);
  134.         virtual bool                                     GetVariable(const char* varName, TUIData& valueOut, const char* pTmplName = NULL);
  135.         virtual bool                                     GetVariable(const SUIParameterDesc* pVarDesc, TUIData& valueOut, const SUIMovieClipDesc* pTmplDesc = NULL);
  136.         virtual bool                                     CreateVariable(const SUIParameterDesc*& pNewDesc, const char* varName, const TUIData& value, const char* pTmplName = NULL);
  137.         virtual bool                                     CreateVariable(const SUIParameterDesc*& pNewDesc, const char* varName, const TUIData& value, const SUIMovieClipDesc* pTmplDesc = NULL);
  138.  
  139.         virtual bool                                     SetArray(const char* arrayName, const SUIArguments& values, const char* pTmplName = NULL);
  140.         virtual bool                                     SetArray(const SUIParameterDesc* pArrayDesc, const SUIArguments& values, const SUIMovieClipDesc* pTmplDesc = NULL);
  141.         virtual bool                                     GetArray(const char* arrayName, SUIArguments& valuesOut, const char* pTmplName = NULL);
  142.         virtual bool                                     GetArray(const SUIParameterDesc* pArrayDesc, SUIArguments& valuesOut, const SUIMovieClipDesc* pTmplDesc = NULL);
  143.         virtual bool                                     CreateArray(const SUIParameterDesc*& pNewDesc, const char* arrayName, const SUIArguments& values, const char* pTmplName = NULL);
  144.         virtual bool                                     CreateArray(const SUIParameterDesc*& pNewDesc, const char* arrayName, const SUIArguments& values, const SUIMovieClipDesc* pTmplDesc = NULL);
  145.  
  146.         virtual void                                     ScreenToFlash(const float& px, const float& py, float& rx, float& ry, bool bStageScaleMode = false) const;
  147.         virtual void                                     WorldToFlash(const Matrix34& camMat, const Vec3& worldpos, Vec3& flashpos, Vec2& borders, float& scale, bool bStageScaleMode = false) const;
  148.  
  149.         virtual void                                     LoadTexIntoMc(const char* movieClip, ITexture* pTexture, const char* pTmplName = NULL);
  150.         virtual void                                     LoadTexIntoMc(const SUIParameterDesc* pMovieClipDesc, ITexture* pTexture, const SUIMovieClipDesc* pTmplDesc = NULL);
  151.  
  152.         virtual void                                     UnloadTexFromMc(const char* movieClip, ITexture* pTexture, const char* pTmplName = NULL);
  153.         virtual void                                     UnloadTexFromMc(const SUIParameterDesc* pMovieClipDesc, ITexture* pTexture, const SUIMovieClipDesc* pTmplDesc = NULL);
  154.  
  155.         virtual void                                     AddTexture(IDynTextureSource* pDynTexture);
  156.         virtual void                                     RemoveTexture(IDynTextureSource* pDynTexture);
  157.         virtual int                                      GetNumExtTextures() const                    { return m_textures.GetCount(); }
  158.         virtual bool                                     GetDynTexSize(int& width, int& height) const { width = m_constraints.iWidth; height = m_constraints.iHeight; return m_constraints.eType == SUIConstraints::ePT_FixedDynTexSize; }
  159.  
  160.         virtual void                                     SendCursorEvent(SFlashCursorEvent::ECursorState evt, int iX, int iY, int iButton = 0, float fWheel = 0.f);
  161.         virtual void                                     SendKeyEvent(const SFlashKeyEvent& evt);
  162.         virtual void                                     SendCharEvent(const SFlashCharEvent& charEvent);
  163.         virtual void                                     SendControllerEvent(EControllerInputEvent event, EControllerInputState state, float value);
  164.         virtual void                                     GetMemoryUsage(ICrySizer* s) const;
  165.  
  166.         // IFSCommandHandler
  167.         void HandleFSCommand(const char* pCommand, const char* pArgs, void* pUserData = 0);
  168.         // ~IFSCommandHandler
  169.  
  170.         // IVirtualKeyboardEvents
  171.         virtual void KeyboardCancelled();
  172.         virtual void KeyboardFinished(const char* pInString);
  173.         // ~IVirtualKeyboardEvents
  174.  
  175.         void SetValid(bool bValid) { if (m_pBaseInstance) { m_pBaseInstance->SetValid(bValid); return; } if (!bValid) DestroyBootStrapper(); m_bIsValid = bValid; }
  176.  
  177. private:
  178.         IFlashPlayerBootStrapper* InitBootStrapper();
  179.         void                      DestroyBootStrapper();
  180.  
  181.         const SUIParameterDesc*   GetOrCreateVariableDesc(const char* pVarName, bool* bExist = NULL);
  182.         const SUIParameterDesc*   GetOrCreateArrayDesc(const char* pArrayName, bool* bExist = NULL);
  183.         const SUIMovieClipDesc*   GetOrCreateMovieClipDesc(const char* pMovieClipName, bool* bExist = NULL);
  184.         const SUIMovieClipDesc*   GetOrCreateMovieClipTmplDesc(const char* pMovieClipTmplName);
  185.         const SUIEventDesc*       GetOrCreateFunctionDesc(const char* pFunctionName);
  186.  
  187.         bool                      SetVariableInt(const SUIParameterDesc* pVarDesc, const TUIData& value, const SUIMovieClipDesc* pTmplDesc, bool bCreate = false);
  188.  
  189.         inline void               SetFlagInt(EFlashUIFlags flag, bool bSet);
  190.  
  191.         inline bool               HasExtTexture() const { return !m_textures.IsEmpty(); }
  192.         void                      UpdateFlags();
  193.         bool                      HandleInternalCommand(const char* pCommand, const SUIArguments& args);
  194.  
  195.         struct SFlashObjectInfo
  196.         {
  197.                 IFlashVariableObject* pObj;
  198.                 IFlashVariableObject* pParent;
  199.                 string                sMember;
  200.         };
  201.  
  202.         bool              DefaultInfoCheck(SFlashObjectInfo*& pInfo, const SUIParameterDesc* pDesc, const SUIMovieClipDesc* pTmplDesc);
  203.  
  204.         SFlashObjectInfo* GetFlashVarObj(const SUIParameterDesc* pDesc, const SUIMovieClipDesc* pTmplDesc = NULL);
  205.         void              RemoveFlashVarObj(const SUIParameterDesc* pDesc);
  206.         void              FreeVarObjects();
  207.  
  208.         typedef std::vector<IUIElement*>           TUIElements;
  209.         typedef std::set<IUIElementEventListener*> TUIEventListenerUnique;
  210.         inline TUIElements::iterator GetAllListeners(TUIEventListenerUnique& listeners, uint instanceID = 0);
  211.  
  212.         inline bool                  LazyInit();
  213.         inline void                  ShowCursor();
  214.         inline void                  HideCursor();
  215.  
  216.         inline const char*           GetStringBuffer(const char* str);
  217.         inline Vec3                  MatMulVec3(const Matrix44& m, const Vec3& v) const;
  218.  
  219.         inline void                  ForceLazyUpdateInl() { m_bNeedLazyUpdate = true; m_bNeedLazyRender = false; }
  220.  
  221.         const SUIParameterDesc*      GetDescForInfo(SFlashObjectInfo* pInfo, const SUIParameterDesc** pParent = NULL) const;
  222. private:
  223.         volatile int              m_refCount;
  224.         CFlashUI*                 m_pFlashUI;
  225.         string                    m_sName;
  226.         string                    m_sGroupName;
  227.         string                    m_sFlashFile;
  228.         float                     m_fAlpha;
  229.         int                       m_iLayer;
  230.         bool                      m_bIsValid;
  231.         bool                      m_bIsHideRequest;
  232.         bool                      m_bUnloadRequest;
  233.         bool                      m_bUnloadAll;
  234.  
  235.         IFlashPlayer*             m_pFlashplayer;
  236.         IFlashPlayerBootStrapper* m_pBootStrapper;
  237.         const SUIMovieClipDesc*   m_pRoot;
  238.  
  239.         bool                      m_bVisible;
  240.         uint64                    m_iFlags;
  241.         bool                      m_bCursorVisible;
  242.         bool                      m_bNeedLazyUpdate;
  243.         bool                      m_bNeedLazyRender;
  244.         SUIConstraints            m_constraints;
  245.         XmlNodeRef                m_baseInfo;
  246.         typedef std::set<string> TStringBuffer;
  247.         TStringBuffer             m_StringBufferSet;
  248.  
  249.         CFlashUIElement*          m_pBaseInstance;
  250.         uint                      m_iInstanceID;
  251.         TUIElements               m_instances;
  252.  
  253.         TUIParamsLookup           m_variables;
  254.         TUIParamsLookup           m_arrays;
  255.         TUIMovieClipLookup        m_displayObjects;
  256.         TUIMovieClipLookup        m_displayObjectsTmpl;
  257.         TUIEventsLookup           m_events;
  258.         TUIEventsLookup           m_functions;
  259.         int                       m_firstDynamicDisplObjIndex;
  260.  
  261.         typedef CListenerSet<IUIElementEventListener*> TUIEventListener;
  262.         TUIEventListener m_eventListener;
  263.  
  264.         typedef std::map<CCryName, SFlashObjectInfo>                 TVarMap;
  265.         typedef std::map<const SUIParameterDesc*, SFlashObjectInfo*> TVarMapLookup;
  266.         typedef std::map<const SUIParameterDesc*, TVarMapLookup>     TTmplMapLookup;
  267.         TVarMap        m_variableObjects;
  268.         TTmplMapLookup m_variableObjectsLookup;
  269.  
  270.         template<class T>
  271.         struct SThreadSafeVec
  272.         {
  273.                 typedef std::vector<T> TVec;
  274.  
  275.                 TVec GetCopy() const
  276.                 {
  277.                         CryAutoCriticalSection lock(m_lock);
  278.                         return m_vec;
  279.                 }
  280.  
  281.                 bool PushBackUnique(const T& v)
  282.                 {
  283.                         CryAutoCriticalSection lock(m_lock);
  284.                         return stl::push_back_unique(m_vec, v);
  285.                 }
  286.  
  287.                 bool FindAndErase(const T& v)
  288.                 {
  289.                         CryAutoCriticalSection lock(m_lock);
  290.                         return stl::find_and_erase(m_vec, v);
  291.                 }
  292.  
  293.                 size_t GetCount() const
  294.                 {
  295.                         CryAutoCriticalSection lock(m_lock);
  296.                         return m_vec.size();
  297.                 }
  298.  
  299.                 bool IsEmpty() const
  300.                 {
  301.                         CryAutoCriticalSection lock(m_lock);
  302.                         return m_vec.empty();
  303.                 }
  304.  
  305.         private:
  306.                 TVec                       m_vec;
  307.                 mutable CryCriticalSection m_lock;
  308.         };
  309.  
  310.         typedef SThreadSafeVec<IDynTextureSource*> TDynTextures;
  311.         TDynTextures m_textures;
  312.  
  313.         friend struct SUIElementSerializer;
  314.         friend struct CUIElementIterator;
  315.  
  316. #if !defined (_RELEASE)
  317.         friend void RenderDebugInfo();
  318.         typedef std::vector<CFlashUIElement*> TElementInstanceList;
  319.         static TElementInstanceList s_ElementDebugList;
  320. #endif
  321. };
  322.  
  323. struct CUIElementIterator : public IUIElementIterator
  324. {
  325.         CUIElementIterator(const CFlashUIElement* pElement);
  326.         virtual void        AddRef();
  327.         virtual void        Release();
  328.         virtual IUIElement* Next();
  329.         virtual int         GetCount() const { return m_pElement->m_instances.size(); }
  330.  
  331. private:
  332.         int                                          m_iRefs;
  333.         const CFlashUIElement*                       m_pElement;
  334.         CFlashUIElement::TUIElements::const_iterator m_currIter;
  335. };
  336.  
  337. #endif // #ifndef __FlashUIElement_H__
  338.  
downloadFlashUIElement.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