]> git.rm.cloudns.org Git - xonotic/netradiant.git/commitdiff
Q3map2:
authorGarux <garux@mail.ru>
Tue, 1 Aug 2017 10:36:40 +0000 (13:36 +0300)
committerGarux <garux@mail.ru>
Tue, 1 Aug 2017 10:36:40 +0000 (13:36 +0300)
* content of brush is determined now not by 1st side in brush definition (inconsistency!)
but on priority: liquid > fog > playerclip > nonsolid > solid
ex.: nodraw solid shader works now for hiding liquid or fog volume splits / unwanted faces
solid or nonsolid shader + face(s) of playerclip = playerclip
solid shader + face(s) of nonsolid = nonsolid (b4 could happen: 5nonsolid sides + 1solid = solid brush )

Radiant:

binds...
* make structural - alt+s
* shift+n - cycle patch tex projection
* ctrl+f - fit texture
* bind a, d in no mlook mode - CameraStrafeLeft/Right

menus...
* smartified content basically
* hidden killconnect for games, which are not nexuiz
* view-orthographic+: center 2d on selected (ctrl+shift+tab)
* removed parent from menu, regroup does work + isn't bugged
* edit+: SelectAllOfType (shift+a)
* view->show+: ToggleCrosshair, show size info, show grid
* view menu: +patch inspector
* curve->texture+: flip patch tex ( {ctrl}shift+i ), naturalize, cycle projection
* cleaned, updated help menu links,+: Mouse Shortcuts, recent offline&fixed Shader Manual,
netRadiant specific docs, lists of q3map2 switches/entity keys/shader directives
misc...
* removed note to save before going to preferences, project settings
* fog is automatically transparent
* Doom3LightRadius: failed to parse default light radius - spammy msg removed
* 1.5x bigger light ents (8->12u)
* longer list of recently opened (4->9)
* crosshair display: is saving in prefs
* defaulted Maya theme
* removed question to override current compile monitoring

17 files changed:
plugins/entity/light.cpp
plugins/shaders/shaders.cpp
radiant/brushmanip.cpp
radiant/camwindow.cpp
radiant/entity.cpp
radiant/gtkdlgs.cpp
radiant/mainframe.cpp
radiant/mru.cpp
radiant/patchmanip.cpp
radiant/preferences.cpp
radiant/surfacedialog.cpp
radiant/watchbsp.cpp
radiant/xywindow.cpp
radiant/xywindow.h
setup/data/tools/global.xlink
tools/quake3/q3map2/game_quake3.h
tools/quake3/q3map2/map.c

index dbde66c14193bd5d5933885922ff0125ff8323dc..2d0bf78ef9063e80db255adb24202b3a54bb25fc 100644 (file)
@@ -531,10 +531,12 @@ Callback m_changed;
 bool m_useCenterKey;
 
 Doom3LightRadius( const char* defaultRadius ) : m_defaultRadius( 300, 300, 300 ), m_center( 0, 0, 0 ), m_useCenterKey( false ){
-       if ( !string_parse_vector3( defaultRadius, m_defaultRadius ) ) {
+       if ( g_lightType == LIGHTTYPE_DOOM3 ){
+               if ( !string_parse_vector3( defaultRadius, m_defaultRadius ) ) {
                globalErrorStream() << "Doom3LightRadius: failed to parse default light radius\n";
-       }
+               }
        m_radius = m_defaultRadius;
+       }
 }
 
 void lightRadiusChanged( const char* value ){
@@ -655,7 +657,7 @@ void render( RenderStateFlags state ) const {
 };
 
 inline void default_extents( Vector3& extents ){
-       extents = Vector3( 8, 8, 8 );
+       extents = Vector3( 12, 12, 12 );
 }
 
 class ShaderRef
index 54df7abc499c4658c464d4f068bf9e2d4a49051a..7a16594eb0a36142705815a26a1ec098a3f8793e 100644 (file)
@@ -1255,6 +1255,7 @@ bool ShaderTemplate::parseQuake3( Tokeniser& tokeniser ){
 
                                if ( string_equal_nocase( surfaceparm, "fog" ) ) {
                                        m_nFlags |= QER_FOG;
+                                       m_nFlags |= QER_TRANS;
                                        if ( m_fTrans == 1.0f ) { // has not been explicitly set by qer_trans
                                                m_fTrans = 0.35f;
                                        }
index 8e45973c981298b0c47776afba3209eacf41e845..acb83822e72333d6fd7ce970c0efa1aad91f27f0 100644 (file)
@@ -1418,7 +1418,7 @@ void Brush_registerCommands(){
        GlobalCommands_insert( "FlipClip", FreeCaller<FlipClipper>(), Accelerator( GDK_Return, (GdkModifierType)GDK_CONTROL_MASK ) );
 
        GlobalCommands_insert( "MakeDetail", FreeCaller<Select_MakeDetail>(), Accelerator( 'D', (GdkModifierType)GDK_MOD1_MASK ) );
-       GlobalCommands_insert( "MakeStructural", FreeCaller<Select_MakeStructural>(), Accelerator( 'S', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
+       GlobalCommands_insert( "MakeStructural", FreeCaller<Select_MakeStructural>(), Accelerator( 'S', (GdkModifierType)GDK_MOD1_MASK ) );
 }
 
 void Brush_constructMenu( GtkMenu* menu ){
index 3d0c6a51880b8e886eeeb1e673a470ec695298cb..4d9ea736c7e37f28198ee982d2c31295f96efbd6 100644 (file)
@@ -1897,8 +1897,8 @@ void CamWnd_Construct(){
        GlobalShortcuts_insert( "CameraBack", Accelerator( GDK_Down ) );
        GlobalShortcuts_insert( "CameraLeft", Accelerator( GDK_Left ) );
        GlobalShortcuts_insert( "CameraRight", Accelerator( GDK_Right ) );
-       GlobalShortcuts_insert( "CameraStrafeRight", Accelerator( GDK_period ) );
-       GlobalShortcuts_insert( "CameraStrafeLeft", Accelerator( GDK_comma ) );
+       GlobalShortcuts_insert( "CameraStrafeRight", Accelerator( 'D' ) );
+       GlobalShortcuts_insert( "CameraStrafeLeft", Accelerator( 'A' ) );
 
        GlobalShortcuts_insert( "CameraUp", accelerator_null() );
        GlobalShortcuts_insert( "CameraDown", accelerator_null() );
index ab3243b0a8f8ea3465ebfe85a8cde0c31e6ea9ab..0704f50a9c49bdc59455f373c64cdc6b0e395954 100644 (file)
@@ -571,7 +571,9 @@ void Entity_constructMenu( GtkMenu* menu ){
        create_menu_item_with_mnemonic( menu, "_Regroup", "GroupSelection" );
        create_menu_item_with_mnemonic( menu, "_Ungroup", "UngroupSelection" );
        create_menu_item_with_mnemonic( menu, "_Connect", "ConnectSelection" );
-       create_menu_item_with_mnemonic( menu, "_KillConnect", "KillConnectSelection" );
+       if ( g_pGameDescription->mGameType == "nexuiz" ) {
+               create_menu_item_with_mnemonic( menu, "_KillConnect", "KillConnectSelection" );
+       }
        create_menu_item_with_mnemonic( menu, "_Select Color...", "EntityColor" );
        create_menu_item_with_mnemonic( menu, "_Normalize Color...", "NormalizeColor" );
 }
index 34fc54c7a80e1a4ecd9884a4d699a22986a32f3c..7bdea67d7ada63463151199f5e8426723e50769b 100644 (file)
@@ -362,7 +362,7 @@ void ProjectSettingsDialog_ok( ProjectSettingsDialog& dialog ){
 }
 
 void DoProjectSettings(){
-       if ( ConfirmModified( "Edit Project Settings" ) ) {
+       //if ( ConfirmModified( "Edit Project Settings" ) ) {
                ModalDialog modal;
                ProjectSettingsDialog dialog;
 
@@ -373,7 +373,7 @@ void DoProjectSettings(){
                }
 
                gtk_widget_destroy( GTK_WIDGET( window ) );
-       }
+       //}
 }
 
 // =============================================================================
@@ -478,10 +478,7 @@ void DoAbout(){
                                                                                                                        RADIANT_ABOUTMSG "\n\n"
                                                                                                                                                         "By alientrap.org\n\n"
                                                                                                                                                         "This program is free software\n"
-                                                                                                                                                        "licensed under the GNU GPL.\n\n"
-                                                                                                                                                        "NetRadiant is unsupported, however\n"
-                                                                                                                                                        "you may report your problems at\n"
-                                                                                                                                                        "http://www.icculus.org/netradiant/"
+                                                                                                                                                        "licensed under the GNU GPL.\n"
                                                                                                                        ) );
 
                                gtk_widget_show( GTK_WIDGET( label ) );
@@ -677,13 +674,13 @@ EMessageBoxReturn DoTextureLayout( float *fx, float *fy ){
                        }
                }
        }
-       
+
        // Initialize with last used values
        char buf[16];
-       
+
        sprintf( buf, "%f", last_used_texture_layout_scale_x );
        gtk_entry_set_text( x, buf );
-       
+
        sprintf( buf, "%f", last_used_texture_layout_scale_y );
        gtk_entry_set_text( y, buf );
 
@@ -694,7 +691,7 @@ EMessageBoxReturn DoTextureLayout( float *fx, float *fy ){
        if ( ret == eIDOK ) {
                *fx = static_cast<float>( atof( gtk_entry_get_text( x ) ) );
                *fy = static_cast<float>( atof( gtk_entry_get_text( y ) ) );
-       
+
                // Remember last used values
                last_used_texture_layout_scale_x = *fx;
                last_used_texture_layout_scale_y = *fy;
index 26e337a44057d1bcb74c7851dbc0fb8fd0555d63..538780545457e1481089b28fb07b9c9e4946b781 100644 (file)
@@ -1822,16 +1822,16 @@ GtkMenuItem* create_file_menu(){
        create_menu_item_with_mnemonic( menu, "Save s_elected...", "SaveSelected" );
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "Save re_gion...", "SaveRegion" );
-       menu_separator( menu );
-       create_menu_item_with_mnemonic( menu, "_Refresh models", "RefreshReferences" );
-       menu_separator( menu );
+//     menu_separator( menu );
+//     create_menu_item_with_mnemonic( menu, "_Refresh models", "RefreshReferences" );
+//     menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "Pro_ject settings...", "ProjectSettings" );
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "_Pointfile...", "TogglePointfile" );
        menu_separator( menu );
        MRU_constructMenu( menu );
        menu_separator( menu );
-       create_menu_item_with_mnemonic( menu, "Check for NetRadiant update (web)", "CheckForUpdate" ); // FIXME
+//     create_menu_item_with_mnemonic( menu, "Check for NetRadiant update (web)", "CheckForUpdate" ); // FIXME
        create_menu_item_with_mnemonic( menu, "E_xit", "Exit" );
 
        return file_menu_item;
@@ -1855,18 +1855,22 @@ GtkMenuItem* create_edit_menu(){
        create_menu_item_with_mnemonic( menu, "Duplicate, make uni_que", "CloneSelectionAndMakeUnique" );
        create_menu_item_with_mnemonic( menu, "D_elete", "DeleteSelection" );
        menu_separator( menu );
-       create_menu_item_with_mnemonic( menu, "Pa_rent", "ParentSelection" );
+       create_menu_item_with_mnemonic( menu, "Snap To Grid", "SnapToGrid" );
+       //create_menu_item_with_mnemonic( menu, "Pa_rent", "ParentSelection" );
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "C_lear Selection", "UnSelectSelection" );
        create_menu_item_with_mnemonic( menu, "_Invert Selection", "InvertSelection" );
        create_menu_item_with_mnemonic( menu, "Select i_nside", "SelectInside" );
        create_menu_item_with_mnemonic( menu, "Select _touching", "SelectTouching" );
 
-       GtkMenu* convert_menu = create_sub_menu_with_mnemonic( menu, "E_xpand Selection" );
-       if ( g_Layout_enableDetachableMenus.m_value ) {
-               menu_tearoff( convert_menu );
-       }
-       create_menu_item_with_mnemonic( convert_menu, "To Whole _Entities", "ExpandSelectionToEntities" );
+       menu_separator( menu );
+
+//     GtkMenu* convert_menu = create_sub_menu_with_mnemonic( menu, "E_xpand Selection" );
+//     if ( g_Layout_enableDetachableMenus.m_value ) {
+//             menu_tearoff( convert_menu );
+//     }
+       create_menu_item_with_mnemonic( menu, "Select All Of Type", "SelectAllOfType" );
+       create_menu_item_with_mnemonic( menu, "_Expand Selection To Entities", "ExpandSelectionToEntities" );
 
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "Pre_ferences...", "Preferences" );
@@ -1918,6 +1922,7 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
                create_menu_item_with_mnemonic( menu, "Entity Inspector", "ViewEntityInfo" );
        }
        create_menu_item_with_mnemonic( menu, "_Surface Inspector", "SurfaceInspector" );
+       create_menu_item_with_mnemonic( menu, "_Patch Inspector", "PatchInspector" );
        create_menu_item_with_mnemonic( menu, "Entity List", "EntityList" );
 
        menu_separator( menu );
@@ -1953,6 +1958,8 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
                        menu_separator( orthographic_menu );
                }
 
+               create_menu_item_with_mnemonic( orthographic_menu, "Center on Selected", "CenterXYView" );
+               menu_separator( orthographic_menu );
                create_menu_item_with_mnemonic( orthographic_menu, "_XY 100%", "Zoom100" );
                create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _In", "ZoomIn" );
                create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _Out", "ZoomOut" );
@@ -1965,6 +1972,12 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
                if ( g_Layout_enableDetachableMenus.m_value ) {
                        menu_tearoff( menu_in_menu );
                }
+               create_menu_item_with_mnemonic( menu_in_menu, "Show Size Info", "ToggleSizePaint" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Show Crosshair", "ToggleCrosshairs" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Show Grid", "ToggleGrid" );
+
+               menu_separator( menu_in_menu );
+
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show _Angles", "ShowAngles" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show _Names", "ShowNames" );
                create_check_menu_item_with_mnemonic( menu_in_menu, "Show Blocks", "ShowBlocks" );
@@ -1984,12 +1997,14 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
        }
        menu_separator( menu );
        {
-               GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Hide/Show" );
-               if ( g_Layout_enableDetachableMenus.m_value ) {
-                       menu_tearoff( menu_in_menu );
-               }
-               create_menu_item_with_mnemonic( menu_in_menu, "Hide Selected", "HideSelected" );
-               create_menu_item_with_mnemonic( menu_in_menu, "Show Hidden", "ShowHidden" );
+//             GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Hide/Show" );
+//             if ( g_Layout_enableDetachableMenus.m_value ) {
+//                     menu_tearoff( menu_in_menu );
+//             }
+//             create_menu_item_with_mnemonic( menu_in_menu, "Hide Selected", "HideSelected" );
+//             create_menu_item_with_mnemonic( menu_in_menu, "Show Hidden", "ShowHidden" );
+               create_menu_item_with_mnemonic( menu, "Hide Selected", "HideSelected" );
+               create_menu_item_with_mnemonic( menu, "Show Hidden", "ShowHidden" );
        }
        menu_separator( menu );
        {
@@ -2164,13 +2179,13 @@ GtkMenuItem* create_help_menu(){
                menu_tearoff( menu );
        }
 
-       create_menu_item_with_mnemonic( menu, "Manual", "OpenManual" );
+//     create_menu_item_with_mnemonic( menu, "Manual", "OpenManual" );
 
        // this creates all the per-game drop downs for the game pack helps
        // it will take care of hooking the Sys_OpenURL calls etc.
        create_game_help_menu( menu );
 
-       create_menu_item_with_mnemonic( menu, "Bug report", FreeCaller<OpenBugReportURL>() );
+//     create_menu_item_with_mnemonic( menu, "Bug report", FreeCaller<OpenBugReportURL>() );
        create_menu_item_with_mnemonic( menu, "Shortcuts list", FreeCaller<DoCommandListDlg>() );
        create_menu_item_with_mnemonic( menu, "_About", FreeCaller<DoAbout>() );
 
index cb833010f3bc74fa0f0886269e423673ccf979d6..24efcf0411093c7ed710677e36954ff77ddb67c9 100644 (file)
 #include "map.h"
 #include "qe3.h"
 
-#define MRU_MAX 4
+#define MRU_MAX 9
 namespace {
 GtkMenuItem *MRU_items[MRU_MAX];
 std::size_t MRU_used;
 typedef CopiedString MRU_filename_t;
 MRU_filename_t MRU_filenames[MRU_MAX];
 typedef const char* MRU_key_t;
-MRU_key_t MRU_keys[MRU_MAX] = { "File0", "File1", "File2", "File3" };
+MRU_key_t MRU_keys[MRU_MAX] = { "File0", "File1", "File2", "File3", "File4", "File5", "File6", "File7", "File8" };
 }
 
 inline const char* MRU_GetText( std::size_t index ){
@@ -190,6 +190,11 @@ LoadMRU g_load_mru1( 1 );
 LoadMRU g_load_mru2( 2 );
 LoadMRU g_load_mru3( 3 );
 LoadMRU g_load_mru4( 4 );
+LoadMRU g_load_mru5( 5 );
+LoadMRU g_load_mru6( 6 );
+LoadMRU g_load_mru7( 7 );
+LoadMRU g_load_mru8( 8 );
+LoadMRU g_load_mru9( 9 );
 
 void MRU_constructMenu( GtkMenu* menu ){
        {
@@ -212,6 +217,31 @@ void MRU_constructMenu( GtkMenu* menu ){
                gtk_widget_hide( GTK_WIDGET( item ) );
                MRU_AddWidget( item, 3 );
        }
+               {
+               GtkMenuItem* item = create_menu_item_with_mnemonic( menu, "_5", LoadMRUCaller( g_load_mru5 ) );
+               gtk_widget_hide( GTK_WIDGET( item ) );
+               MRU_AddWidget( item, 4 );
+       }
+       {
+               GtkMenuItem* item = create_menu_item_with_mnemonic( menu, "_6", LoadMRUCaller( g_load_mru6 ) );
+               gtk_widget_hide( GTK_WIDGET( item ) );
+               MRU_AddWidget( item, 5 );
+       }
+       {
+               GtkMenuItem* item = create_menu_item_with_mnemonic( menu, "_7", LoadMRUCaller( g_load_mru7 ) );
+               gtk_widget_hide( GTK_WIDGET( item ) );
+               MRU_AddWidget( item, 6 );
+       }
+               {
+               GtkMenuItem* item = create_menu_item_with_mnemonic( menu, "_8", LoadMRUCaller( g_load_mru8 ) );
+               gtk_widget_hide( GTK_WIDGET( item ) );
+               MRU_AddWidget( item, 7 );
+       }
+       {
+               GtkMenuItem* item = create_menu_item_with_mnemonic( menu, "_9", LoadMRUCaller( g_load_mru9 ) );
+               gtk_widget_hide( GTK_WIDGET( item ) );
+               MRU_AddWidget( item, 8 );
+       }
 }
 
 #include "preferencesystem.h"
index d5471e98313b49a89f9735313759c9446043f411..fbb89e056592a79b1a1252674828fbd8c4639ea9 100644 (file)
@@ -695,7 +695,7 @@ void Patch_registerCommands(){
        GlobalCommands_insert( "SmoothCols", FreeCaller<Patch_SmoothCols>(), Accelerator( 'W', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
        GlobalCommands_insert( "MatrixTranspose", FreeCaller<Patch_Transpose>(), Accelerator( 'M', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
        GlobalCommands_insert( "CapCurrentCurve", FreeCaller<Patch_Cap>(), Accelerator( 'C', (GdkModifierType)GDK_SHIFT_MASK ) );
-       GlobalCommands_insert( "CycleCapTexturePatch", FreeCaller<Patch_CycleProjection>(), Accelerator( 'N', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
+       GlobalCommands_insert( "CycleCapTexturePatch", FreeCaller<Patch_CycleProjection>(), Accelerator( 'N', (GdkModifierType)GDK_SHIFT_MASK ) );
        GlobalCommands_insert( "MakeOverlayPatch", FreeCaller<Patch_OverlayOn>(), Accelerator( 'Y' ) );
        GlobalCommands_insert( "ClearPatchOverlays", FreeCaller<Patch_OverlayOff>(), Accelerator( 'L', (GdkModifierType)GDK_CONTROL_MASK ) );
 }
@@ -720,12 +720,12 @@ void Patch_constructMenu( GtkMenu* menu ){
        create_menu_item_with_mnemonic( menu, "End cap", "PatchEndCap" );
        create_menu_item_with_mnemonic( menu, "Bevel", "PatchBevel" );
        {
-               GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "More End caps, Bevels" );
-               if ( g_Layout_enableDetachableMenus.m_value ) {
-                       menu_tearoff( menu_in_menu );
-               }
-               create_menu_item_with_mnemonic( menu_in_menu, "Square Endcap", "PatchSquareBevel" );
-               create_menu_item_with_mnemonic( menu_in_menu, "Square Bevel", "PatchSquareEndcap" );
+//             GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "More End caps, Bevels" );
+//             if ( g_Layout_enableDetachableMenus.m_value ) {
+//                     menu_tearoff( menu_in_menu );
+//             }
+               create_menu_item_with_mnemonic( menu, "Square Endcap", "PatchSquareBevel" );
+               create_menu_item_with_mnemonic( menu, "Square Bevel", "PatchSquareEndcap" );
        }
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "Cone", "PatchCone" );
@@ -765,23 +765,36 @@ void Patch_constructMenu( GtkMenu* menu ){
                        menu_tearoff( menu_in_menu );
                }
                create_menu_item_with_mnemonic( menu_in_menu, "Invert", "InvertCurve" );
-               GtkMenu* menu_3 = create_sub_menu_with_mnemonic( menu_in_menu, "Re-disperse" );
-               if ( g_Layout_enableDetachableMenus.m_value ) {
-                       menu_tearoff( menu_3 );
-               }
-               create_menu_item_with_mnemonic( menu_3, "Rows", "RedisperseRows" );
-               create_menu_item_with_mnemonic( menu_3, "Columns", "RedisperseCols" );
-               GtkMenu* menu_4 = create_sub_menu_with_mnemonic( menu_in_menu, "Smooth" );
-               if ( g_Layout_enableDetachableMenus.m_value ) {
-                       menu_tearoff( menu_4 );
-               }
-               create_menu_item_with_mnemonic( menu_4, "Rows", "SmoothRows" );
-               create_menu_item_with_mnemonic( menu_4, "Columns", "SmoothCols" );
                create_menu_item_with_mnemonic( menu_in_menu, "Transpose", "MatrixTranspose" );
+//             GtkMenu* menu_3 = create_sub_menu_with_mnemonic( menu_in_menu, "Re-disperse" );
+//             if ( g_Layout_enableDetachableMenus.m_value ) {
+//                     menu_tearoff( menu_3 );
+//             }
+               menu_separator( menu_in_menu );
+               create_menu_item_with_mnemonic( menu_in_menu, "Re-disperse Rows", "RedisperseRows" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Re-disperse Columns", "RedisperseCols" );
+//             GtkMenu* menu_4 = create_sub_menu_with_mnemonic( menu_in_menu, "Smooth" );
+//             if ( g_Layout_enableDetachableMenus.m_value ) {
+//                     menu_tearoff( menu_4 );
+//             }
+               menu_separator( menu_in_menu );
+               create_menu_item_with_mnemonic( menu_in_menu, "Smooth Rows", "SmoothRows" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Smooth Columns", "SmoothCols" );
        }
        menu_separator( menu );
        create_menu_item_with_mnemonic( menu, "Cap Selection", "CapCurrentCurve" );
-       create_menu_item_with_mnemonic( menu, "Cycle Cap Texture", "CycleCapTexturePatch" );
+       menu_separator( menu );
+       {
+               GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Texture" );
+               if ( g_Layout_enableDetachableMenus.m_value ) {
+                       menu_tearoff( menu_in_menu );
+               }
+               create_menu_item_with_mnemonic( menu_in_menu, "Cycle Projection", "CycleCapTexturePatch" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Naturalize", "NaturalizePatch" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Invert X", "InvertCurveTextureX" );
+               create_menu_item_with_mnemonic( menu_in_menu, "Invert Y", "InvertCurveTextureY" );
+
+       }
        menu_separator( menu );
        {
                GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Overlay" );
index 4209fdb35d6c5196fc1cae7e0c1909b2663d414b..c4584e81d293d39d975ce2ff0f2964ca0fef6fd7 100644 (file)
@@ -932,7 +932,8 @@ void PreferencesDialog_restartRequired( const char* staticName ){
 }
 
 void PreferencesDialog_showDialog(){
-       if ( ConfirmModified( "Edit Preferences" ) && g_Preferences.DoModal() == eIDOK ) {
+       //if ( ConfirmModified( "Edit Preferences" ) && g_Preferences.DoModal() == eIDOK ) {
+       if ( g_Preferences.DoModal() == eIDOK ) {
                if ( !g_restart_required.empty() ) {
                        StringOutputStream message( 256 );
                        message << "Preference changes require a restart:\n";
index 3d64f4115fab1d3249d732658a3f9b99021172f6..e48f9b0233a8b420817a80da428fcd8acb41ed5d 100644 (file)
@@ -1505,7 +1505,7 @@ void SurfaceInspector_registerPreferencesPage(){
 }
 
 void SurfaceInspector_registerCommands(){
-       GlobalCommands_insert( "FitTexture", FreeCaller<SurfaceInspector_FitTexture>(), Accelerator( 'B', (GdkModifierType)GDK_SHIFT_MASK ) );
+       GlobalCommands_insert( "FitTexture", FreeCaller<SurfaceInspector_FitTexture>(), Accelerator( 'F', (GdkModifierType)GDK_CONTROL_MASK ) );
        GlobalCommands_insert( "SurfaceInspector", FreeCaller<SurfaceInspector_toggleShown>(), Accelerator( 'S' ) );
 
        GlobalCommands_insert( "FaceCopyTexture", FreeCaller<SelectedFaces_copyTexture>() );
index f3d1ae6f77438bf431f3acaead01255488a17192..a598ff51c3a17205f676bd60209fed5a0ca1d87e 100644 (file)
@@ -772,11 +772,11 @@ void CWatchBSP::DoMonitoringLoop( GPtrArray *pCmd, const char *sBSPName ){
        if ( m_eState != EIdle ) {
                globalOutputStream() << "WatchBSP got a monitoring request while not idling...\n";
                // prompt the user, should we cancel the current process and go ahead?
-               if ( gtk_MessageBox( GTK_WIDGET( MainFrame_getWindow() ),  "I am already monitoring a Build process.\nDo you want me to override and start a new compilation?",
-                                                        "Build process monitoring", eMB_YESNO ) == eIDYES ) {
+//             if ( gtk_MessageBox( GTK_WIDGET( MainFrame_getWindow() ),  "I am already monitoring a Build process.\nDo you want me to override and start a new compilation?",
+//                                                      "Build process monitoring", eMB_YESNO ) == eIDYES ) {
                        // disconnect and set EIdle state
                        Reset();
-               }
+//             }
        }
        m_pCmd = str_ptr_array_clone( pCmd );
        m_iCurrentStep = 0;
index b094b7744d5f034f57216469357dc65d59068734..471a5572a6d65d91e4c5022a4a445599a2a7df7f 100644 (file)
@@ -2758,6 +2758,7 @@ void XYWindow_Construct(){
        GlobalPreferenceSystem().registerPreference( "NewRightClick", BoolImportStringCaller( g_xywindow_globals.m_bRightClick ), BoolExportStringCaller( g_xywindow_globals.m_bRightClick ) );
        GlobalPreferenceSystem().registerPreference( "ChaseMouse", BoolImportStringCaller( g_xywindow_globals_private.m_bChaseMouse ), BoolExportStringCaller( g_xywindow_globals_private.m_bChaseMouse ) );
        GlobalPreferenceSystem().registerPreference( "SizePainting", BoolImportStringCaller( g_xywindow_globals_private.m_bSizePaint ), BoolExportStringCaller( g_xywindow_globals_private.m_bSizePaint ) );
+       GlobalPreferenceSystem().registerPreference( "ShowCrosshair", BoolImportStringCaller( g_bCrossHairs ), BoolExportStringCaller( g_bCrossHairs ) );
        GlobalPreferenceSystem().registerPreference( "NoStipple", BoolImportStringCaller( g_xywindow_globals.m_bNoStipple ), BoolExportStringCaller( g_xywindow_globals.m_bNoStipple ) );
        GlobalPreferenceSystem().registerPreference( "SI_ShowCoords", BoolImportStringCaller( g_xywindow_globals_private.show_coordinates ), BoolExportStringCaller( g_xywindow_globals_private.show_coordinates ) );
        GlobalPreferenceSystem().registerPreference( "SI_ShowOutlines", BoolImportStringCaller( g_xywindow_globals_private.show_outline ), BoolExportStringCaller( g_xywindow_globals_private.show_outline ) );
index cbf37b430f1a0bdfb496f79faa279f8582e928a4..114f339486af1dce1c75c6f075fb4b58cfd08f54 100644 (file)
@@ -255,10 +255,10 @@ struct xywindow_globals_t
        bool m_bNoStipple;
 
        xywindow_globals_t() :
-               color_gridback( 1.f, 1.f, 1.f ),
-               color_gridminor( 0.75f, 0.75f, 0.75f ),
-               color_gridmajor( 0.5f, 0.5f, 0.5f ),
-               color_gridblock( 0.f, 0.f, 1.f ),
+               color_gridback( 0.77f, 0.77f, 0.77f ),
+               color_gridminor( 0.83f, 0.83f, 0.83f ),
+               color_gridmajor( 0.89f, 0.89f, 0.89f ),
+               color_gridblock( 1.0f, 1.0f, 1.0f ),
                color_gridtext( 0.f, 0.f, 0.f ),
                color_brushes( 0.f, 0.f, 0.f ),
                color_selbrushes( 1.f, 0.f, 0.f ),
index 3ca47f1ab3d6058dccbcd811cb4a8eeb24bef1c5..86b2945f4785e151046be388833848e912d3f63a 100644 (file)
@@ -1,7 +1,16 @@
 <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
 <!-- generated by Radiant setup, modify at your own risks -->
 <links>
-<item name="NetRadiant website" url="http://www.icculus.org/netradiant/"/>
-<item name="q3map2 handbook (web)" url="http://shaderlab.com/q3map2/manual/default.htm"/>
-<item name="ETB documentation (web)" url="http://www.map-craft.com/modules.php?name=ETB"/>
+<!--item name="NetRadiant website" url="http://www.icculus.org/netradiant/"/-->
+<item name="q3map2 handbook (web)" url="http://en.wikibooks.org/wiki/Category:Q3Map2"/>
+<item name="Shader Manual (web)" url="http://robotrenegade.com/q3map2/docs/shader_manual/contents.html"/>
+<item name="Shader Manual (offline+fixed)" url="docs/shaderManual/contents.html"/>
+<item name="Mouse Shortcuts" url="docs/Mouse Shortcuts.txt"/>
+<item name="Additional map compiler features" url="docs/Additional_map_compiler_features.htm"/>
+<item name="Additional map editor features" url="docs/Additional_map_editor_features.htm"/>
+<item name="Complete list of command line parameters" url="docs/Complete_list_of_command_line_parameters.htm"/>
+<item name="Complete list of entity keys" url="docs/Complete_list_of_entity_keys.htm"/>
+<item name="Complete list of shader keywords" url="docs/Complete_list_of_shader_keywords.htm"/>
+<item name="Q3Map2 - FS20 - R5 readme" url="docs/fsr_readme.txt"/>
+<!--item name="ETB documentation (web)" url="http://www.map-craft.com/modules.php?name=ETB"/-->
 </links>
index d40695560caaec69f73045823e1e33d4e7d8ebc5..3526a781c1020e8d831b313785ef535839ae4339 100644 (file)
@@ -68,7 +68,7 @@
 #define Q_CONT_NODROP               0x80000000  /* don't leave bodies or items (death fog, lava) */
 
 #define Q_SURF_NODAMAGE             0x1         /* never give falling damage */
-#define Q_SURF_SLICK                0x2         /* effects game physics */
+#define Q_SURF_SLICK                0x2         /* effects game physics: zero friction on this */
 #define Q_SURF_SKY                  0x4         /* lighting from environment map */
 #define Q_SURF_LADDER               0x8
 #define Q_SURF_NOIMPACT             0x10        /* don't make missile explosions */
                { "nodlight",       0,                          0,                          Q_SURF_NODLIGHT,            0,                          0,                          0 },
                { "dust",           0,                          0,                          Q_SURF_DUST,                0,                          0,                          0 },
                { "noob",           0,                          0,                          Q_SURF_NOOB,                0,                          0,                          0 },
-               { "ob",     0,                          0,                          0,                          0,                          C_OB,               0 },
+               { "ob",             0,                          0,                          0,                          0,                          C_OB,                       0 },
 
 
                /* null */
index 8f56f9af89cfeb482e6a35657e94ed6d97cbbd01..9c219d5cf488a6c7b222efcf47157e190a4d9e68 100644 (file)
@@ -528,7 +528,8 @@ void SetBrushContents( brush_t *b ){
        //%     mixed = qfalse;
 
        /* get the content/compile flags for every side in the brush */
-       for ( i = 1; i < b->numsides; i++, s++ )
+       //for ( i = 1; i < b->numsides; i++, s++ )
+       for ( i = 1; i < b->numsides; i++ )
        {
                s = &b->sides[ i ];
                if ( s->shaderInfo == NULL ) {
@@ -539,6 +540,33 @@ void SetBrushContents( brush_t *b ){
 
                contentFlags |= s->contentFlags;
                compileFlags |= s->compileFlags;
+
+               /* resolve inconsistency, when brush content was determined by 1st face */
+               if ( b->contentShader->compileFlags & C_LIQUID ){
+                       continue;
+               }
+               else if ( s->compileFlags & C_LIQUID ){
+                       b->contentShader = s->shaderInfo;
+               }
+               else if ( b->contentShader->compileFlags & C_FOG ){
+                       continue;
+               }
+               else if ( s->compileFlags & C_FOG ){
+                       b->contentShader = s->shaderInfo;
+               }
+               //playerclip
+               else if ( b->contentShader->contentFlags & 0x10000 ){
+                       continue;
+               }
+               else if ( s->contentFlags & 0x10000 ){
+                       b->contentShader = s->shaderInfo;
+               }
+               else if (!( b->contentShader->compileFlags & C_SOLID )){
+                       continue;
+               }
+               else if (!( s->compileFlags & C_SOLID )){
+                       b->contentShader = s->shaderInfo;
+               }
        }
 
        /* ydnar: getting rid of this stupid warning */