#ifndef FLUTTER_PLUGIN_POLYVOX_FILAMENT_PLUGIN_H_ #define FLUTTER_PLUGIN_POLYVOX_FILAMENT_PLUGIN_H_ #include #include #include #include #include "GL/GL.h" #include "GL/GLu.h" #include "PolyvoxFilamentApi.h" namespace polyvox_filament { class PolyvoxFilamentPlugin : public flutter::Plugin { public: static void RegisterWithRegistrar(flutter::PluginRegistrarWindows *registrar); PolyvoxFilamentPlugin(flutter::TextureRegistrar *textureRegistrar, flutter::PluginRegistrarWindows *registrar); virtual ~PolyvoxFilamentPlugin(); // Disallow copy and assign. PolyvoxFilamentPlugin(const PolyvoxFilamentPlugin &) = delete; PolyvoxFilamentPlugin &operator=(const PolyvoxFilamentPlugin &) = delete; // Called when a method is called on this plugin's channel from Dart. void HandleMethodCall( const flutter::MethodCall &method_call, std::unique_ptr> result); flutter::PluginRegistrarWindows *_pluginRegistrar; flutter::TextureRegistrar *_textureRegistrar; std::unique_ptr _texture = nullptr; std::unique_ptr _pixelBuffer = nullptr; std::unique_ptr _pixelData = nullptr; std::chrono::milliseconds _frameInterval; bool _rendering = false; int64_t _flutterTextureId; GLuint _glTextureId = 0; HGLRC _context = NULL; void *_viewer = nullptr; std::map _resources; void CreateFilamentViewer( const flutter::MethodCall &methodCall, std::unique_ptr> result); void CreateTexture( const flutter::MethodCall &methodCall, std::unique_ptr> result); void Render( const flutter::MethodCall &methodCall, std::unique_ptr> result); void SetRendering( const flutter::MethodCall &methodCall, std::unique_ptr> result); void SetBackgroundImage( const flutter::MethodCall &methodCall, std::unique_ptr> result); void SetBackgroundColor( const flutter::MethodCall &methodCall, std::unique_ptr> result); void UpdateViewportAndCameraProjection( const flutter::MethodCall &methodCall, std::unique_ptr> result); void GetAssetManager( const flutter::MethodCall &methodCall, std::unique_ptr> result); void LoadSkybox( const flutter::MethodCall &methodCall, std::unique_ptr> result); void LoadIbl( const flutter::MethodCall &methodCall, std::unique_ptr> result); void RemoveSkybox( const flutter::MethodCall &methodCall, std::unique_ptr> result); void RemoveIbl( const flutter::MethodCall &methodCall, std::unique_ptr> result); void AddLight( const flutter::MethodCall &methodCall, std::unique_ptr> result); void LoadGlb( const flutter::MethodCall &methodCall, std::unique_ptr> result); void RotateStart( const flutter::MethodCall &methodCall, std::unique_ptr> result); void RotateEnd( const flutter::MethodCall &methodCall, std::unique_ptr> result); void RotateUpdate( const flutter::MethodCall &methodCall, std::unique_ptr> result); void PanStart( const flutter::MethodCall &methodCall, std::unique_ptr> result); void PanUpdate( const flutter::MethodCall &methodCall, std::unique_ptr> result); void PanEnd( const flutter::MethodCall &methodCall, std::unique_ptr> result); void SetPosition( const flutter::MethodCall &methodCall, std::unique_ptr> result); void SetRotation( const flutter::MethodCall &methodCall, std::unique_ptr> result); void GetAnimationNames( const flutter::MethodCall &methodCall, std::unique_ptr> result); void RemoveAsset( const flutter::MethodCall &methodCall, std::unique_ptr> result); void TransformToUnitCube( const flutter::MethodCall &methodCall, std::unique_ptr> result); void GrabBegin(const flutter::MethodCall &methodCall, std::unique_ptr> result); void GrabEnd(const flutter::MethodCall &methodCall, std::unique_ptr> result); void GrabUpdate(const flutter::MethodCall &methodCall, std::unique_ptr> result); void ScrollBegin(const flutter::MethodCall &methodCall, std::unique_ptr> result); void ScrollEnd(const flutter::MethodCall &methodCall, std::unique_ptr> result); void ScrollUpdate(const flutter::MethodCall &methodCall, std::unique_ptr> result); ResourceBuffer loadResource(const char *path); void freeResource(ResourceBuffer rbuf); }; } // namespace polyvox_filament #endif // FLUTTER_PLUGIN_POLYVOX_FILAMENT_PLUGIN_H_