LUT Grading and Technicolor added.
Preset save/load added. Fixed a typo.
This commit is contained in:
parent
232ec85941
commit
0380e56f90
8 changed files with 321 additions and 9 deletions
178
zscript.txt
178
zscript.txt
|
|
@ -1,4 +1,139 @@
|
|||
version "3.3"
|
||||
version "4.7"
|
||||
|
||||
// preset save functions
|
||||
Class MFXPresetUtility
|
||||
{
|
||||
static clearscope void SavePreset( int slot )
|
||||
{
|
||||
let lmp = Wads.CheckNumForFullname("cvarinfo.marifx");
|
||||
String dat = Wads.ReadLump(lmp);
|
||||
// fucking Windows
|
||||
dat.Substitute("\r","");
|
||||
Array<String> list, ln;
|
||||
list.Clear();
|
||||
dat.Split(list,"\n");
|
||||
let dct = Dictionary.Create();
|
||||
bool dosave = false;
|
||||
CVar v;
|
||||
String pn = "";
|
||||
for ( int i=0; i<list.Size(); i++ )
|
||||
{
|
||||
if ( list[i].Mid(3,17) == "BEGIN PRESET VARS" ) dosave = true;
|
||||
else if ( list[i].Mid(3,15) == "END PRESET VARS" ) dosave = false;
|
||||
if ( !dosave || (list[i].Length() == 0) || (list[i].Left(2) == "//") || (list[i].Left(1) == "") )
|
||||
continue;
|
||||
int eq = list[i].IndexOf("=");
|
||||
if ( eq == -1 ) continue;
|
||||
list[i].Truncate(eq);
|
||||
ln.Clear();
|
||||
list[i].Split(ln," ",0);
|
||||
for ( int j=0; j<ln.Size(); j++ )
|
||||
{
|
||||
if ( (ln[j].Left(4) != "mfx_") ) continue;
|
||||
v = CVar.FindCVar(ln[j]);
|
||||
if ( !v ) continue;
|
||||
String str = v.GetString();
|
||||
dct.Insert(ln[j],str);
|
||||
if ( ln[j] == "mfx_presetname" ) pn = str;
|
||||
}
|
||||
}
|
||||
v = CVar.FindCVar("mfx_preset"..slot);
|
||||
if ( v ) v.SetString(dct.ToString());
|
||||
Console.Printf(StringTable.Localize("$MFX_PRESETSAVED"),slot,pn);
|
||||
}
|
||||
|
||||
static clearscope void LoadPreset( int slot )
|
||||
{
|
||||
CVar v = CVar.FindCVar("mfx_preset"..slot);
|
||||
if ( !v ) return;
|
||||
String str = v.GetString();
|
||||
if ( str == "" )
|
||||
{
|
||||
Console.Printf(StringTable.Localize("$MFX_PRESETEMPTY"),slot);
|
||||
return;
|
||||
}
|
||||
let dct = Dictionary.FromString(str);
|
||||
let di = DictionaryIterator.Create(dct);
|
||||
String pn = "";
|
||||
while ( di.Next() )
|
||||
{
|
||||
String k = di.Key();
|
||||
v = CVar.FindCVar(k);
|
||||
if ( !v ) continue;
|
||||
String str = di.Value();
|
||||
v.SetString(str);
|
||||
if ( k == "mfx_presetname" ) pn = str;
|
||||
}
|
||||
Console.Printf(StringTable.Localize("$MFX_PRESETLOADED"),slot,pn);
|
||||
}
|
||||
|
||||
static clearscope String GetPresetName( int slot )
|
||||
{
|
||||
CVar v = CVar.FindCVar("mfx_preset"..slot);
|
||||
if ( !v ) return "Error";
|
||||
String str = v.GetString();
|
||||
if ( str == "" ) return "Empty";
|
||||
let dct = Dictionary.FromString(str);
|
||||
return dct.At("mfx_presetname");
|
||||
}
|
||||
}
|
||||
|
||||
// for preset listing
|
||||
Class OptionMenuItemMFXPresetList : OptionMenuItemOptionBase
|
||||
{
|
||||
CVar mCVar;
|
||||
String names[8];
|
||||
|
||||
OptionMenuItemMFXPresetList Init( String label, Name command, CVar graycheck = null, int center = 0 )
|
||||
{
|
||||
Super.Init(label,command,'',graycheck,center);
|
||||
mCVar = CVar.FindCVar(mAction);
|
||||
UpdateNames();
|
||||
return self;
|
||||
}
|
||||
|
||||
void UpdateNames()
|
||||
{
|
||||
for ( int i=0; i<8; i++ )
|
||||
names[i] = MFXPresetUtility.GetPresetName(i);
|
||||
}
|
||||
|
||||
override int GetSelection()
|
||||
{
|
||||
return clamp(mCVar.GetInt(),0,7);
|
||||
}
|
||||
|
||||
override void SetSelection( int Selection )
|
||||
{
|
||||
mCVar.SetInt(clamp(Selection,0,7));
|
||||
}
|
||||
|
||||
override int Draw( OptionMenuDescriptor desc, int y, int indent, bool selected )
|
||||
{
|
||||
if ( mCenter ) indent = (screen.GetWidth()/2);
|
||||
drawLabel(indent,y,selected?OptionMenuSettings.mFontColorSelection:OptionMenuSettings.mFontColor,isGrayed());
|
||||
int sel = GetSelection();
|
||||
drawValue(indent,y,OptionMenuSettings.mFontColorValue,String.Format("%d - %s",sel,names[sel]),isGrayed());
|
||||
return indent;
|
||||
}
|
||||
|
||||
override bool MenuEvent( int mkey, bool fromcontroller )
|
||||
{
|
||||
int Selection = GetSelection();
|
||||
if ( mkey == Menu.MKEY_Left )
|
||||
{
|
||||
if ( --Selection < 0 ) Selection = 7;
|
||||
}
|
||||
else if ( (mkey == Menu.MKEY_Right) || (mkey == Menu.MKEY_Enter) )
|
||||
{
|
||||
if ( ++Selection > 7 ) Selection = 0;
|
||||
}
|
||||
else return OptionMenuItem.MenuEvent(mkey,fromcontroller);
|
||||
SetSelection(Selection);
|
||||
Menu.MenuSound("menu/change");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// keyboard input snaps to increment
|
||||
// holding shift increments by ten steps
|
||||
|
|
@ -21,7 +156,7 @@ Class OptionMenuItemMFXSlider : OptionMenuItemSlider
|
|||
}
|
||||
}
|
||||
|
||||
// passes shift presses to MFXSliders
|
||||
// passes shift/alt presses to MFXSliders
|
||||
Class MFXOptionMenu : OptionMenu
|
||||
{
|
||||
override void Init( Menu parent, OptionMenuDescriptor desc )
|
||||
|
|
@ -42,6 +177,17 @@ Class MFXOptionMenu : OptionMenu
|
|||
}
|
||||
return Super.OnUIEvent(ev);
|
||||
}
|
||||
|
||||
override void OnReturn()
|
||||
{
|
||||
Super.OnReturn();
|
||||
for ( int i=0; i<mDesc.mItems.size(); i++ )
|
||||
{
|
||||
if ( !(mDesc.mItems[i] is 'OptionMenuItemMFXPresetList') )
|
||||
continue;
|
||||
OptionMenuItemMFXPresetList(mDesc.mItems[i]).UpdateNames();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Class MariFXHandler : StaticEventHandler
|
||||
|
|
@ -76,6 +222,13 @@ Class MariFXHandler : StaticEventHandler
|
|||
Shader.SetUniform1f(p,"mfx_grading","gradesatpow",mfx_gradesatpow);
|
||||
Shader.SetUniform1f(p,"mfx_grading","gradevalmul",mfx_gradevalmul);
|
||||
Shader.SetUniform1f(p,"mfx_grading","gradevalpow",mfx_gradevalpow);
|
||||
// LUT GRADING
|
||||
Shader.SetEnabled(p,"mfx_lutgrading",mfx_lutenable);
|
||||
Shader.SetUniform1i(p,"mfx_lutgrading","lutindex",mfx_lutindex);
|
||||
Shader.SetUniform1f(p,"mfx_lutgrading","lutblend",mfx_lutblend);
|
||||
// TECHNICOLOR
|
||||
Shader.SetEnabled(p,"mfx_technicolor",mfx_techenable);
|
||||
Shader.SetUniform1f(p,"mfx_technicolor","techblend",mfx_techblend);
|
||||
// COLOR MATRIX
|
||||
Shader.SetEnabled(p,"mfx_colormatrix",mfx_cmatenable);
|
||||
Shader.SetUniform3f(p,"mfx_colormatrix","redrow",(mfx_cmat_rr,mfx_cmat_rg,mfx_cmat_rb));
|
||||
|
|
@ -160,7 +313,17 @@ Class MariFXHandler : StaticEventHandler
|
|||
override void ConsoleProcess( ConsoleEvent e )
|
||||
{
|
||||
PlayerInfo p = players[consoleplayer];
|
||||
if ( e.Name ~== "resetmfxvars" )
|
||||
if ( e.Name ~== "loadmfxpreset" )
|
||||
{
|
||||
int slot = clamp(mfx_presetslot,0,7);
|
||||
MFXPresetUtility.LoadPreset(slot);
|
||||
}
|
||||
else if ( e.Name ~== "savemfxpreset" )
|
||||
{
|
||||
int slot = clamp(mfx_presetslot,0,7);
|
||||
MFXPresetUtility.SavePreset(slot);
|
||||
}
|
||||
else if ( e.Name ~== "resetmfxvars" )
|
||||
{
|
||||
switch( e.args[0] )
|
||||
{
|
||||
|
|
@ -275,6 +438,15 @@ Class MariFXHandler : StaticEventHandler
|
|||
CVar.FindCVar('mfx_lsharpclamp').ResetToDefault();
|
||||
CVar.FindCVar('mfx_lsharpblend').ResetToDefault();
|
||||
break;
|
||||
case 9:
|
||||
CVar.FindCVar('mfx_lutenable').ResetToDefault();
|
||||
CVar.FindCVar('mfx_lutindex').ResetToDefault();
|
||||
CVar.FindCVar('mfx_lutblend').ResetToDefault();
|
||||
break;
|
||||
case 10:
|
||||
CVar.FindCVar('mfx_techenable').ResetToDefault();
|
||||
CVar.FindCVar('mfx_techblend').ResetToDefault();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue