* 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
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 ){
};
inline void default_extents( Vector3& extents ){
- extents = Vector3( 8, 8, 8 );
+ extents = Vector3( 12, 12, 12 );
}
class ShaderRef
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;
}
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 ){
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() );
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" );
}
}
void DoProjectSettings(){
- if ( ConfirmModified( "Edit Project Settings" ) ) {
+ //if ( ConfirmModified( "Edit Project Settings" ) ) {
ModalDialog modal;
ProjectSettingsDialog dialog;
}
gtk_widget_destroy( GTK_WIDGET( window ) );
- }
+ //}
}
// =============================================================================
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 ) );
}
}
}
-
+
// 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 );
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;
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;
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" );
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 );
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" );
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" );
}
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 );
{
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>() );
#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 ){
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 ){
{
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"
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 ) );
}
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" );
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" );
}
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";
}
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>() );
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;
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 ) );
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 ),
<?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>
#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 */
//% 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 ) {
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 */