* shot down spammy warning about samplesize for lmsize<=128; -debugsamplesize to show
	* numBspModels ('brusmodels') stat emitting


Radiant:

misc...
	* filters toolbar (disableable)
	* fix: shift + m1 click in tex browser to open shader in internal/external editor;
		defaulted internal; focuses on wanted shader; correct opening/saving
	* fix: angles "0 x 0" autoconvert to angle "x" on transform (was getting deleted w/o a trace)
This commit is contained in:
Garux 2017-08-01 13:50:06 +03:00
parent 6e687efe88
commit af4e2d29cf
26 changed files with 212 additions and 41 deletions

View File

@ -73,8 +73,9 @@ inline void write_angles( const Vector3& angles, Entity* entity ){
char value[64]; char value[64];
if ( angles[0] == 0 && angles[1] == 0 ) { if ( angles[0] == 0 && angles[1] == 0 ) {
float yaw = angles[2];
entity->setKeyValue( "angles", "" ); entity->setKeyValue( "angles", "" );
write_angle( angles[2], entity ); write_angle( yaw, entity );
} }
else else
{ {

View File

@ -82,6 +82,9 @@
#include "url.h" #include "url.h"
#include "cmdlib.h" #include "cmdlib.h"
#include "qerplugin.h"
#include "os/file.h"
// ============================================================================= // =============================================================================
@ -708,12 +711,13 @@ EMessageBoxReturn DoTextureLayout( float *fx, float *fy ){
// master window widget // master window widget
static GtkWidget *text_editor = 0; static GtkWidget *text_editor = 0;
static GtkWidget *text_widget; // slave, text widget from the gtk editor static GtkWidget *text_widget; // slave, text widget from the gtk editor
static GtkTextBuffer* text_buffer_;
static gint editor_delete( GtkWidget *widget, gpointer data ){ static gint editor_delete( GtkWidget *widget, gpointer data ){
if ( gtk_MessageBox( widget, "Close the shader editor ?", "Radiant", eMB_YESNO, eMB_ICONQUESTION ) == eIDNO ) { /* if ( gtk_MessageBox( widget, "Close the shader editor ?", "Radiant", eMB_YESNO, eMB_ICONQUESTION ) == eIDNO ) {
return TRUE; return TRUE;
} }
*/
gtk_widget_hide( text_editor ); gtk_widget_hide( text_editor );
return TRUE; return TRUE;
@ -721,23 +725,33 @@ static gint editor_delete( GtkWidget *widget, gpointer data ){
static void editor_save( GtkWidget *widget, gpointer data ){ static void editor_save( GtkWidget *widget, gpointer data ){
FILE *f = fopen( (char*)g_object_get_data( G_OBJECT( data ), "filename" ), "w" ); FILE *f = fopen( (char*)g_object_get_data( G_OBJECT( data ), "filename" ), "w" );
gpointer text = g_object_get_data( G_OBJECT( data ), "text" ); //gpointer text = g_object_get_data( G_OBJECT( data ), "text" );
if ( f == 0 ) { if ( f == 0 ) {
gtk_MessageBox( GTK_WIDGET( data ), "Error saving file !" ); gtk_MessageBox( GTK_WIDGET( data ), "Error saving file !" );
return; return;
} }
char *str = gtk_editable_get_chars( GTK_EDITABLE( text ), 0, -1 ); /* Obtain iters for the start and end of points of the buffer */
GtkTextIter start;
GtkTextIter end;
gtk_text_buffer_get_start_iter (text_buffer_, &start);
gtk_text_buffer_get_end_iter (text_buffer_, &end);
/* Get the entire buffer text. */
char *str = gtk_text_buffer_get_text (text_buffer_, &start, &end, FALSE);
//char *str = gtk_editable_get_chars( GTK_EDITABLE( text ), 0, -1 );
fwrite( str, 1, strlen( str ), f ); fwrite( str, 1, strlen( str ), f );
fclose( f ); fclose( f );
g_free (str);
} }
static void editor_close( GtkWidget *widget, gpointer data ){ static void editor_close( GtkWidget *widget, gpointer data ){
if ( gtk_MessageBox( text_editor, "Close the shader editor ?", "Radiant", eMB_YESNO, eMB_ICONQUESTION ) == eIDNO ) { /* if ( gtk_MessageBox( text_editor, "Close the shader editor ?", "Radiant", eMB_YESNO, eMB_ICONQUESTION ) == eIDNO ) {
return; return;
} }
*/
gtk_widget_hide( text_editor ); gtk_widget_hide( text_editor );
} }
@ -749,7 +763,7 @@ static void CreateGtkTextEditor(){
g_signal_connect( G_OBJECT( dlg ), "delete_event", g_signal_connect( G_OBJECT( dlg ), "delete_event",
G_CALLBACK( editor_delete ), 0 ); G_CALLBACK( editor_delete ), 0 );
gtk_window_set_default_size( GTK_WINDOW( dlg ), 600, 300 ); gtk_window_set_default_size( GTK_WINDOW( dlg ), 400, 600 );
vbox = gtk_vbox_new( FALSE, 5 ); vbox = gtk_vbox_new( FALSE, 5 );
gtk_widget_show( vbox ); gtk_widget_show( vbox );
@ -790,7 +804,7 @@ static void CreateGtkTextEditor(){
text_widget = text; text_widget = text;
} }
static void DoGtkTextEditor( const char* filename, guint cursorpos ){ static void DoGtkTextEditor( const char* filename, guint cursorpos, int length ){
if ( !text_editor ) { if ( !text_editor ) {
CreateGtkTextEditor(); // build it the first time we need it CreateGtkTextEditor(); // build it the first time we need it
@ -815,7 +829,7 @@ static void DoGtkTextEditor( const char* filename, guint cursorpos ){
gtk_window_set_title( GTK_WINDOW( text_editor ), filename ); gtk_window_set_title( GTK_WINDOW( text_editor ), filename );
GtkTextBuffer* text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW( text_widget ) ); GtkTextBuffer* text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW( text_widget ) );
gtk_text_buffer_set_text( text_buffer, (char*)buf, len ); gtk_text_buffer_set_text( text_buffer, (char*)buf, length );
old_filename = g_object_get_data( G_OBJECT( text_editor ), "filename" ); old_filename = g_object_get_data( G_OBJECT( text_editor ), "filename" );
if ( old_filename ) { if ( old_filename ) {
@ -839,12 +853,14 @@ static void DoGtkTextEditor( const char* filename, guint cursorpos ){
// character offset, not byte offset // character offset, not byte offset
gtk_text_buffer_get_iter_at_offset( text_buffer, &text_iter, cursorpos ); gtk_text_buffer_get_iter_at_offset( text_buffer, &text_iter, cursorpos );
gtk_text_buffer_place_cursor( text_buffer, &text_iter ); gtk_text_buffer_place_cursor( text_buffer, &text_iter );
gtk_text_view_scroll_to_iter( GTK_TEXT_VIEW( text_widget ), &text_iter, 0, TRUE, 0, 0);
} }
#ifdef WIN32 #ifdef WIN32
gtk_widget_queue_draw( text_widget ); gtk_widget_queue_draw( text_widget );
#endif #endif
text_buffer_ = text_buffer;
free( buf ); free( buf );
fclose( f ); fclose( f );
} }
@ -1040,18 +1056,55 @@ EMessageBoxReturn DoShaderInfoDlg( const char* name, const char* filename, char*
#ifdef WIN32 #ifdef WIN32
// use the file associations to open files instead of builtin Gtk editor // use the file associations to open files instead of builtin Gtk editor
bool g_TextEditor_useWin32Editor = true; bool g_TextEditor_useWin32Editor = false;
#else #else
// custom shader editor // custom shader editor
bool g_TextEditor_useCustomEditor = false; bool g_TextEditor_useCustomEditor = false;
CopiedString g_TextEditor_editorCommand( "" ); CopiedString g_TextEditor_editorCommand( "" );
#endif #endif
void DoTextEditor( const char* filename, int cursorpos ){ void DoTextEditor( const char* filename, int cursorpos, int length ){
#ifdef WIN32 #ifdef WIN32
if ( g_TextEditor_useWin32Editor ) { if ( g_TextEditor_useWin32Editor ) {
globalOutputStream() << "opening file '" << filename << "' (line " << cursorpos << " info ignored)\n"; StringOutputStream path( 256 );
ShellExecute( (HWND)GDK_WINDOW_HWND( GTK_WIDGET( MainFrame_getWindow() )->window ), "open", filename, 0, 0, SW_SHOW ); StringOutputStream modpath( 256 );
const char* gamename = GlobalRadiant().getGameName();
const char* basegame = GlobalRadiant().getRequiredGameDescriptionKeyValue( "basegame" );
const char* enginePath = GlobalRadiant().getEnginePath();
path << enginePath << basegame << '/' << filename;
modpath << enginePath << gamename << '/' << filename;
if ( file_exists( modpath.c_str() ) ){
globalOutputStream() << "opening file '" << modpath.c_str() << "' (line " << cursorpos << " info ignored)\n";
ShellExecute( (HWND)GDK_WINDOW_HWND( GTK_WIDGET( MainFrame_getWindow() )->window ), "open", modpath.c_str(), 0, 0, SW_SHOW );
}
else if ( file_exists( path.c_str() ) ){
globalOutputStream() << "opening file '" << path.c_str() << "' (line " << cursorpos << " info ignored)\n";
ShellExecute( (HWND)GDK_WINDOW_HWND( GTK_WIDGET( MainFrame_getWindow() )->window ), "open", path.c_str(), 0, 0, SW_SHOW );
}
else{
globalOutputStream() << "Failed to open '" << filename << "\n";
}
return;
}
else{
StringOutputStream path( 256 );
StringOutputStream modpath( 256 );
const char* gamename = GlobalRadiant().getGameName();
const char* basegame = GlobalRadiant().getRequiredGameDescriptionKeyValue( "basegame" );
const char* enginePath = GlobalRadiant().getEnginePath();
path << enginePath << basegame << '/' << filename;
modpath << enginePath << gamename << '/' << filename;
if ( file_exists( modpath.c_str() ) ){
globalOutputStream() << "opening file '" << modpath.c_str() << "' (line " << cursorpos << " info ignored)\n";
DoGtkTextEditor( modpath.c_str(), cursorpos, length );
}
else if ( file_exists( path.c_str() ) ){
globalOutputStream() << "opening file '" << path.c_str() << "' (line " << cursorpos << " info ignored)\n";
DoGtkTextEditor( path.c_str(), cursorpos, length );
}
else{
globalOutputStream() << "Failed to open '" << filename << "\n";
}
return; return;
} }
#else #else
@ -1071,7 +1124,7 @@ void DoTextEditor( const char* filename, int cursorpos ){
return; return;
} }
} }
#endif
DoGtkTextEditor( filename, cursorpos ); DoGtkTextEditor( filename, cursorpos, length );
#endif
} }

View File

@ -38,7 +38,7 @@ EMessageBoxReturn DoLightIntensityDlg( int *intensity );
EMessageBoxReturn DoShaderTagDlg( CopiedString *tag, char* title ); EMessageBoxReturn DoShaderTagDlg( CopiedString *tag, char* title );
EMessageBoxReturn DoShaderInfoDlg( const char* name, const char* filename, char* title ); EMessageBoxReturn DoShaderInfoDlg( const char* name, const char* filename, char* title );
EMessageBoxReturn DoTextureLayout( float *fx, float *fy ); EMessageBoxReturn DoTextureLayout( float *fx, float *fy );
void DoTextEditor( const char* filename, int cursorpos ); void DoTextEditor( const char* filename, int cursorpos, int length );
void DoProjectSettings(); void DoProjectSettings();

View File

@ -1793,6 +1793,7 @@ LatchedInt g_Layout_viewStyle( 0, "Window Layout" );
LatchedBool g_Layout_enableDetachableMenus( true, "Detachable Menus" ); LatchedBool g_Layout_enableDetachableMenus( true, "Detachable Menus" );
LatchedBool g_Layout_enablePatchToolbar( true, "Patch Toolbar" ); LatchedBool g_Layout_enablePatchToolbar( true, "Patch Toolbar" );
LatchedBool g_Layout_enablePluginToolbar( true, "Plugin Toolbar" ); LatchedBool g_Layout_enablePluginToolbar( true, "Plugin Toolbar" );
LatchedBool g_Layout_enableFilterToolbar( true, "Filter Toolbar" );
@ -2390,7 +2391,7 @@ GtkToolbar* create_main_toolbar( MainFrame::EViewStyle style ){
gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) ); gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
toolbar_append_toggle_button( toolbar, "Texture Lock (SHIFT +T)", "texture_lock.bmp", "TogTexLock" ); toolbar_append_toggle_button( toolbar, "Texture Lock (SHIFT + T)", "texture_lock.bmp", "TogTexLock" );
gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) ); gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
@ -2779,6 +2780,32 @@ void MainFrame::Create(){
if ( !g_Layout_enablePluginToolbar.m_value ) { if ( !g_Layout_enablePluginToolbar.m_value ) {
gtk_widget_hide( GTK_WIDGET( plugin_toolbar ) ); gtk_widget_hide( GTK_WIDGET( plugin_toolbar ) );
} }
if ( g_Layout_enableFilterToolbar.m_value ) {
gtk_toolbar_append_space( GTK_TOOLBAR( plugin_toolbar ) );
gtk_toolbar_append_space( GTK_TOOLBAR( plugin_toolbar ) );
toolbar_append_toggle_button( plugin_toolbar, "World (ALT + 1)", "f-world.bmp", "FilterWorldBrushes" );
toolbar_append_toggle_button( plugin_toolbar, "Details (CTRL + D)", "f-details.bmp", "FilterDetails" );
toolbar_append_toggle_button( plugin_toolbar, "Structural (CTRL + SHIFT + D)", "f-structural.bmp", "FilterStructural" );
toolbar_append_toggle_button( plugin_toolbar, "Patches (CTRL + P)", "patch_wireframe.bmp", "FilterPatches" );
gtk_toolbar_append_space( GTK_TOOLBAR( plugin_toolbar ) );
toolbar_append_toggle_button( plugin_toolbar, "Areaportals (ALT + 3)", "f-areaportal.bmp", "FilterAreaportals" );
toolbar_append_toggle_button( plugin_toolbar, "Translucent (ALT + 4)", "f-translucent.bmp", "FilterTranslucent" );
toolbar_append_toggle_button( plugin_toolbar, "Liquids (ALT + 5)", "f-liquids.bmp", "FilterLiquids" );
toolbar_append_toggle_button( plugin_toolbar, "Caulk (ALT + 6)", "f-caulk.bmp", "FilterCaulk" );
toolbar_append_toggle_button( plugin_toolbar, "Clips (ALT + 7)", "f-clip.bmp", "FilterClips" );
toolbar_append_toggle_button( plugin_toolbar, "HintsSkips (CTRL + H)", "f-hint.bmp", "FilterHintsSkips" );
//toolbar_append_toggle_button( plugin_toolbar, "Paths (ALT + 8)", "texture_lock.bmp", "FilterPaths" );
gtk_toolbar_append_space( GTK_TOOLBAR( plugin_toolbar ) );
toolbar_append_toggle_button( plugin_toolbar, "Entities (ALT + 2)", "f-entities.bmp", "FilterEntities" );
toolbar_append_toggle_button( plugin_toolbar, "Lights (ALT + 0)", "lightinspector.bmp", "FilterLights" );
toolbar_append_toggle_button( plugin_toolbar, "Models (SHIFT + M)", "f-models.bmp", "FilterModels" );
toolbar_append_toggle_button( plugin_toolbar, "Triggers (CTRL + SHIFT + T)", "f-triggers.bmp", "FilterTriggers" );
toolbar_append_toggle_button( plugin_toolbar, "Decals (SHIFT + D)", "f-decals.bmp", "FilterDecals" );
gtk_toolbar_append_space( GTK_TOOLBAR( plugin_toolbar ) );
toolbar_append_button( plugin_toolbar, "InvertFilters", "f-invert.bmp", "InvertFilters" );
toolbar_append_button( plugin_toolbar, "ResetFilters", "f-reset.bmp", "ResetFilters" );
}
gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( plugin_toolbar ), FALSE, FALSE, 0 ); gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( plugin_toolbar ), FALSE, FALSE, 0 );
GtkWidget* main_statusbar = create_main_statusbar( m_pStatusLabel ); GtkWidget* main_statusbar = create_main_statusbar( m_pStatusLabel );
@ -3178,6 +3205,11 @@ void Layout_constructPreferences( PreferencesPage& page ){
LatchedBoolImportCaller( g_Layout_enablePluginToolbar ), LatchedBoolImportCaller( g_Layout_enablePluginToolbar ),
BoolExportCaller( g_Layout_enablePluginToolbar.m_latched ) BoolExportCaller( g_Layout_enablePluginToolbar.m_latched )
); );
page.appendCheckBox(
"", "Filter Toolbar",
LatchedBoolImportCaller( g_Layout_enableFilterToolbar ),
BoolExportCaller( g_Layout_enableFilterToolbar.m_latched )
);
} }
void Layout_constructPage( PreferenceGroup& group ){ void Layout_constructPage( PreferenceGroup& group ){
@ -3320,6 +3352,7 @@ void MainFrame_Construct(){
GlobalPreferenceSystem().registerPreference( "DetachableMenus", BoolImportStringCaller( g_Layout_enableDetachableMenus.m_latched ), BoolExportStringCaller( g_Layout_enableDetachableMenus.m_latched ) ); GlobalPreferenceSystem().registerPreference( "DetachableMenus", BoolImportStringCaller( g_Layout_enableDetachableMenus.m_latched ), BoolExportStringCaller( g_Layout_enableDetachableMenus.m_latched ) );
GlobalPreferenceSystem().registerPreference( "PatchToolBar", BoolImportStringCaller( g_Layout_enablePatchToolbar.m_latched ), BoolExportStringCaller( g_Layout_enablePatchToolbar.m_latched ) ); GlobalPreferenceSystem().registerPreference( "PatchToolBar", BoolImportStringCaller( g_Layout_enablePatchToolbar.m_latched ), BoolExportStringCaller( g_Layout_enablePatchToolbar.m_latched ) );
GlobalPreferenceSystem().registerPreference( "PluginToolBar", BoolImportStringCaller( g_Layout_enablePluginToolbar.m_latched ), BoolExportStringCaller( g_Layout_enablePluginToolbar.m_latched ) ); GlobalPreferenceSystem().registerPreference( "PluginToolBar", BoolImportStringCaller( g_Layout_enablePluginToolbar.m_latched ), BoolExportStringCaller( g_Layout_enablePluginToolbar.m_latched ) );
GlobalPreferenceSystem().registerPreference( "FilterToolBar", BoolImportStringCaller( g_Layout_enableFilterToolbar.m_latched ), BoolExportStringCaller( g_Layout_enableFilterToolbar.m_latched ) );
GlobalPreferenceSystem().registerPreference( "QE4StyleWindows", IntImportStringCaller( g_Layout_viewStyle.m_latched ), IntExportStringCaller( g_Layout_viewStyle.m_latched ) ); GlobalPreferenceSystem().registerPreference( "QE4StyleWindows", IntImportStringCaller( g_Layout_viewStyle.m_latched ), IntExportStringCaller( g_Layout_viewStyle.m_latched ) );
GlobalPreferenceSystem().registerPreference( "XYHeight", IntImportStringCaller( g_layout_globals.nXYHeight ), IntExportStringCaller( g_layout_globals.nXYHeight ) ); GlobalPreferenceSystem().registerPreference( "XYHeight", IntImportStringCaller( g_layout_globals.nXYHeight ), IntExportStringCaller( g_layout_globals.nXYHeight ) );
GlobalPreferenceSystem().registerPreference( "XYWidth", IntImportStringCaller( g_layout_globals.nXYWidth ), IntExportStringCaller( g_layout_globals.nXYWidth ) ); GlobalPreferenceSystem().registerPreference( "XYWidth", IntImportStringCaller( g_layout_globals.nXYWidth ), IntExportStringCaller( g_layout_globals.nXYWidth ) );
@ -3360,6 +3393,7 @@ void MainFrame_Construct(){
g_Layout_enableDetachableMenus.useLatched(); g_Layout_enableDetachableMenus.useLatched();
g_Layout_enablePatchToolbar.useLatched(); g_Layout_enablePatchToolbar.useLatched();
g_Layout_enablePluginToolbar.useLatched(); g_Layout_enablePluginToolbar.useLatched();
g_Layout_enableFilterToolbar.useLatched();
Layout_registerPreferencesPage(); Layout_registerPreferencesPage();
Paths_registerPreferencesPage(); Paths_registerPreferencesPage();

View File

@ -71,7 +71,7 @@ void Global_constructPreferences( PreferencesPage& page ){
void Interface_constructPreferences( PreferencesPage& page ){ void Interface_constructPreferences( PreferencesPage& page ){
#ifdef WIN32 #ifdef WIN32
page.appendCheckBox( "", "Default Text Editor", g_TextEditor_useWin32Editor ); page.appendCheckBox( "", "External Shader Editor", g_TextEditor_useWin32Editor );
#else #else
{ {
GtkWidget* use_custom = page.appendCheckBox( "Text Editor", "Custom", g_TextEditor_useCustomEditor ); GtkWidget* use_custom = page.appendCheckBox( "Text Editor", "Custom", g_TextEditor_useCustomEditor );

View File

@ -39,17 +39,65 @@ void ViewShader( const char *pFile, const char *pName ){
StringOutputStream strFind( string_length( pName ) ); StringOutputStream strFind( string_length( pName ) );
strFind << LowerCase( pName ); strFind << LowerCase( pName );
StringOutputStream strLook( string_length( pBuff ) ); StringOutputStream strLook( string_length( pBuff ) );
strFind << LowerCase( pBuff ); strLook << LowerCase( pBuff );
// offset used when jumping over commented out definitions // offset used when jumping over commented out definitions
int length = string_length( pBuff );
std::size_t nOffset = 0; std::size_t nOffset = 0;
while ( true ) bool startOK = false;
{ bool endOK = false;
const char* substr = strstr( strFind.c_str() + nOffset, strFind.c_str() ); while ( !startOK || !endOK ){
const char* substr = strstr( strLook.c_str() + nOffset, strFind.c_str() );
if ( substr == 0 ) { if ( substr == 0 ) {
break; break;
} }
std::size_t nStart = substr - strLook.c_str(); std::size_t nStart = substr - strLook.c_str();
// we have found something, maybe it's a commented out shader name? startOK = endOK = false;
if ( nStart == 0 ){
startOK = true;
}
//validate found one...
for ( const char* i = substr - 1; i > strLook.c_str(); i-- ){
if( (strncmp( i, "\t", 1 ) == 0) || (strncmp( i, " ", 1 ) == 0) ){
startOK = true;
continue;
}
else if ( (strncmp( i, "\n", 1 ) == 0) || (strncmp( i, "\r", 1 ) == 0) ){
startOK = true;
break;
}
else{
startOK = false;
break;
}
}
for ( const char* i = substr + strlen( strFind.c_str() ); i < strLook.c_str() + strlen( strLook.c_str() ); i++ ){
if( (strncmp( i, "\t", 1 ) == 0) || (strncmp( i, " ", 1 ) == 0) ){
endOK = true;
continue;
}
else if ( (strncmp( i, "\n", 1 ) == 0) || (strncmp( i, "\r", 1 ) == 0) || (strncmp( i, "{", 1 ) == 0) || (strncmp( i, ":q3map", 6 ) == 0) ){
endOK = true;
break;
}
else{
endOK = false;
break;
}
}
if( !startOK || !endOK ){
nOffset = nStart + 1;
}
else{
//globalErrorStream() << "Validated successfully" << "\n";
nOffset = nStart;
//fix cr+lf
for ( const char* i = strLook.c_str(); i < substr ; i++ ){
if ( (strncmp( i, "\r\n", 2 ) == 0) ){
nOffset--;
}
}
}
/*// we have found something, maybe it's a commented out shader name?
char *strCheck = new char[string_length( strLook.c_str() ) + 1]; char *strCheck = new char[string_length( strLook.c_str() ) + 1];
strcpy( strCheck, strLook.c_str() ); strcpy( strCheck, strLook.c_str() );
strCheck[nStart] = 0; strCheck[nStart] = 0;
@ -62,10 +110,16 @@ void ViewShader( const char *pFile, const char *pName ){
} }
delete[] strCheck; delete[] strCheck;
nOffset = nStart; nOffset = nStart;
break; break;*/
}
//fix up length
for ( const char* i = strLook.c_str(); i < strLook.c_str() + strlen( strLook.c_str() ) - 1; i++ ){
if ( (strncmp( i, "\r\n", 2 ) == 0) ){
length--;
}
} }
// now close the file // now close the file
vfsFreeFile( pBuff ); vfsFreeFile( pBuff );
DoTextEditor( pFile, static_cast<int>( nOffset ) ); DoTextEditor( pFile, static_cast<int>( nOffset ), length );
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -637,6 +637,8 @@ void ProcessModels( void ){
/* restore -v setting */ /* restore -v setting */
verbose = oldVerbose; verbose = oldVerbose;
Sys_FPrintf( SYS_VRB, "%9i bspModels in total\n", numBSPModels );
/* write fogs */ /* write fogs */
EmitFogs(); EmitFogs();

View File

@ -2768,6 +2768,10 @@ int LightMain( int argc, char **argv ){
i++; i++;
Sys_Printf( "Lightmaps sample scale set to %d\n", sampleScale ); Sys_Printf( "Lightmaps sample scale set to %d\n", sampleScale );
} }
else if ( !strcmp( argv[ i ], "-debugsamplesize" ) ) {
debugSampleSize = 1;
Sys_Printf( "debugging Lightmaps SampleSize\n" );
}
else if ( !strcmp( argv[ i ], "-novertex" ) ) { else if ( !strcmp( argv[ i ], "-novertex" ) ) {
noVertexLighting = 1; noVertexLighting = 1;
if ( ( atof( argv[ i + 1 ] ) != 0 ) && ( atof( argv[ i + 1 ] )) < 1 ) { if ( ( atof( argv[ i + 1 ] ) != 0 ) && ( atof( argv[ i + 1 ] )) < 1 ) {

View File

@ -693,7 +693,8 @@ qboolean AddSurfaceToRawLightmap( int num, rawLightmap_t *lm ){
} }
} }
if ( sampleSize != lm->sampleSize && lmLimitSize == 0 ) { if ( sampleSize != lm->sampleSize && lmLimitSize == 0 ){
if ( debugSampleSize == 1 || lm->customWidth > 128 ){
Sys_FPrintf( SYS_VRB,"WARNING: surface at (%6.0f %6.0f %6.0f) (%6.0f %6.0f %6.0f) too large for desired samplesize/lightmapsize/lightmapscale combination, increased samplesize from %d to %d\n", Sys_FPrintf( SYS_VRB,"WARNING: surface at (%6.0f %6.0f %6.0f) (%6.0f %6.0f %6.0f) too large for desired samplesize/lightmapsize/lightmapscale combination, increased samplesize from %d to %d\n",
info->mins[0], info->mins[0],
info->mins[1], info->mins[1],
@ -704,6 +705,22 @@ qboolean AddSurfaceToRawLightmap( int num, rawLightmap_t *lm ){
lm->sampleSize, lm->sampleSize,
(int) sampleSize ); (int) sampleSize );
} }
else if ( debugSampleSize == 0 ){
Sys_FPrintf( SYS_VRB,"WARNING: surface at (%6.0f %6.0f %6.0f) (%6.0f %6.0f %6.0f) too large for desired samplesize/lightmapsize/lightmapscale combination, increased samplesize from %d to %d\n",
info->mins[0],
info->mins[1],
info->mins[2],
info->maxs[0],
info->maxs[1],
info->maxs[2],
lm->sampleSize,
(int) sampleSize );
debugSampleSize--;
}
else{
debugSampleSize--;
}
}
/* set actual sample size */ /* set actual sample size */
lm->actualSampleSize = sampleSize; lm->actualSampleSize = sampleSize;
@ -1202,6 +1219,10 @@ void SetupSurfaceLightmaps( void ){
FinishRawLightmap( lm ); FinishRawLightmap( lm );
} }
if ( debugSampleSize < -1 ){
Sys_FPrintf( SYS_VRB, "+%d similar occurrences;\t-debugSampleSize to show ones\n", -debugSampleSize - 1 );
}
/* allocate vertex luxel storage */ /* allocate vertex luxel storage */
for ( k = 0; k < MAX_LIGHTMAPS; k++ ) for ( k = 0; k < MAX_LIGHTMAPS; k++ )
{ {

View File

@ -1471,8 +1471,7 @@ int ScaleBSPMain( int argc, char **argv ){
/* /*
ShiftBSPMain() ShiftBSPMain()
shifts a map: works correctly only with axial faces, placed in positive half of axis shifts a map: for testing physics with huge coordinates
for testing physics with huge coordinates
*/ */
int ShiftBSPMain( int argc, char **argv ){ int ShiftBSPMain( int argc, char **argv ){
@ -1949,6 +1948,7 @@ int main( int argc, char **argv ){
numthreads = atoi( argv[ i ] ); numthreads = atoi( argv[ i ] );
argv[ i ] = NULL; argv[ i ] = NULL;
} }
else if( !strcmp( argv[ i ], "-nocmdline" ) ) else if( !strcmp( argv[ i ], "-nocmdline" ) )
{ {
Sys_Printf( "noCmdLine\n" ); Sys_Printf( "noCmdLine\n" );

View File

@ -383,7 +383,7 @@ typedef struct
bspShader_t; bspShader_t;
/* planes x^1 is allways the opposite of plane x */ /* planes x^1 is always the opposite of plane x */
typedef struct typedef struct
{ {
@ -397,7 +397,7 @@ typedef struct
{ {
int planeNum; int planeNum;
int children[ 2 ]; /* negative numbers are -(leafs+1), not nodes */ int children[ 2 ]; /* negative numbers are -(leafs+1), not nodes */
int mins[ 3 ]; /* for frustom culling */ int mins[ 3 ]; /* for frustum culling */
int maxs[ 3 ]; int maxs[ 3 ];
} }
bspNode_t; bspNode_t;
@ -2293,6 +2293,8 @@ Q_EXTERN qboolean debugAxis Q_ASSIGN( qfalse );
Q_EXTERN qboolean debugCluster Q_ASSIGN( qfalse ); Q_EXTERN qboolean debugCluster Q_ASSIGN( qfalse );
Q_EXTERN qboolean debugOrigin Q_ASSIGN( qfalse ); Q_EXTERN qboolean debugOrigin Q_ASSIGN( qfalse );
Q_EXTERN qboolean lightmapBorder Q_ASSIGN( qfalse ); Q_EXTERN qboolean lightmapBorder Q_ASSIGN( qfalse );
//1=warn; 0=warn if lmsize>128
Q_EXTERN int debugSampleSize Q_ASSIGN( 0 );
/* longest distance across the map */ /* longest distance across the map */
Q_EXTERN float maxMapDistance Q_ASSIGN( 0 ); Q_EXTERN float maxMapDistance Q_ASSIGN( 0 );