* 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
This commit is contained in:
Garux 2017-08-01 13:36:40 +03:00
parent a255fbd84e
commit 6e687efe88
17 changed files with 171 additions and 72 deletions

View File

@ -531,10 +531,12 @@ Callback m_changed;
bool m_useCenterKey; bool m_useCenterKey;
Doom3LightRadius( const char* defaultRadius ) : m_defaultRadius( 300, 300, 300 ), m_center( 0, 0, 0 ), m_useCenterKey( false ){ 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"; globalErrorStream() << "Doom3LightRadius: failed to parse default light radius\n";
} }
m_radius = m_defaultRadius; m_radius = m_defaultRadius;
}
} }
void lightRadiusChanged( const char* value ){ void lightRadiusChanged( const char* value ){
@ -655,7 +657,7 @@ void render( RenderStateFlags state ) const {
}; };
inline void default_extents( Vector3& extents ){ inline void default_extents( Vector3& extents ){
extents = Vector3( 8, 8, 8 ); extents = Vector3( 12, 12, 12 );
} }
class ShaderRef class ShaderRef

View File

@ -1255,6 +1255,7 @@ bool ShaderTemplate::parseQuake3( Tokeniser& tokeniser ){
if ( string_equal_nocase( surfaceparm, "fog" ) ) { if ( string_equal_nocase( surfaceparm, "fog" ) ) {
m_nFlags |= QER_FOG; m_nFlags |= QER_FOG;
m_nFlags |= QER_TRANS;
if ( m_fTrans == 1.0f ) { // has not been explicitly set by qer_trans if ( m_fTrans == 1.0f ) { // has not been explicitly set by qer_trans
m_fTrans = 0.35f; m_fTrans = 0.35f;
} }

View File

@ -1418,7 +1418,7 @@ void Brush_registerCommands(){
GlobalCommands_insert( "FlipClip", FreeCaller<FlipClipper>(), Accelerator( GDK_Return, (GdkModifierType)GDK_CONTROL_MASK ) ); 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( "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 ){ void Brush_constructMenu( GtkMenu* menu ){

View File

@ -1897,8 +1897,8 @@ void CamWnd_Construct(){
GlobalShortcuts_insert( "CameraBack", Accelerator( GDK_Down ) ); GlobalShortcuts_insert( "CameraBack", Accelerator( GDK_Down ) );
GlobalShortcuts_insert( "CameraLeft", Accelerator( GDK_Left ) ); GlobalShortcuts_insert( "CameraLeft", Accelerator( GDK_Left ) );
GlobalShortcuts_insert( "CameraRight", Accelerator( GDK_Right ) ); GlobalShortcuts_insert( "CameraRight", Accelerator( GDK_Right ) );
GlobalShortcuts_insert( "CameraStrafeRight", Accelerator( GDK_period ) ); GlobalShortcuts_insert( "CameraStrafeRight", Accelerator( 'D' ) );
GlobalShortcuts_insert( "CameraStrafeLeft", Accelerator( GDK_comma ) ); GlobalShortcuts_insert( "CameraStrafeLeft", Accelerator( 'A' ) );
GlobalShortcuts_insert( "CameraUp", accelerator_null() ); GlobalShortcuts_insert( "CameraUp", accelerator_null() );
GlobalShortcuts_insert( "CameraDown", accelerator_null() ); GlobalShortcuts_insert( "CameraDown", accelerator_null() );

View File

@ -571,7 +571,9 @@ void Entity_constructMenu( GtkMenu* menu ){
create_menu_item_with_mnemonic( menu, "_Regroup", "GroupSelection" ); create_menu_item_with_mnemonic( menu, "_Regroup", "GroupSelection" );
create_menu_item_with_mnemonic( menu, "_Ungroup", "UngroupSelection" ); create_menu_item_with_mnemonic( menu, "_Ungroup", "UngroupSelection" );
create_menu_item_with_mnemonic( menu, "_Connect", "ConnectSelection" ); 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, "_Select Color...", "EntityColor" );
create_menu_item_with_mnemonic( menu, "_Normalize Color...", "NormalizeColor" ); create_menu_item_with_mnemonic( menu, "_Normalize Color...", "NormalizeColor" );
} }

View File

@ -362,7 +362,7 @@ void ProjectSettingsDialog_ok( ProjectSettingsDialog& dialog ){
} }
void DoProjectSettings(){ void DoProjectSettings(){
if ( ConfirmModified( "Edit Project Settings" ) ) { //if ( ConfirmModified( "Edit Project Settings" ) ) {
ModalDialog modal; ModalDialog modal;
ProjectSettingsDialog dialog; ProjectSettingsDialog dialog;
@ -373,7 +373,7 @@ void DoProjectSettings(){
} }
gtk_widget_destroy( GTK_WIDGET( window ) ); gtk_widget_destroy( GTK_WIDGET( window ) );
} //}
} }
// ============================================================================= // =============================================================================
@ -478,10 +478,7 @@ void DoAbout(){
RADIANT_ABOUTMSG "\n\n" RADIANT_ABOUTMSG "\n\n"
"By alientrap.org\n\n" "By alientrap.org\n\n"
"This program is free software\n" "This program is free software\n"
"licensed under the GNU GPL.\n\n" "licensed under the GNU GPL.\n"
"NetRadiant is unsupported, however\n"
"you may report your problems at\n"
"http://www.icculus.org/netradiant/"
) ); ) );
gtk_widget_show( GTK_WIDGET( label ) ); gtk_widget_show( GTK_WIDGET( label ) );

View File

@ -1822,16 +1822,16 @@ GtkMenuItem* create_file_menu(){
create_menu_item_with_mnemonic( menu, "Save s_elected...", "SaveSelected" ); create_menu_item_with_mnemonic( menu, "Save s_elected...", "SaveSelected" );
menu_separator( menu ); menu_separator( menu );
create_menu_item_with_mnemonic( menu, "Save re_gion...", "SaveRegion" ); create_menu_item_with_mnemonic( menu, "Save re_gion...", "SaveRegion" );
menu_separator( menu ); // menu_separator( menu );
create_menu_item_with_mnemonic( menu, "_Refresh models", "RefreshReferences" ); // create_menu_item_with_mnemonic( menu, "_Refresh models", "RefreshReferences" );
menu_separator( menu ); // menu_separator( menu );
create_menu_item_with_mnemonic( menu, "Pro_ject settings...", "ProjectSettings" ); create_menu_item_with_mnemonic( menu, "Pro_ject settings...", "ProjectSettings" );
menu_separator( menu ); menu_separator( menu );
create_menu_item_with_mnemonic( menu, "_Pointfile...", "TogglePointfile" ); create_menu_item_with_mnemonic( menu, "_Pointfile...", "TogglePointfile" );
menu_separator( menu ); menu_separator( menu );
MRU_constructMenu( menu ); MRU_constructMenu( menu );
menu_separator( 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" ); create_menu_item_with_mnemonic( menu, "E_xit", "Exit" );
return file_menu_item; 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, "Duplicate, make uni_que", "CloneSelectionAndMakeUnique" );
create_menu_item_with_mnemonic( menu, "D_elete", "DeleteSelection" ); create_menu_item_with_mnemonic( menu, "D_elete", "DeleteSelection" );
menu_separator( menu ); 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 ); menu_separator( menu );
create_menu_item_with_mnemonic( menu, "C_lear Selection", "UnSelectSelection" ); 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, "_Invert Selection", "InvertSelection" );
create_menu_item_with_mnemonic( menu, "Select i_nside", "SelectInside" ); create_menu_item_with_mnemonic( menu, "Select i_nside", "SelectInside" );
create_menu_item_with_mnemonic( menu, "Select _touching", "SelectTouching" ); create_menu_item_with_mnemonic( menu, "Select _touching", "SelectTouching" );
GtkMenu* convert_menu = create_sub_menu_with_mnemonic( menu, "E_xpand Selection" ); menu_separator( menu );
if ( g_Layout_enableDetachableMenus.m_value ) {
menu_tearoff( convert_menu ); // GtkMenu* convert_menu = create_sub_menu_with_mnemonic( menu, "E_xpand Selection" );
} // if ( g_Layout_enableDetachableMenus.m_value ) {
create_menu_item_with_mnemonic( convert_menu, "To Whole _Entities", "ExpandSelectionToEntities" ); // 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 ); menu_separator( menu );
create_menu_item_with_mnemonic( menu, "Pre_ferences...", "Preferences" ); 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, "Entity Inspector", "ViewEntityInfo" );
} }
create_menu_item_with_mnemonic( menu, "_Surface Inspector", "SurfaceInspector" ); 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" ); create_menu_item_with_mnemonic( menu, "Entity List", "EntityList" );
menu_separator( menu ); menu_separator( menu );
@ -1953,6 +1958,8 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
menu_separator( orthographic_menu ); 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 100%", "Zoom100" );
create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _In", "ZoomIn" ); create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _In", "ZoomIn" );
create_menu_item_with_mnemonic( orthographic_menu, "XY Zoom _Out", "ZoomOut" ); 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 ) { if ( g_Layout_enableDetachableMenus.m_value ) {
menu_tearoff( menu_in_menu ); 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 _Angles", "ShowAngles" );
create_check_menu_item_with_mnemonic( menu_in_menu, "Show _Names", "ShowNames" ); create_check_menu_item_with_mnemonic( menu_in_menu, "Show _Names", "ShowNames" );
create_check_menu_item_with_mnemonic( menu_in_menu, "Show Blocks", "ShowBlocks" ); 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 ); menu_separator( menu );
{ {
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Hide/Show" ); // GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Hide/Show" );
if ( g_Layout_enableDetachableMenus.m_value ) { // if ( g_Layout_enableDetachableMenus.m_value ) {
menu_tearoff( menu_in_menu ); // menu_tearoff( menu_in_menu );
} // }
create_menu_item_with_mnemonic( menu_in_menu, "Hide Selected", "HideSelected" ); // 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_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 ); menu_separator( menu );
{ {
@ -2164,13 +2179,13 @@ GtkMenuItem* create_help_menu(){
menu_tearoff( 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 // this creates all the per-game drop downs for the game pack helps
// it will take care of hooking the Sys_OpenURL calls etc. // it will take care of hooking the Sys_OpenURL calls etc.
create_game_help_menu( menu ); 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, "Shortcuts list", FreeCaller<DoCommandListDlg>() );
create_menu_item_with_mnemonic( menu, "_About", FreeCaller<DoAbout>() ); create_menu_item_with_mnemonic( menu, "_About", FreeCaller<DoAbout>() );

View File

@ -34,14 +34,14 @@
#include "map.h" #include "map.h"
#include "qe3.h" #include "qe3.h"
#define MRU_MAX 4 #define MRU_MAX 9
namespace { namespace {
GtkMenuItem *MRU_items[MRU_MAX]; GtkMenuItem *MRU_items[MRU_MAX];
std::size_t MRU_used; std::size_t MRU_used;
typedef CopiedString MRU_filename_t; typedef CopiedString MRU_filename_t;
MRU_filename_t MRU_filenames[MRU_MAX]; MRU_filename_t MRU_filenames[MRU_MAX];
typedef const char* MRU_key_t; 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 ){ 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_mru2( 2 );
LoadMRU g_load_mru3( 3 ); LoadMRU g_load_mru3( 3 );
LoadMRU g_load_mru4( 4 ); 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 ){ void MRU_constructMenu( GtkMenu* menu ){
{ {
@ -212,6 +217,31 @@ void MRU_constructMenu( GtkMenu* menu ){
gtk_widget_hide( GTK_WIDGET( item ) ); gtk_widget_hide( GTK_WIDGET( item ) );
MRU_AddWidget( item, 3 ); 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" #include "preferencesystem.h"

View 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( "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( "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( "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( "MakeOverlayPatch", FreeCaller<Patch_OverlayOn>(), Accelerator( 'Y' ) );
GlobalCommands_insert( "ClearPatchOverlays", FreeCaller<Patch_OverlayOff>(), Accelerator( 'L', (GdkModifierType)GDK_CONTROL_MASK ) ); 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, "End cap", "PatchEndCap" );
create_menu_item_with_mnemonic( menu, "Bevel", "PatchBevel" ); create_menu_item_with_mnemonic( menu, "Bevel", "PatchBevel" );
{ {
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "More End caps, Bevels" ); // GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "More End caps, Bevels" );
if ( g_Layout_enableDetachableMenus.m_value ) { // if ( g_Layout_enableDetachableMenus.m_value ) {
menu_tearoff( menu_in_menu ); // menu_tearoff( menu_in_menu );
} // }
create_menu_item_with_mnemonic( menu_in_menu, "Square Endcap", "PatchSquareBevel" ); create_menu_item_with_mnemonic( menu, "Square Endcap", "PatchSquareBevel" );
create_menu_item_with_mnemonic( menu_in_menu, "Square Bevel", "PatchSquareEndcap" ); create_menu_item_with_mnemonic( menu, "Square Bevel", "PatchSquareEndcap" );
} }
menu_separator( menu ); menu_separator( menu );
create_menu_item_with_mnemonic( menu, "Cone", "PatchCone" ); create_menu_item_with_mnemonic( menu, "Cone", "PatchCone" );
@ -765,23 +765,36 @@ void Patch_constructMenu( GtkMenu* menu ){
menu_tearoff( menu_in_menu ); menu_tearoff( menu_in_menu );
} }
create_menu_item_with_mnemonic( menu_in_menu, "Invert", "InvertCurve" ); 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" ); 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 ); menu_separator( menu );
create_menu_item_with_mnemonic( menu, "Cap Selection", "CapCurrentCurve" ); 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 ); menu_separator( menu );
{ {
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Overlay" ); GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic( menu, "Overlay" );

View File

@ -932,7 +932,8 @@ void PreferencesDialog_restartRequired( const char* staticName ){
} }
void PreferencesDialog_showDialog(){ 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() ) { if ( !g_restart_required.empty() ) {
StringOutputStream message( 256 ); StringOutputStream message( 256 );
message << "Preference changes require a restart:\n"; message << "Preference changes require a restart:\n";

View File

@ -1505,7 +1505,7 @@ void SurfaceInspector_registerPreferencesPage(){
} }
void SurfaceInspector_registerCommands(){ 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( "SurfaceInspector", FreeCaller<SurfaceInspector_toggleShown>(), Accelerator( 'S' ) );
GlobalCommands_insert( "FaceCopyTexture", FreeCaller<SelectedFaces_copyTexture>() ); GlobalCommands_insert( "FaceCopyTexture", FreeCaller<SelectedFaces_copyTexture>() );

View File

@ -772,11 +772,11 @@ void CWatchBSP::DoMonitoringLoop( GPtrArray *pCmd, const char *sBSPName ){
if ( m_eState != EIdle ) { if ( m_eState != EIdle ) {
globalOutputStream() << "WatchBSP got a monitoring request while not idling...\n"; globalOutputStream() << "WatchBSP got a monitoring request while not idling...\n";
// prompt the user, should we cancel the current process and go ahead? // 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?", // 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 ) { // "Build process monitoring", eMB_YESNO ) == eIDYES ) {
// disconnect and set EIdle state // disconnect and set EIdle state
Reset(); Reset();
} // }
} }
m_pCmd = str_ptr_array_clone( pCmd ); m_pCmd = str_ptr_array_clone( pCmd );
m_iCurrentStep = 0; m_iCurrentStep = 0;

View 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( "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( "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( "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( "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_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 ) ); GlobalPreferenceSystem().registerPreference( "SI_ShowOutlines", BoolImportStringCaller( g_xywindow_globals_private.show_outline ), BoolExportStringCaller( g_xywindow_globals_private.show_outline ) );

View File

@ -255,10 +255,10 @@ struct xywindow_globals_t
bool m_bNoStipple; bool m_bNoStipple;
xywindow_globals_t() : xywindow_globals_t() :
color_gridback( 1.f, 1.f, 1.f ), color_gridback( 0.77f, 0.77f, 0.77f ),
color_gridminor( 0.75f, 0.75f, 0.75f ), color_gridminor( 0.83f, 0.83f, 0.83f ),
color_gridmajor( 0.5f, 0.5f, 0.5f ), color_gridmajor( 0.89f, 0.89f, 0.89f ),
color_gridblock( 0.f, 0.f, 1.f ), color_gridblock( 1.0f, 1.0f, 1.0f ),
color_gridtext( 0.f, 0.f, 0.f ), color_gridtext( 0.f, 0.f, 0.f ),
color_brushes( 0.f, 0.f, 0.f ), color_brushes( 0.f, 0.f, 0.f ),
color_selbrushes( 1.f, 0.f, 0.f ), color_selbrushes( 1.f, 0.f, 0.f ),

View File

@ -1,7 +1,16 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!-- generated by Radiant setup, modify at your own risks --> <!-- generated by Radiant setup, modify at your own risks -->
<links> <links>
<item name="NetRadiant website" url="http://www.icculus.org/netradiant/"/> <!--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="q3map2 handbook (web)" url="http://en.wikibooks.org/wiki/Category:Q3Map2"/>
<item name="ETB documentation (web)" url="http://www.map-craft.com/modules.php?name=ETB"/> <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> </links>

View File

@ -68,7 +68,7 @@
#define Q_CONT_NODROP 0x80000000 /* don't leave bodies or items (death fog, lava) */ #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_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_SKY 0x4 /* lighting from environment map */
#define Q_SURF_LADDER 0x8 #define Q_SURF_LADDER 0x8
#define Q_SURF_NOIMPACT 0x10 /* don't make missile explosions */ #define Q_SURF_NOIMPACT 0x10 /* don't make missile explosions */
@ -199,7 +199,7 @@
{ "nodlight", 0, 0, Q_SURF_NODLIGHT, 0, 0, 0 }, { "nodlight", 0, 0, Q_SURF_NODLIGHT, 0, 0, 0 },
{ "dust", 0, 0, Q_SURF_DUST, 0, 0, 0 }, { "dust", 0, 0, Q_SURF_DUST, 0, 0, 0 },
{ "noob", 0, 0, Q_SURF_NOOB, 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 */ /* null */

View File

@ -528,7 +528,8 @@ void SetBrushContents( brush_t *b ){
//% mixed = qfalse; //% mixed = qfalse;
/* get the content/compile flags for every side in the brush */ /* 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 ]; s = &b->sides[ i ];
if ( s->shaderInfo == NULL ) { if ( s->shaderInfo == NULL ) {
@ -539,6 +540,33 @@ void SetBrushContents( brush_t *b ){
contentFlags |= s->contentFlags; contentFlags |= s->contentFlags;
compileFlags |= s->compileFlags; 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 */ /* ydnar: getting rid of this stupid warning */