Katana Plug-in APIs 0.1

ExampleSpotlightLocator.h

00001 // Copyright (c) 2018 The Foundry Visionmongers Ltd. All Rights Reserved.
00002 
00003 #ifndef _EXAMPLESPOTLIGHTLOCATOR_H_
00004 #define _EXAMPLESPOTLIGHTLOCATOR_H_
00005 
00006 #include <string>
00007 #include <vector>
00008 
00009 #include <FnViewer/utils/FnBaseLocator.h>
00010 
00020 class ExampleSpotlightLocatorVDC : public FnKat::ViewerUtils::FnBaseLocatorVDC
00021 {
00022 public:
00023     virtual ~ExampleSpotlightLocatorVDC() {}
00024 
00025     static void flush() {}
00026 
00027     static FnKat::ViewerAPI::ViewerDelegateComponent* create()
00028     {
00029         return new ExampleSpotlightLocatorVDC();
00030     }
00031 
00033     bool locationEvent(
00034         const Foundry::Katana::ViewerAPI::ViewerLocationEvent& event,
00035         bool locationHandled) override;
00036 
00038     void setOption(
00039         FnKat::ViewerAPI::OptionIdGenerator::value_type optionId,
00040         FnAttribute::Attribute attr) override;
00041 
00042 private:
00043     ExampleSpotlightLocatorVDC();
00044 
00045     bool m_overrideStandardLocators;
00046 };
00047 
00054 class ExampleSpotlightLocatorViewportLayer :
00055     public FnKat::ViewerUtils::FnBaseLocatorViewportLayer
00056 {
00057 public:
00058     virtual ~ExampleSpotlightLocatorViewportLayer() {}
00059 
00060     static FnKat::ViewerAPI::ViewportLayer* create()
00061     {
00062         return new ExampleSpotlightLocatorViewportLayer();
00063     }
00064 
00066     virtual void draw() override;
00067 
00069     virtual void setOption(
00070         FnKat::ViewerAPI::OptionIdGenerator::value_type optionId,
00071         FnAttribute::Attribute attr) override;
00072 
00073 private:
00074     ExampleSpotlightLocatorViewportLayer();
00075 
00076     bool m_enlargedLocators;
00077 };
00078 
00079 
00082 class ExampleSpotlightLocator : public FnKat::ViewerUtils::FnBaseLocator
00083 {
00084 public:
00085     ExampleSpotlightLocator() : m_vao(0), m_ebo(0), m_vbo(0) {}
00086     virtual ~ExampleSpotlightLocator() {}
00087 
00088     static FnKat::ViewerUtils::FnBaseLocator* create()
00089     {
00090         return new ExampleSpotlightLocator();
00091     }
00092 
00095     static bool matches(const FnKat::ViewerAPI::ViewerLocationEvent& event);
00096 
00099     static bool overridesBaseGeometry(
00100         const FnKat::ViewerAPI::ViewerLocationEvent& event);
00101 
00103     static FnAttribute::DoubleAttribute getBounds(
00104         const FnKat::ViewerAPI::ViewerLocationEvent& event);
00105 
00107     static FnAttribute::DoubleAttribute computeExtent(
00108         const FnKat::ViewerAPI::ViewerLocationEvent& event);
00109 
00111     virtual void setup();
00113     virtual void cleanup();
00114 
00117     virtual void draw(const std::string& locationPath);
00118 
00122     virtual void pickerDraw(
00123         const std::string& locationPath);
00124 
00126     void generateCone(float radius,
00127                       float height,
00128                       int segments,
00129                       std::vector<float>& vertices,
00130                       std::vector<unsigned int>& indices);
00131 
00132 private:
00134     void drawLight(const std::string& locationPath);
00135 
00136     GLuint m_vao;
00137 
00139     GLuint m_ebo;
00140 
00142     GLuint m_vbo;
00143 
00144     std::vector<float> m_vertices;
00145     std::vector<unsigned int> m_indices;
00146 };
00147 
00148 #endif
 All Classes Functions Variables Typedefs Enumerations Enumerator