mirror of
https://github.com/UberGames/GtkRadiant.git
synced 2024-11-29 15:11:54 +00:00
Adding "Preferences" -> "Other" -> "Brush" tab. This now has
"Default texture scale:". (Preferences are game specific by the way.) The default value for this preference is specific to a game, but most of the time it's 0.5. This field allows the user to override that default. This is a feature that was specifically requrested by someone who wants to try using ZeroRadiant (he wants to set it to 0.25 for his "premium" maps). It's already a feature in NetRadiant. git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@436 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
parent
2a99ba3745
commit
9aa5e96c63
5 changed files with 69 additions and 17 deletions
|
@ -309,9 +309,9 @@ void Face_MoveTexture(face_t *f, vec3_t delta)
|
|||
vShift[1] = vDP[0] * s + vDP[1] * c;
|
||||
|
||||
if (!f->texdef.scale[0])
|
||||
f->texdef.scale[0] = g_pGameDescription->mTextureDefaultScale;
|
||||
f->texdef.scale[0] = g_PrefsDlg.m_fDefTextureScale;
|
||||
if (!f->texdef.scale[1])
|
||||
f->texdef.scale[1] = g_pGameDescription->mTextureDefaultScale;
|
||||
f->texdef.scale[1] = g_PrefsDlg.m_fDefTextureScale;
|
||||
|
||||
f->texdef.shift[0] -= vShift[0] / f->texdef.scale[0];
|
||||
f->texdef.shift[1] -= vShift[1] / f->texdef.scale[1];
|
||||
|
@ -364,9 +364,9 @@ void Face_TextureVectors (face_t *f, float STfromXYZ[2][4])
|
|||
memset (STfromXYZ, 0, 8*sizeof(float));
|
||||
|
||||
if (!td->scale[0])
|
||||
td->scale[0] = g_pGameDescription->mTextureDefaultScale;
|
||||
td->scale[0] = g_PrefsDlg.m_fDefTextureScale;
|
||||
if (!td->scale[1])
|
||||
td->scale[1] = g_pGameDescription->mTextureDefaultScale;
|
||||
td->scale[1] = g_PrefsDlg.m_fDefTextureScale;
|
||||
|
||||
// get natural texture axis
|
||||
TextureAxisFromPlane(&f->plane, pvecs[0], pvecs[1]);
|
||||
|
|
|
@ -694,8 +694,8 @@ dist( this control point to first control point ) / dist ( last control pt to fi
|
|||
*/
|
||||
void WINAPI Patch_Naturalize(patchMesh_t *p)
|
||||
{
|
||||
int nWidth = (int)(p->d_texture->width * g_pGameDescription->mTextureDefaultScale);
|
||||
int nHeight = (int)(p->d_texture->height * g_pGameDescription->mTextureDefaultScale);
|
||||
int nWidth = (int)(p->d_texture->width * g_PrefsDlg.m_fDefTextureScale);
|
||||
int nHeight = (int)(p->d_texture->height * g_PrefsDlg.m_fDefTextureScale);
|
||||
float fPWidth = Patch_Width(p);
|
||||
float fPHeight = Patch_Height(p);
|
||||
float xAccum = 0.0f;
|
||||
|
@ -865,18 +865,18 @@ void Patch_CapTexture(patchMesh_t *p, bool bFaceCycle = false)
|
|||
{
|
||||
if (vProjection[2] == 1.0f || (vX[0] == 1.0f && vY[1] == -1.0f))
|
||||
{
|
||||
p->ctrl[w][h].st[0] = p->ctrl[w][h].xyz[0] / (texture->width * g_pGameDescription->mTextureDefaultScale);
|
||||
p->ctrl[w][h].st[1] = p->ctrl[w][h].xyz[1] / (texture->height * g_pGameDescription->mTextureDefaultScale) * -1;
|
||||
p->ctrl[w][h].st[0] = p->ctrl[w][h].xyz[0] / (texture->width * g_PrefsDlg.m_fDefTextureScale);
|
||||
p->ctrl[w][h].st[1] = p->ctrl[w][h].xyz[1] / (texture->height * g_PrefsDlg.m_fDefTextureScale) * -1;
|
||||
}
|
||||
else if (vProjection[0] == 1.0f || (vX[1] == 1.0f && vY[2] == -1.0f))
|
||||
{
|
||||
p->ctrl[w][h].st[0] = p->ctrl[w][h].xyz[1] / (texture->width * g_pGameDescription->mTextureDefaultScale);
|
||||
p->ctrl[w][h].st[1] = p->ctrl[w][h].xyz[2] / (texture->height * g_pGameDescription->mTextureDefaultScale) * -1;
|
||||
p->ctrl[w][h].st[0] = p->ctrl[w][h].xyz[1] / (texture->width * g_PrefsDlg.m_fDefTextureScale);
|
||||
p->ctrl[w][h].st[1] = p->ctrl[w][h].xyz[2] / (texture->height * g_PrefsDlg.m_fDefTextureScale) * -1;
|
||||
}
|
||||
else if (vProjection[1] == 1.0f || (vX[0] == 1.0f && vY[2] == -1.0f))
|
||||
{
|
||||
p->ctrl[w][h].st[0] = p->ctrl[w][h].xyz[0] / (texture->width * g_pGameDescription->mTextureDefaultScale);
|
||||
p->ctrl[w][h].st[1] = p->ctrl[w][h].xyz[2] / (texture->height * g_pGameDescription->mTextureDefaultScale) * -1;
|
||||
p->ctrl[w][h].st[0] = p->ctrl[w][h].xyz[0] / (texture->width * g_PrefsDlg.m_fDefTextureScale);
|
||||
p->ctrl[w][h].st[1] = p->ctrl[w][h].xyz[2] / (texture->height * g_PrefsDlg.m_fDefTextureScale) * -1;
|
||||
}
|
||||
//Sys_Printf("(%i,%i) (%f,%f,%f) (%f,%f) %f\n",w,h,
|
||||
// p->ctrl[w][h].xyz[0],p->ctrl[w][h].xyz[1],p->ctrl[w][h].xyz[2],
|
||||
|
|
|
@ -137,6 +137,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define LEAKSTOP_KEY "LeakStop"
|
||||
#define DOSLEEP_KEY "SleepMode"
|
||||
#define SUBDIVISIONS_KEY "Subdivisions"
|
||||
#define DEFAULTTEXURESCALE_KEY "DefaultTextureScale"
|
||||
#define CLIPCAULK_KEY "ClipCaulk"
|
||||
#define PATCHSHOWBOUNDS_KEY "PatchShowBounds"
|
||||
#define NATIVEGUI_KEY "NativeGUI"
|
||||
|
@ -1727,6 +1728,11 @@ void PrefsDlg::BuildDialog ()
|
|||
gtk_tree_store_append(store, &tab, &group);
|
||||
gtk_tree_store_set(store, &tab, 0, _("Paths"), 1, (gpointer)PTAB_PATHS, -1);
|
||||
}
|
||||
{
|
||||
GtkTreeIter tab;
|
||||
gtk_tree_store_append(store, &tab, &group);
|
||||
gtk_tree_store_set(store, &tab, 0, _("Brush"), 1, (gpointer)PTAB_BRUSH, -1);
|
||||
}
|
||||
{
|
||||
GtkTreeIter tab;
|
||||
gtk_tree_store_append(store, &tab, &group);
|
||||
|
@ -2549,6 +2555,47 @@ void PrefsDlg::BuildDialog ()
|
|||
// Add the page to the notebook
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
|
||||
|
||||
/******** Brush group ********/
|
||||
preflabel = gtk_label_new(_("Brush"));
|
||||
gtk_widget_show(preflabel);
|
||||
pageframe = gtk_frame_new(_("Brush"));
|
||||
gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
|
||||
gtk_widget_show(pageframe);
|
||||
vbox = gtk_vbox_new(FALSE, 5);
|
||||
gtk_widget_show(vbox);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
|
||||
gtk_container_add(GTK_CONTAINER(pageframe), vbox);
|
||||
|
||||
// default texture scale
|
||||
// table
|
||||
table = gtk_table_new(2, 1, FALSE); // I believe that the 2 and 1 are switched here, and this is
|
||||
// intentional to be consistent with other calls to gtk_table_new()
|
||||
// [that are probably also switched].
|
||||
gtk_widget_show(table);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, TRUE, 0);
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 5);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 5);
|
||||
|
||||
// label
|
||||
label = gtk_label_new(_("Default texture scale:"));
|
||||
gtk_widget_show(label);
|
||||
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
|
||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
|
||||
(GtkAttachOptions) (0),
|
||||
(GtkAttachOptions) (0), 0, 0);
|
||||
|
||||
// scale entry
|
||||
entry = gtk_entry_new();
|
||||
gtk_widget_show(entry);
|
||||
gtk_widget_set_usize(GTK_WIDGET(entry), 60, -2);
|
||||
gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 0, 1,
|
||||
(GtkAttachOptions) (GTK_FILL),
|
||||
(GtkAttachOptions) (0), 0, 0);
|
||||
AddDialogData(entry, &m_fDefTextureScale, DLG_ENTRY_FLOAT);
|
||||
|
||||
// Add the page to the notebook
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
|
||||
|
||||
/******** Misc group *********/
|
||||
preflabel = gtk_label_new(_("Misc"));
|
||||
gtk_widget_show(preflabel);
|
||||
|
@ -2970,6 +3017,7 @@ void PrefsDlg::LoadPrefs ()
|
|||
mLocalPrefs.GetPref(SELECTCURVES_KEY, &m_bSelectCurves, TRUE);
|
||||
mLocalPrefs.GetPref(SELECTMODELS_KEY, &m_bSelectModels, TRUE);
|
||||
mLocalPrefs.GetPref(SHADERLISTONLY_KEY, &m_bTexturesShaderlistOnly, FALSE);
|
||||
mLocalPrefs.GetPref(DEFAULTTEXURESCALE_KEY, &m_fDefTextureScale, g_pGameDescription->mTextureDefaultScale);
|
||||
mLocalPrefs.GetPref(SUBDIVISIONS_KEY, &m_nSubdivisions, SUBDIVISIONS_DEF);
|
||||
mLocalPrefs.GetPref(CLIPCAULK_KEY, &m_bClipCaulk, FALSE);
|
||||
mLocalPrefs.GetPref(SNAPTTOGRID_KEY, &m_bSnapTToGrid, FALSE);
|
||||
|
@ -3511,6 +3559,9 @@ void CGameInstall::Run() {
|
|||
Str dest = m_strEngine.GetBuffer();
|
||||
CopyTree( source.GetBuffer(), dest.GetBuffer() );
|
||||
fprintf( fg, " basegame=\"Boomstick\"\n" );
|
||||
fprintf( fg, " default_scale=\"0.5\"\n" ); // Superfluous because the default is already 0.5,
|
||||
// but demonstrates how to set the default texture scale
|
||||
// for a specific game.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -475,7 +475,7 @@ public:
|
|||
// Gef: updated preferences dialog
|
||||
/*! Preference notebook page numbers */
|
||||
enum {PTAB_FRONT = 0, PTAB_GAME_SETTINGS, PTAB_2D, PTAB_CAMERA, PTAB_TEXTURE, PTAB_LAYOUT, PTAB_MOUSE,
|
||||
PTAB_EDITING, PTAB_STARTUP, PTAB_PATHS, PTAB_MISC, PTAB_BSPMONITOR} pref_tabs;
|
||||
PTAB_EDITING, PTAB_STARTUP, PTAB_PATHS, PTAB_BRUSH, PTAB_MISC, PTAB_BSPMONITOR} pref_tabs;
|
||||
|
||||
GtkWidget *notebook;
|
||||
|
||||
|
@ -613,6 +613,7 @@ public:
|
|||
bool m_bGLLighting;
|
||||
bool m_bTexturesShaderlistOnly;
|
||||
int m_nSubdivisions;
|
||||
float m_fDefTextureScale;
|
||||
bool m_bFloatingZ;
|
||||
bool m_bLatchedFloatingZ;
|
||||
// Gef: Kyro GL_POINT workaround
|
||||
|
|
|
@ -1330,8 +1330,8 @@ void SelectTexture (int mx, int my, bool bShift, bool bFitScale)
|
|||
}
|
||||
else
|
||||
{
|
||||
tex.scale[0] = g_pGameDescription->mTextureDefaultScale;
|
||||
tex.scale[1] = g_pGameDescription->mTextureDefaultScale;
|
||||
tex.scale[0] = g_PrefsDlg.m_fDefTextureScale;
|
||||
tex.scale[1] = g_PrefsDlg.m_fDefTextureScale;
|
||||
}
|
||||
tex.flags = pCurrentShader->getFlags();
|
||||
// TTimo - shader code cleanup
|
||||
|
@ -1935,8 +1935,8 @@ void TexWnd::DragDropTexture (guint32 flags, int pointx, int pointy)
|
|||
brushprimit_tex.coords[1][1] = 1.0f;
|
||||
} else
|
||||
{
|
||||
tex.scale[0] = g_pGameDescription->mTextureDefaultScale;
|
||||
tex.scale[1] = g_pGameDescription->mTextureDefaultScale;
|
||||
tex.scale[0] = g_PrefsDlg.m_fDefTextureScale;
|
||||
tex.scale[1] = g_PrefsDlg.m_fDefTextureScale;
|
||||
}
|
||||
tex.flags = g_qeglobals.d_texturewin.texdef.flags;
|
||||
tex.value = g_qeglobals.d_texturewin.texdef.value;
|
||||
|
|
Loading…
Reference in a new issue