Radiant:
binds... * m2x2 in camera: entities creation menu
This commit is contained in:
parent
c92c662abb
commit
4dcf76ef34
|
|
@ -751,6 +751,8 @@ CameraView& getCameraView(){
|
||||||
return m_cameraview;
|
return m_cameraview;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
guint32 m_rightClickTime;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Cam_Draw();
|
void Cam_Draw();
|
||||||
};
|
};
|
||||||
|
|
@ -825,9 +827,40 @@ void Camera_setAngles( CamWnd& camwnd, const Vector3& angles ){
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
// CamWnd class
|
// CamWnd class
|
||||||
|
|
||||||
|
void context_menu(){
|
||||||
|
if( g_pParentWnd->ActiveXY() ){
|
||||||
|
g_pParentWnd->ActiveXY()->OnContextMenu();
|
||||||
|
g_bCamEntityMenu = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GDK_2BUTTON_PRESS doesn't always work in this case, so... */
|
||||||
|
bool context_menu_try( GdkEventButton* event, CamWnd* camwnd ){
|
||||||
|
if( ( event->time - camwnd->m_rightClickTime ) < 200 ){
|
||||||
|
camwnd->m_rightClickTime = event->time;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
camwnd->m_rightClickTime = event->time;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gboolean enable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){
|
gboolean enable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){
|
||||||
if ( event->type == GDK_BUTTON_PRESS && event->button == 3 && modifiers_for_state( event->state ) == c_modifierNone ) {
|
if ( event->type == GDK_BUTTON_PRESS && event->button == 3 && modifiers_for_state( event->state ) == c_modifierNone ) {
|
||||||
camwnd->EnableFreeMove();
|
if( context_menu_try( event, camwnd ) ){
|
||||||
|
//need this hack, otherwise button wont be released = global accels broken, until correct button pressed again...
|
||||||
|
GdkEvent* event_ = gtk_get_current_event();
|
||||||
|
if( event_ ){
|
||||||
|
event_->type = GDK_BUTTON_RELEASE;
|
||||||
|
gtk_main_do_event( event_ );
|
||||||
|
gdk_event_free( event_ );
|
||||||
|
context_menu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
camwnd->EnableFreeMove();
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
@ -836,6 +869,16 @@ gboolean enable_freelook_button_press( GtkWidget* widget, GdkEventButton* event,
|
||||||
gboolean disable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){
|
gboolean disable_freelook_button_press( GtkWidget* widget, GdkEventButton* event, CamWnd* camwnd ){
|
||||||
if ( event->type == GDK_BUTTON_PRESS && event->button == 3 && modifiers_for_state( event->state ) == c_modifierNone ) {
|
if ( event->type == GDK_BUTTON_PRESS && event->button == 3 && modifiers_for_state( event->state ) == c_modifierNone ) {
|
||||||
camwnd->DisableFreeMove();
|
camwnd->DisableFreeMove();
|
||||||
|
if( context_menu_try( event, camwnd ) ){
|
||||||
|
//need this hack, otherwise button wont be released = global accels broken, until correct button pressed again...
|
||||||
|
GdkEvent* event_ = gtk_get_current_event();
|
||||||
|
if( event_ ){
|
||||||
|
event_->type = GDK_BUTTON_RELEASE;
|
||||||
|
gtk_main_do_event( event_ );
|
||||||
|
gdk_event_free( event_ );
|
||||||
|
context_menu();
|
||||||
|
}
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
@ -1247,7 +1290,8 @@ CamWnd::CamWnd() :
|
||||||
m_selection_button_release_handler( 0 ),
|
m_selection_button_release_handler( 0 ),
|
||||||
m_selection_motion_handler( 0 ),
|
m_selection_motion_handler( 0 ),
|
||||||
m_freelook_button_press_handler( 0 ),
|
m_freelook_button_press_handler( 0 ),
|
||||||
m_drawing( false ){
|
m_drawing( false ),
|
||||||
|
m_rightClickTime( 0 ){
|
||||||
m_bFreeMove = false;
|
m_bFreeMove = false;
|
||||||
|
|
||||||
GlobalWindowObservers_add( m_window_observer );
|
GlobalWindowObservers_add( m_window_observer );
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,8 @@ void LoadTextureRGBA( qtexture_t* q, unsigned char* pPixels, int nWidth, int nHe
|
||||||
// d1223m
|
// d1223m
|
||||||
extern bool g_brush_always_caulk;
|
extern bool g_brush_always_caulk;
|
||||||
|
|
||||||
|
bool g_bCamEntityMenu = false;
|
||||||
|
|
||||||
//!\todo Rewrite.
|
//!\todo Rewrite.
|
||||||
class ClipPoint
|
class ClipPoint
|
||||||
{
|
{
|
||||||
|
|
@ -1190,7 +1192,25 @@ void entitycreate_activated( GtkWidget* item ){
|
||||||
const char* entity_name = gtk_label_get_text( GTK_LABEL( GTK_BIN( item )->child ) );
|
const char* entity_name = gtk_label_get_text( GTK_LABEL( GTK_BIN( item )->child ) );
|
||||||
|
|
||||||
if ( !( world_node && string_equal( entity_name, "worldspawn" ) ) ) {
|
if ( !( world_node && string_equal( entity_name, "worldspawn" ) ) ) {
|
||||||
g_pParentWnd->ActiveXY()->OnEntityCreate( entity_name );
|
if( g_bCamEntityMenu ){
|
||||||
|
StringOutputStream command;
|
||||||
|
command << "entityCreate -class " << entity_name;
|
||||||
|
UndoableCommand undo( command.c_str() );
|
||||||
|
|
||||||
|
Vector3 angles( Camera_getAngles( *g_pParentWnd->GetCamWnd() ) );
|
||||||
|
Vector3 radangles( degrees_to_radians( angles[0] ), degrees_to_radians( angles[1] ), degrees_to_radians( angles[2] ) );
|
||||||
|
Vector3 viewvector;
|
||||||
|
viewvector[0] = cos( radangles[1] ) * cos( radangles[0] );
|
||||||
|
viewvector[1] = sin( radangles[1] ) * cos( radangles[0] );
|
||||||
|
viewvector[2] = sin( radangles[0] );
|
||||||
|
|
||||||
|
Vector3 point = viewvector * 64.f + Camera_getOrigin( *g_pParentWnd->GetCamWnd() );
|
||||||
|
vector3_snap( point, GetSnapGridSize() );
|
||||||
|
Entity_createFromSelection( entity_name, point );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
g_pParentWnd->ActiveXY()->OnEntityCreate( entity_name );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GlobalRadiant().m_pfnMessageBox( GTK_WIDGET( MainFrame_getWindow() ), "There's already a worldspawn in your map!"
|
GlobalRadiant().m_pfnMessageBox( GTK_WIDGET( MainFrame_getWindow() ), "There's already a worldspawn in your map!"
|
||||||
|
|
@ -1285,6 +1305,7 @@ void XYWnd::OnContextMenu(){
|
||||||
GlobalEntityClassManager().forEach( inserter );
|
GlobalEntityClassManager().forEach( inserter );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_bCamEntityMenu = false;
|
||||||
gtk_menu_popup( m_mnuDrop, 0, 0, 0, 0, 1, GDK_CURRENT_TIME );
|
gtk_menu_popup( m_mnuDrop, 0, 0, 0, 0, 1, GDK_CURRENT_TIME );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,8 @@
|
||||||
|
|
||||||
#include "qerplugin.h"
|
#include "qerplugin.h"
|
||||||
|
|
||||||
|
extern bool g_bCamEntityMenu;
|
||||||
|
|
||||||
class Shader;
|
class Shader;
|
||||||
class SelectionSystemWindowObserver;
|
class SelectionSystemWindowObserver;
|
||||||
namespace scene
|
namespace scene
|
||||||
|
|
@ -205,13 +207,13 @@ VIEWTYPE m_viewType;
|
||||||
void OriginalButtonUp( guint32 nFlags, int point, int pointy );
|
void OriginalButtonUp( guint32 nFlags, int point, int pointy );
|
||||||
void OriginalButtonDown( guint32 nFlags, int point, int pointy );
|
void OriginalButtonDown( guint32 nFlags, int point, int pointy );
|
||||||
|
|
||||||
void OnContextMenu();
|
|
||||||
void PaintSizeInfo( int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vMaxBounds );
|
void PaintSizeInfo( int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vMaxBounds );
|
||||||
|
|
||||||
int m_entityCreate_x, m_entityCreate_y;
|
int m_entityCreate_x, m_entityCreate_y;
|
||||||
bool m_entityCreate;
|
bool m_entityCreate;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
void OnContextMenu();
|
||||||
void ButtonState_onMouseDown( unsigned int buttons ){
|
void ButtonState_onMouseDown( unsigned int buttons ){
|
||||||
//m_buttonstate |= buttons;
|
//m_buttonstate |= buttons;
|
||||||
m_buttonstate = buttons;
|
m_buttonstate = buttons;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user