Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. #pragma once
  2.  
  3.  
  4. #include "NumenPrerequisites.h"
  5.  
  6. #include "NumenCompositor.h"
  7. #include "NumenVrSystemListener.h"
  8.  
  9.  
  10. namespace Numen
  11. {
  12.     class NUMEN_EXPORT CompositorVr :
  13.         public Compositor,
  14.         public VrSystemListener,
  15.         public Ogre::CompositorWorkspaceListener
  16.     {
  17.  
  18.     public:
  19.  
  20.                                                             CompositorVr(const std::string& name, Level* level);
  21.         virtual                                             ~CompositorVr();
  22.  
  23.         void                                                attachRig(Ogre::SceneNode* node);
  24.         void                                                changeSkybox(const Ogre::ColourValue& color, const std::string& materialName);
  25.         void                                                configureRendering();
  26.         void                                                configureWorkspace(unsigned int visibilityMask);
  27.         void                                                detachRig();
  28.         Ogre::Camera*                                       rigCamera(bool eyeLeft) const;
  29.         Ogre::SceneNode*                                    rigNode() const;
  30.         NodeBehaviourFreeCameraVr*                          rigNodeBehaviour() const;
  31.         Ogre::TexturePtr                                    texture() const;
  32.  
  33.         virtual void                                        connect(LevelStatus status) override;
  34.  
  35.         virtual void                                        onHmdIpdChange(float ipd) override;
  36.         virtual void                                        onVrSystemQuit() override;
  37.  
  38.         virtual void                                        workspacePreUpdate(Ogre::CompositorWorkspace* workspace) override;
  39.  
  40.     private:
  41.  
  42.         using Cameras = std::array<Ogre::Camera*, 2>;
  43.         using NodeDefinitions = std::array<Ogre::CompositorNodeDef*, 2>;
  44.  
  45.         NodeDefinitions                                     m_nodeDefinitionsSceneTransparent;
  46.         NodeDefinitions                                     m_nodeDefinitionsSceneUi;
  47.         NodeDefinitions                                     m_nodeDefinitionsSkybox;
  48.         NodeDefinitions                                     m_nodeDefinitionsVrSceneOpaque;
  49.         Cameras                                             m_rigCameras;
  50.         PtrUnique<NodeBehaviourFreeCameraVr>                m_rigNodeBehaviour;
  51.         Ogre::TexturePtr                                    m_texture;
  52.         Ogre::CompositorShadowNodeDef*                      m_nodeDefinitionShadows;
  53.         Ogre::CompositorNodeDef*                            m_nodeDefinitionSkyboxBackground;
  54.         Ogre::Camera*                                       m_rigCameraCullAndShadows;
  55.         Ogre::SceneNode*                                    m_rigNode;
  56.         Ogre::CompositorWorkspace*                          m_workspace;
  57.         Ogre::CompositorWorkspaceDef*                       m_workspaceDefinition;
  58.         Ogre::CompositorWorkspaceDef*                       m_workspaceDefinitionVr;
  59.         Ogre::CompositorWorkspace*                          m_workspaceVr;
  60.  
  61.     };
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement