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;
}
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;
}
window.destroy();
- }
+ //}
}
// =============================================================================
}
}
}
-
+
// Initialize with last used values
char buf[16];
-
+
sprintf( buf, "%f", last_used_texture_layout_scale_x );
x.text( buf );
-
+
sprintf( buf, "%f", last_used_texture_layout_scale_y );
y.text( 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, "_Export selected...", "ExportSelected" );
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, "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" );
- auto 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 );
+
+// auto 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 );
{
- auto 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.
#include "map.h"
#include "qe3.h"
-const int 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" };
+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", "File4", "File5", "File6", "File7", "File8" };
}
inline const char* MRU_GetText( std::size_t index ){
public:
EscapedMnemonic() : m_buffer(){
- m_buffer.push_back( '_' );
- }
- const char* c_str() const {
- return m_buffer.c_str();
- }
- void push_back( char c ){ // not escaped
- m_buffer.push_back( c );
- }
- std::size_t write( const char* buffer, std::size_t length ){
- for ( const char* end = buffer + length; buffer != end; ++buffer )
- {
- if ( *buffer == '_' ) {
- m_buffer.push_back( '_' );
- }
-
- m_buffer.push_back( *buffer );
+ m_buffer.push_back( '_' );
+}
+const char* c_str() const {
+ return m_buffer.c_str();
+}
+void push_back( char c ){ // not escaped
+ m_buffer.push_back( c );
+}
+std::size_t write( const char* buffer, std::size_t length ){
+ for ( const char* end = buffer + length; buffer != end; ++buffer )
+ {
+ if ( *buffer == '_' ) {
+ m_buffer.push_back( '_' );
}
- return length;
+
+ m_buffer.push_back( *buffer );
}
+ return length;
+}
};
template<typename T>
class LoadMRU
{
private:
- std::size_t m_number;
+std::size_t m_number;
public:
- LoadMRU( std::size_t number )
- : m_number( number ){
- }
- void load(){
- if ( ConfirmModified( "Open Map" ) ) {
- MRU_Activate( m_number - 1 );
- }
+LoadMRU( std::size_t number )
+ : m_number( number ){
+}
+void load(){
+ if ( ConfirmModified( "Open Map" ) ) {
+ MRU_Activate( m_number - 1 );
}
+}
};
typedef MemberCaller<LoadMRU, void(), &LoadMRU::load> LoadMRUCaller;
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( ui::Menu menu ){
{
item.hide();
MRU_AddWidget( item, 3 );
}
+ {
+ auto item = create_menu_item_with_mnemonic( menu, "_5", LoadMRUCaller( g_load_mru5 ) );
+ item.hide();
+ MRU_AddWidget( item, 3 );
+ }
+ {
+ auto item = create_menu_item_with_mnemonic( menu, "_6", LoadMRUCaller( g_load_mru6 ) );
+ item.hide();
+ MRU_AddWidget( item, 3 );
+ }
+ {
+ auto item = create_menu_item_with_mnemonic( menu, "_7", LoadMRUCaller( g_load_mru7 ) );
+ item.hide();
+ MRU_AddWidget( item, 3 );
+ }
+ {
+ auto item = create_menu_item_with_mnemonic( menu, "_8", LoadMRUCaller( g_load_mru8 ) );
+ item.hide();
+ MRU_AddWidget( item, 3 );
+ }
+ {
+ auto item = create_menu_item_with_mnemonic( menu, "_9", LoadMRUCaller( g_load_mru9 ) );
+ item.hide();
+ MRU_AddWidget( item, 3 );
+ }
}
#include "preferencesystem.h"
void Patch_registerCommands(){
GlobalCommands_insert( "InvertCurveTextureX", makeCallbackF(Patch_FlipTextureX), Accelerator( 'I', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
GlobalCommands_insert( "InvertCurveTextureY", makeCallbackF(Patch_FlipTextureY), Accelerator( 'I', (GdkModifierType)GDK_SHIFT_MASK ) );
+ GlobalCommands_insert( "IncPatchColumn", makeCallbackF(Patch_InsertInsertColumn), Accelerator( GDK_KP_Add, (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
+ GlobalCommands_insert( "IncPatchRow", makeCallbackF(Patch_InsertInsertRow), Accelerator( GDK_KP_Add, (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "DecPatchColumn", makeCallbackF(Patch_DeleteLastColumn), Accelerator( GDK_KP_Subtract, (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
+ GlobalCommands_insert( "DecPatchRow", makeCallbackF(Patch_DeleteLastRow), Accelerator( GDK_KP_Subtract, (GdkModifierType)GDK_CONTROL_MASK ) );
GlobalCommands_insert( "NaturalizePatch", makeCallbackF(Patch_NaturalTexture), Accelerator( 'N', (GdkModifierType)GDK_CONTROL_MASK ) );
GlobalCommands_insert( "PatchCylinder", makeCallbackF(Patch_Cylinder) );
GlobalCommands_insert( "PatchDenseCylinder", makeCallbackF(Patch_DenseCylinder) );
create_menu_item_with_mnemonic( menu, "End cap", "PatchEndCap" );
create_menu_item_with_mnemonic( menu, "Bevel", "PatchBevel" );
{
- auto 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" );
+// auto 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" );
- auto 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" );
- auto 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" );
+// auto 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, "Rows", "RedisperseRows" );
+ create_menu_item_with_mnemonic( menu, "Columns", "RedisperseCols" );
+// auto 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, "Rows", "SmoothRows" );
+ create_menu_item_with_mnemonic( menu, "Columns", "SmoothCols" );
create_menu_item_with_mnemonic( menu_in_menu, "Transpose", "MatrixTranspose" );
+
}
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 );
+ {
+ auto 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 );
{
auto menu_in_menu = create_sub_menu_with_mnemonic( menu, "Overlay" );
if ( g_Layout_enableDetachableMenus.m_value ) {
}
if ( ( *iGame )->mGameFile != m_sGameFile ) {
- m_sGameFile = ( *iGame )->mGameFile;
+ m_sGameFile = ( *iGame )->mGameFile;
// do not trigger radiant restart when switching game on startup using Global Preferences dialog
if ( !onStartup ) {
bool m_bChaseMouse;
bool m_bSizePaint;
+ bool g_bCrossHairs;
+
xywindow_globals_private_t() :
d_showgrid( true ),
m_bCamXYUpdate( true ),
m_bChaseMouse( true ),
- m_bSizePaint( true ){
+ m_bSizePaint( true ),
+
+ g_bCrossHairs( false ){
}
};
// =============================================================================
// variables
-bool g_bCrossHairs = false;
-
ui::Menu XYWnd::m_mnuDrop(ui::null);
// this is disabled, and broken
<< " z:: " << FloatFormat( m_mousePosition[2], 6, 1 );
g_pParentWnd->SetStatusText( g_pParentWnd->m_position_status, status.c_str() );
- if ( g_bCrossHairs ) {
+ if ( g_xywindow_globals_private.g_bCrossHairs ) {
XYWnd_Update( *this );
}
PaintSizeInfo( nDim1, nDim2, min, max );
}
- if ( g_bCrossHairs ) {
+ if ( g_xywindow_globals_private.g_bCrossHairs ) {
glColor4f( 0.2f, 0.9f, 0.2f, 0.8f );
glBegin( GL_LINES );
if ( m_viewType == XY ) {
void ToggleShowCrosshair(){
- g_bCrossHairs ^= 1;
+ g_xywindow_globals_private.g_bCrossHairs ^= 1;
XY_UpdateAllWindows();
}
GlobalPreferenceSystem().registerPreference( "NewRightClick", make_property_string( g_xywindow_globals.m_bRightClick ) );
GlobalPreferenceSystem().registerPreference( "ChaseMouse", make_property_string( g_xywindow_globals_private.m_bChaseMouse ) );
GlobalPreferenceSystem().registerPreference( "SizePainting", make_property_string( g_xywindow_globals_private.m_bSizePaint ) );
+ GlobalPreferenceSystem().registerPreference( "ShowCrosshair", make_property_string( g_xywindow_globals_private.g_bCrossHairs ) );
GlobalPreferenceSystem().registerPreference( "NoStipple", make_property_string( g_xywindow_globals.m_bNoStipple ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowCoords", make_property_string( g_xywindow_globals_private.show_coordinates ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowOutlines", make_property_string( 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 ),
#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 */