Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "NumenPrerequisites.h"
- #include "NumenCompositor.h"
- #include "NumenVrSystemListener.h"
- namespace Numen
- {
- class NUMEN_EXPORT CompositorVr :
- public Compositor,
- public VrSystemListener,
- public Ogre::CompositorWorkspaceListener
- {
- public:
- CompositorVr(const std::string& name, Level* level);
- virtual ~CompositorVr();
- void attachRig(Ogre::SceneNode* node);
- void changeSkybox(const Ogre::ColourValue& color, const std::string& materialName);
- void configureRendering();
- void configureWorkspace(unsigned int visibilityMask);
- void detachRig();
- Ogre::Camera* rigCamera(bool eyeLeft) const;
- Ogre::SceneNode* rigNode() const;
- NodeBehaviourFreeCameraVr* rigNodeBehaviour() const;
- Ogre::TexturePtr texture() const;
- virtual void connect(LevelStatus status) override;
- virtual void onHmdIpdChange(float ipd) override;
- virtual void onVrSystemQuit() override;
- virtual void workspacePreUpdate(Ogre::CompositorWorkspace* workspace) override;
- private:
- using Cameras = std::array<Ogre::Camera*, 2>;
- using NodeDefinitions = std::array<Ogre::CompositorNodeDef*, 2>;
- NodeDefinitions m_nodeDefinitionsSceneTransparent;
- NodeDefinitions m_nodeDefinitionsSceneUi;
- NodeDefinitions m_nodeDefinitionsSkybox;
- NodeDefinitions m_nodeDefinitionsVrSceneOpaque;
- Cameras m_rigCameras;
- PtrUnique<NodeBehaviourFreeCameraVr> m_rigNodeBehaviour;
- Ogre::TexturePtr m_texture;
- Ogre::CompositorShadowNodeDef* m_nodeDefinitionShadows;
- Ogre::CompositorNodeDef* m_nodeDefinitionSkyboxBackground;
- Ogre::Camera* m_rigCameraCullAndShadows;
- Ogre::SceneNode* m_rigNode;
- Ogre::CompositorWorkspace* m_workspace;
- Ogre::CompositorWorkspaceDef* m_workspaceDefinition;
- Ogre::CompositorWorkspaceDef* m_workspaceDefinitionVr;
- Ogre::CompositorWorkspace* m_workspaceVr;
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement