2017-11-23 14:43:15 +01:00
|
|
|
#pragma once
|
2017-11-24 07:26:02 +01:00
|
|
|
#include "ui-mousectrl.hh"
|
|
|
|
|
2017-11-23 14:43:15 +01:00
|
|
|
|
|
|
|
/*= UI UTILITIES =============================================================*/
|
|
|
|
|
|
|
|
namespace ImGui {
|
|
|
|
|
|
|
|
// Disable next ImGui controls
|
|
|
|
void PushDisabled( ) noexcept;
|
|
|
|
// Re-enable ImGui buttons
|
|
|
|
void PopDisabled( ) noexcept;
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
// Display a menu item with a checkbox
|
|
|
|
bool MenuItemCheckbox(
|
|
|
|
char const* name ,
|
|
|
|
bool* checked ) noexcept;
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
// Display a separator for the toolbar
|
|
|
|
void ToolbarSeparator( ) noexcept;
|
|
|
|
|
|
|
|
// Display a toolbar button
|
|
|
|
bool ToolbarButton(
|
|
|
|
char const* const string ,
|
|
|
|
ImVec2 const& size ,
|
|
|
|
char const* const tooltip = nullptr ,
|
|
|
|
bool enabled = true ) noexcept;
|
|
|
|
|
|
|
|
} // namespace ImGui
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
#define GL_CHECK( FAIL ) \
|
|
|
|
do { \
|
|
|
|
auto err_( glGetError( ) ); \
|
|
|
|
if ( err_ != GL_NO_ERROR ) FAIL; \
|
|
|
|
} while ( 0 )
|
|
|
|
|
|
|
|
#define GL_ASSERT( ) \
|
|
|
|
GL_CHECK({ \
|
|
|
|
fprintf( stderr , "GL error %x in %s:%d\n" , \
|
|
|
|
err_ , __FILE__ , __LINE__ ); \
|
|
|
|
abort( ); \
|
|
|
|
})
|
2017-11-24 07:26:02 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*= CAMERA ===================================================================*/
|
|
|
|
|
|
|
|
struct T_Camera;
|
|
|
|
|
|
|
|
struct T_CameraMouseControl : public A_MouseCtrl
|
|
|
|
{
|
|
|
|
T_Camera& camera;
|
|
|
|
|
|
|
|
explicit T_CameraMouseControl( T_Camera& cam ) : camera( cam ) {}
|
|
|
|
|
|
|
|
void handleDragAndDrop(
|
|
|
|
ImVec2 const& move ,
|
|
|
|
T_KeyboardModifiers modifiers ,
|
|
|
|
T_MouseButtons buttons ) noexcept override;
|
|
|
|
void handleWheel(
|
|
|
|
float wheel ,
|
|
|
|
T_KeyboardModifiers modifiers ,
|
|
|
|
T_MouseButtons buttons ) noexcept override;
|
|
|
|
};
|
|
|
|
|
|
|
|
enum class E_CameraChange {
|
|
|
|
FOV ,
|
|
|
|
MATRIX
|
|
|
|
};
|
|
|
|
using T_CameraChanges = T_Flags< E_CameraChange >;
|
|
|
|
|
|
|
|
T_CameraChanges CameraUI( T_Camera& camera ) noexcept;
|