mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-01-31 04:40:55 +00:00
GZDoom Builder 1.12a:
AngleOffset, PitchOffset and RollOffset MODELDEF properties are now supported. Fixed a crash when editor tries to display a model for an actor without a valid sprite in Visual mode. Fixed a possible crash when MODELDEF is reloaded from 2d-mode. Fixed several things in Doom2_things.cfg. UDMF Controls plugin: Fixed several bugs in plugin's sliders logic.
This commit is contained in:
parent
122e5d8e1b
commit
2006cdc7bb
24 changed files with 252 additions and 157 deletions
|
@ -207,7 +207,7 @@ decoration
|
||||||
sort = 1;
|
sort = 1;
|
||||||
height = 16;
|
height = 16;
|
||||||
hangs = 0;
|
hangs = 0;
|
||||||
blocking = 1;
|
blocking = 0;
|
||||||
|
|
||||||
79
|
79
|
||||||
{
|
{
|
||||||
|
@ -236,6 +236,7 @@ decoration
|
||||||
sprite = "HDB1A0";
|
sprite = "HDB1A0";
|
||||||
height = 88;
|
height = 88;
|
||||||
hangs = 1;
|
hangs = 1;
|
||||||
|
blocking = 1;
|
||||||
class = "HangNoGuts";
|
class = "HangNoGuts";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,6 +246,7 @@ decoration
|
||||||
sprite = "HDB2A0";
|
sprite = "HDB2A0";
|
||||||
height = 88;
|
height = 88;
|
||||||
hangs = 1;
|
hangs = 1;
|
||||||
|
blocking = 1;
|
||||||
class = "HangBNoBrain";
|
class = "HangBNoBrain";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,6 +256,7 @@ decoration
|
||||||
sprite = "HDB3A0";
|
sprite = "HDB3A0";
|
||||||
height = 64;
|
height = 64;
|
||||||
hangs = 1;
|
hangs = 1;
|
||||||
|
blocking = 1;
|
||||||
class = "HangTLookingDown";
|
class = "HangTLookingDown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,9 @@ keywords
|
||||||
Rotation-Vector = "Rotation-Vector <float x> <float y> <float z>";
|
Rotation-Vector = "Rotation-Vector <float x> <float y> <float z>";
|
||||||
Rotation-Center = "Rotation-Center <float x> <float y> <float z>";
|
Rotation-Center = "Rotation-Center <float x> <float y> <float z>";
|
||||||
ZOffset = "ZOffset <float>";
|
ZOffset = "ZOffset <float>";
|
||||||
|
AngleOffset = "AngleOffset <float>";
|
||||||
|
PitchOffset = "PitchOffset <float>";
|
||||||
|
RollOffset = "RollOffset <float>";
|
||||||
}
|
}
|
||||||
|
|
||||||
constants
|
constants
|
||||||
|
@ -32,4 +35,6 @@ constants
|
||||||
INTERPOLATEDOUBLEDFRAMES;
|
INTERPOLATEDOUBLEDFRAMES;
|
||||||
ROTATING;
|
ROTATING;
|
||||||
NOINTERPOLATION;
|
NOINTERPOLATION;
|
||||||
|
INHERITACTORPITCH;
|
||||||
|
INHERITACTORROLL;
|
||||||
}
|
}
|
|
@ -7,13 +7,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuilderModes", "..\Plugins\
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZDoomEditing", "..\Plugins\GZDoomEditing\GZDoomEditing.csproj", "{760A9BC7-CB73-4C36-858B-994C14996FCD}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZDoomEditing", "..\Plugins\GZDoomEditing\GZDoomEditing.csproj", "{760A9BC7-CB73-4C36-858B-994C14996FCD}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagExplorer", "..\Plugins\TagExplorer\TagExplorer.csproj", "{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UDMFControls", "..\Plugins\UMDFControls\UDMFControls.csproj", "{2D11C828-295C-463A-8545-CA1AD6D51518}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UDMFControls", "..\Plugins\UMDFControls\UDMFControls.csproj", "{2D11C828-295C-463A-8545-CA1AD6D51518}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorPicker", "..\Plugins\ColorPicker\ColorPicker.csproj", "{A4761900-0EA3-4FE4-A919-847FD5080EFC}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagExplorer", "..\Plugins\TagExplorer\TagExplorer.csproj", "{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}"
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisplaneExplorer", "..\Plugins\VisplaneExplorer\VisplaneExplorer.csproj", "{CF670175-7099-4090-A330-EE25C7230139}"
|
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
@ -55,46 +51,28 @@ Global
|
||||||
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|Mixed Platforms.Build.0 = Release|x86
|
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||||
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|x86.ActiveCfg = Release|x86
|
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|x86.ActiveCfg = Release|x86
|
||||||
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|x86.Build.0 = Release|x86
|
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|x86.Build.0 = Release|x86
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Mixed Platforms.Build.0 = Release|x86
|
|
||||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Debug|x86.Build.0 = Debug|x86
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Any CPU.Build.0 = Release|Any CPU
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Mixed Platforms.Build.0 = Release|x86
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||||
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|x86.ActiveCfg = Release|Any CPU
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|x86.ActiveCfg = Release|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|Any CPU.ActiveCfg = Debug|x86
|
{2D11C828-295C-463A-8545-CA1AD6D51518}.Release|x86.Build.0 = Release|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|x86.ActiveCfg = Debug|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|x86.Build.0 = Debug|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|Any CPU.ActiveCfg = Release|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|x86.Build.0 = Debug|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Any CPU.ActiveCfg = Release|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|Mixed Platforms.Build.0 = Release|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|x86.ActiveCfg = Release|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||||
{A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|x86.Build.0 = Release|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|x86.ActiveCfg = Release|x86
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Debug|Any CPU.ActiveCfg = Debug|x86
|
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|x86.Build.0 = Release|x86
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Debug|x86.ActiveCfg = Debug|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Debug|x86.Build.0 = Debug|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Release|Any CPU.ActiveCfg = Release|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Release|Mixed Platforms.Build.0 = Release|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Release|x86.ActiveCfg = Release|x86
|
|
||||||
{CF670175-7099-4090-A330-EE25C7230139}.Release|x86.Build.0 = Release|x86
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -284,7 +284,11 @@ namespace CodeImp.DoomBuilder.Config
|
||||||
|
|
||||||
// Set sprite
|
// Set sprite
|
||||||
string suitablesprite = actor.FindSuitableSprite();
|
string suitablesprite = actor.FindSuitableSprite();
|
||||||
if(!string.IsNullOrEmpty(suitablesprite)) sprite = suitablesprite;
|
if(!string.IsNullOrEmpty(suitablesprite))
|
||||||
|
sprite = suitablesprite;
|
||||||
|
else//mxd
|
||||||
|
sprite = DataManager.INTERNAL_PREFIX + "unknownthing";
|
||||||
|
|
||||||
|
|
||||||
if(this.sprite.Length <= 8)
|
if(this.sprite.Length <= 8)
|
||||||
this.spritelongname = Lump.MakeLongName(this.sprite);
|
this.spritelongname = Lump.MakeLongName(this.sprite);
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private Bitmap bmp;
|
private Bitmap bmp;
|
||||||
private bool ispressed;
|
//private bool ispressed;
|
||||||
private bool ismouseinside;
|
private bool ismouseinside;
|
||||||
private MouseButtons button;
|
private MouseButtons button;
|
||||||
protected bool allowclear;
|
protected bool allowclear;
|
||||||
|
@ -97,7 +97,7 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
// Image clicked
|
// Image clicked
|
||||||
private void preview_Click(object sender, EventArgs e)
|
private void preview_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ispressed = false;
|
//ispressed = false;
|
||||||
preview.BackColor = SystemColors.Highlight;
|
preview.BackColor = SystemColors.Highlight;
|
||||||
ShowPreview(FindImage(name.Text));
|
ShowPreview(FindImage(name.Text));
|
||||||
if(button == MouseButtons.Right)
|
if(button == MouseButtons.Right)
|
||||||
|
@ -123,7 +123,7 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
button = e.Button;
|
button = e.Button;
|
||||||
if((button == MouseButtons.Left) || ((button == MouseButtons.Right) && allowclear))
|
if((button == MouseButtons.Left) || ((button == MouseButtons.Right) && allowclear))
|
||||||
{
|
{
|
||||||
ispressed = true;
|
//ispressed = true;
|
||||||
preview.BackColor = AdjustedColor(SystemColors.Highlight, 0.2f);
|
preview.BackColor = AdjustedColor(SystemColors.Highlight, 0.2f);
|
||||||
ShowPreview(FindImage(name.Text));
|
ShowPreview(FindImage(name.Text));
|
||||||
}
|
}
|
||||||
|
@ -132,14 +132,14 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
// Mouse released
|
// Mouse released
|
||||||
private void preview_MouseUp(object sender, MouseEventArgs e)
|
private void preview_MouseUp(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
ispressed = false;
|
//ispressed = false;
|
||||||
ShowPreview(FindImage(name.Text));
|
ShowPreview(FindImage(name.Text));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mouse leaves
|
// Mouse leaves
|
||||||
private void preview_MouseLeave(object sender, EventArgs e)
|
private void preview_MouseLeave(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ispressed = false;
|
//ispressed = false;
|
||||||
ismouseinside = false;
|
ismouseinside = false;
|
||||||
preview.BackColor = SystemColors.AppWorkspace;
|
preview.BackColor = SystemColors.AppWorkspace;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,8 +108,8 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
public event MarginClickHandler MarginClick;
|
public event MarginClickHandler MarginClick;
|
||||||
public event NeedShownHandler NeedShown;
|
public event NeedShownHandler NeedShown;
|
||||||
public event PaintedHandler Painted;
|
public event PaintedHandler Painted;
|
||||||
public event UserListSelectionHandler UserListSelection;
|
//public event UserListSelectionHandler UserListSelection;
|
||||||
public event URIDroppedHandler URIDropped;
|
//public event URIDroppedHandler URIDropped;
|
||||||
public event DwellStartHandler DwellStart;
|
public event DwellStartHandler DwellStart;
|
||||||
public event DwellEndHandler DwellEnd;
|
public event DwellEndHandler DwellEnd;
|
||||||
public event ZoomHandler Zoom;
|
public event ZoomHandler Zoom;
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
|
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private ICollection<Thing> things;
|
//private ICollection<Thing> things;
|
||||||
private List<TreeNode> nodes;
|
private List<TreeNode> nodes;
|
||||||
private ThingTypeInfo thinginfo;
|
private ThingTypeInfo thinginfo;
|
||||||
private bool doupdatenode;
|
private bool doupdatenode;
|
||||||
|
|
|
@ -1458,6 +1458,7 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
}
|
}
|
||||||
General.MainWindow.DisplayStatus(StatusType.Busy, "Reloading model definitions...");
|
General.MainWindow.DisplayStatus(StatusType.Busy, "Reloading model definitions...");
|
||||||
loadModeldefs(createActorsByClassList());
|
loadModeldefs(createActorsByClassList());
|
||||||
|
LoadModels();
|
||||||
|
|
||||||
//rebuild geometry if in Visual mode
|
//rebuild geometry if in Visual mode
|
||||||
if (General.Editing.Mode != null && General.Editing.Mode.GetType().Name == "BaseVisualMode") {
|
if (General.Editing.Mode != null && General.Editing.Mode.GetType().Name == "BaseVisualMode") {
|
||||||
|
|
|
@ -47,7 +47,7 @@ namespace CodeImp.DoomBuilder.Editing
|
||||||
private volatile bool storeondisk;
|
private volatile bool storeondisk;
|
||||||
private volatile bool isondisk;
|
private volatile bool isondisk;
|
||||||
private bool isdisposed;
|
private bool isdisposed;
|
||||||
private Dictionary<string, MemoryStream> customdata;
|
//private Dictionary<string, MemoryStream> customdata;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
|
||||||
internal Vector3 Scale;
|
internal Vector3 Scale;
|
||||||
internal float zOffset;
|
internal float zOffset;
|
||||||
|
|
||||||
|
internal float AngleOffset; //in radians
|
||||||
|
internal float PitchOffset; //in radians
|
||||||
|
internal float RollOffset; //in radians
|
||||||
|
|
||||||
internal ModeldefEntry() {
|
internal ModeldefEntry() {
|
||||||
ModelNames = new List<string>();
|
ModelNames = new List<string>();
|
||||||
TextureNames = new List<string>();
|
TextureNames = new List<string>();
|
||||||
|
|
|
@ -19,6 +19,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
string path = "";
|
string path = "";
|
||||||
Vector3 scale = new Vector3(1, 1, 1);
|
Vector3 scale = new Vector3(1, 1, 1);
|
||||||
float zOffset = 0;
|
float zOffset = 0;
|
||||||
|
float angleOffset = 0;
|
||||||
|
float pitchOffset = 0;
|
||||||
|
float rollOffset = 0;
|
||||||
|
|
||||||
string token;
|
string token;
|
||||||
bool gotErrors = false;
|
bool gotErrors = false;
|
||||||
|
|
||||||
|
@ -28,7 +32,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(token)) {
|
if (!string.IsNullOrEmpty(token)) {
|
||||||
token = parser.StripTokenQuotes(token).ToLowerInvariant(); //ANYTHING can be quoted...
|
token = parser.StripTokenQuotes(token).ToLowerInvariant(); //ANYTHING can be quoted...
|
||||||
//path
|
//path
|
||||||
if (token == "path") {
|
if (token == "path") {
|
||||||
parser.SkipWhitespace(true);
|
parser.SkipWhitespace(true);
|
||||||
path = parser.StripTokenQuotes(parser.ReadToken()).Replace("/", "\\");
|
path = parser.StripTokenQuotes(parser.ReadToken()).Replace("/", "\\");
|
||||||
|
@ -38,7 +42,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
gotErrors = true;
|
gotErrors = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//model
|
//model
|
||||||
} else if (token == "model") {
|
} else if (token == "model") {
|
||||||
parser.SkipWhitespace(true);
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
@ -57,7 +61,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//model path
|
//model path
|
||||||
token = parser.StripTokenQuotes(parser.ReadToken()).ToLowerInvariant();
|
token = parser.StripTokenQuotes(parser.ReadToken()).ToLowerInvariant();
|
||||||
if (string.IsNullOrEmpty(token)) {
|
if (string.IsNullOrEmpty(token)) {
|
||||||
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model name, but got '" + token + "'");
|
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model name, but got '" + token + "'");
|
||||||
|
@ -76,7 +80,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
//GZDoom allows models with identical modelIndex, it uses the last one encountered
|
//GZDoom allows models with identical modelIndex, it uses the last one encountered
|
||||||
modelNames[modelIndex] = token;
|
modelNames[modelIndex] = token;
|
||||||
}
|
}
|
||||||
//skin
|
//skin
|
||||||
} else if (token == "skin") {
|
} else if (token == "skin") {
|
||||||
parser.SkipWhitespace(true);
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
@ -95,7 +99,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//skin path
|
//skin path
|
||||||
token = parser.StripTokenQuotes(parser.ReadToken()).ToLowerInvariant();
|
token = parser.StripTokenQuotes(parser.ReadToken()).ToLowerInvariant();
|
||||||
if (string.IsNullOrEmpty(token)) {
|
if (string.IsNullOrEmpty(token)) {
|
||||||
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected skin name, but got '" + token + "'");
|
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected skin name, but got '" + token + "'");
|
||||||
|
@ -111,7 +115,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
//GZDoom allows skins with identical modelIndex, it uses the last one encountered
|
//GZDoom allows skins with identical modelIndex, it uses the last one encountered
|
||||||
textureNames[skinIndex] = token;
|
textureNames[skinIndex] = token;
|
||||||
}
|
}
|
||||||
//scale
|
//scale
|
||||||
} else if (token == "scale") {
|
} else if (token == "scale") {
|
||||||
parser.SkipWhitespace(true);
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
@ -142,7 +146,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
gotErrors = true;
|
gotErrors = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//zoffset
|
//zoffset
|
||||||
} else if (token == "zoffset") {
|
} else if (token == "zoffset") {
|
||||||
parser.SkipWhitespace(true);
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
@ -153,7 +157,40 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
gotErrors = true;
|
gotErrors = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//frameindex
|
//angleoffset
|
||||||
|
} else if (token == "angleoffset") {
|
||||||
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
token = parser.StripTokenQuotes(parser.ReadToken());
|
||||||
|
if (!parser.ReadSignedFloat(token, ref angleOffset)) {
|
||||||
|
// Not numeric!
|
||||||
|
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected AngleOffset value, but got '" + token + "'");
|
||||||
|
gotErrors = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//pitchoffset
|
||||||
|
} else if (token == "pitchoffset") {
|
||||||
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
token = parser.StripTokenQuotes(parser.ReadToken());
|
||||||
|
if (!parser.ReadSignedFloat(token, ref pitchOffset)) {
|
||||||
|
// Not numeric!
|
||||||
|
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected PitchOffset value, but got '" + token + "'");
|
||||||
|
gotErrors = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//rolloffset
|
||||||
|
} else if (token == "rolloffset") {
|
||||||
|
parser.SkipWhitespace(true);
|
||||||
|
|
||||||
|
token = parser.StripTokenQuotes(parser.ReadToken());
|
||||||
|
if (!parser.ReadSignedFloat(token, ref rollOffset)) {
|
||||||
|
// Not numeric!
|
||||||
|
GZBuilder.GZGeneral.LogAndTraceWarning("Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected RollOffset value, but got '" + token + "'");
|
||||||
|
gotErrors = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//frameindex
|
||||||
} else if (token == "frameindex") {
|
} else if (token == "frameindex") {
|
||||||
//parsed all required fields. if got more than one model - find which one(s) should be displayed
|
//parsed all required fields. if got more than one model - find which one(s) should be displayed
|
||||||
int len = modelNames.GetLength(0);
|
int len = modelNames.GetLength(0);
|
||||||
|
@ -262,14 +299,16 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gotErrors)
|
if (gotErrors) return null;
|
||||||
return null;
|
|
||||||
|
|
||||||
//classname is set in ModeldefParser
|
//classname is set in ModeldefParser
|
||||||
ModeldefEntry mde = new ModeldefEntry();
|
ModeldefEntry mde = new ModeldefEntry();
|
||||||
mde.Path = path;
|
mde.Path = path;
|
||||||
mde.Scale = scale;
|
mde.Scale = scale;
|
||||||
mde.zOffset = zOffset;
|
mde.zOffset = zOffset;
|
||||||
|
mde.AngleOffset = angleOffset * (float)Math.PI / 180.0f;
|
||||||
|
mde.RollOffset = rollOffset * (float)Math.PI / 180.0f;
|
||||||
|
mde.PitchOffset = pitchOffset * (float)Math.PI / 180.0f;
|
||||||
|
|
||||||
for (int i = 0; i < textureNames.Length; i++) {
|
for (int i = 0; i < textureNames.Length; i++) {
|
||||||
if (textureNames[i] != null && modelNames[i] != null) {
|
if (textureNames[i] != null && modelNames[i] != null) {
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace CodeImp.DoomBuilder.GZBuilder
|
||||||
|
|
||||||
//version
|
//version
|
||||||
public const float Version = 1.12f;
|
public const float Version = 1.12f;
|
||||||
public const char Revision = ' ';
|
public const char Revision = 'a';
|
||||||
|
|
||||||
//debug console
|
//debug console
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
|
@ -6,16 +6,15 @@ using CodeImp.DoomBuilder.Geometry;
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
||||||
{
|
{
|
||||||
public class GZModel {
|
internal class GZModel {
|
||||||
public List<Mesh> Meshes;
|
internal List<Mesh> Meshes;
|
||||||
public List<Texture> Textures;
|
internal List<Texture> Textures;
|
||||||
public byte NUM_MESHES; //can't be greater than 255, can it?
|
internal byte NUM_MESHES; //can't be greater than 255, can it?
|
||||||
public Vector3[] BoundingBox;
|
internal Vector3[] BoundingBox;
|
||||||
public List<IndexBuffer> Indeces2D;
|
internal List<IndexBuffer> Indeces2D;
|
||||||
public List<short> NumIndeces2D;
|
internal List<short> NumIndeces2D;
|
||||||
public float Angle = 0; //crappy way to set rotation to md2 models...
|
|
||||||
|
|
||||||
public GZModel() {
|
internal GZModel() {
|
||||||
Meshes = new List<Mesh>();
|
Meshes = new List<Mesh>();
|
||||||
Textures = new List<Texture>();
|
Textures = new List<Texture>();
|
||||||
Indeces2D = new List<IndexBuffer>();
|
Indeces2D = new List<IndexBuffer>();
|
||||||
|
|
|
@ -195,12 +195,49 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
||||||
if (start + ofsNormal != br.BaseStream.Position)
|
if (start + ofsNormal != br.BaseStream.Position)
|
||||||
br.BaseStream.Position = start + ofsNormal;
|
br.BaseStream.Position = start + ofsNormal;
|
||||||
|
|
||||||
|
//rotation angles
|
||||||
|
float angleOfsetCos = (float)Math.Cos(mde.AngleOffset);
|
||||||
|
float angleOfsetSin = (float)Math.Sin(mde.AngleOffset);
|
||||||
|
float pitchOfsetCos = (float)Math.Cos(-mde.PitchOffset);
|
||||||
|
float pitchOfsetSin = (float)Math.Sin(-mde.PitchOffset);
|
||||||
|
float rollOfsetCos = (float)Math.Cos(mde.RollOffset);
|
||||||
|
float rollOfsetSin = (float)Math.Sin(mde.RollOffset);
|
||||||
|
|
||||||
for (int i = vertexOffset; i < vertexOffset + numVerts; i++) {
|
for (int i = vertexOffset; i < vertexOffset + numVerts; i++) {
|
||||||
WorldVertex v = vertList[i];
|
WorldVertex v = vertList[i];
|
||||||
|
|
||||||
v.y = -(float)br.ReadInt16() / 64 * mde.Scale.X;
|
//read vertex
|
||||||
v.x = (float)br.ReadInt16() / 64 * mde.Scale.Y;
|
v.y = -(float)br.ReadInt16() / 64;
|
||||||
v.z = (float)br.ReadInt16() / 64 * mde.Scale.Z + mde.zOffset;
|
v.x = (float)br.ReadInt16() / 64;
|
||||||
|
v.z = (float)br.ReadInt16() / 64;
|
||||||
|
|
||||||
|
//rotate it
|
||||||
|
if (mde.AngleOffset != 0) {
|
||||||
|
float rx = angleOfsetCos * v.x - angleOfsetSin * v.y;
|
||||||
|
float ry = angleOfsetSin * v.x + angleOfsetCos * v.y;
|
||||||
|
v.y = ry;
|
||||||
|
v.x = rx;
|
||||||
|
}
|
||||||
|
if (mde.PitchOffset != 0) {
|
||||||
|
float ry = pitchOfsetCos * v.y - pitchOfsetSin * v.z;
|
||||||
|
float rz = pitchOfsetSin * v.y + pitchOfsetCos * v.z;
|
||||||
|
v.z = rz;
|
||||||
|
v.y = ry;
|
||||||
|
}
|
||||||
|
if (mde.RollOffset != 0) {
|
||||||
|
float rx = rollOfsetCos * v.x - rollOfsetSin * v.z;
|
||||||
|
float rz = rollOfsetSin * v.x + rollOfsetCos * v.z;
|
||||||
|
v.z = rz;
|
||||||
|
v.x = rx;
|
||||||
|
}
|
||||||
|
|
||||||
|
//scale it
|
||||||
|
v.y *= mde.Scale.X;
|
||||||
|
v.x *= mde.Scale.Y;
|
||||||
|
v.z *= mde.Scale.Z;
|
||||||
|
|
||||||
|
//add zOffset
|
||||||
|
v.z += mde.zOffset;
|
||||||
|
|
||||||
//bounding box
|
//bounding box
|
||||||
BoundingBoxTools.UpdateBoundingBoxSizes(ref bbs, v);
|
BoundingBoxTools.UpdateBoundingBoxSizes(ref bbs, v);
|
||||||
|
@ -286,14 +323,49 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
||||||
|
|
||||||
s.Position += 16; //frame name
|
s.Position += 16; //frame name
|
||||||
|
|
||||||
|
//rotation angles
|
||||||
|
float angle = mde.AngleOffset - 0.5f * (float)Math.PI; //subtract 90 degrees to get correct rotation
|
||||||
|
float angleOfsetCos = (float)Math.Cos(angle);
|
||||||
|
float angleOfsetSin = (float)Math.Sin(angle);
|
||||||
|
float pitchOfsetCos = (float)Math.Cos(-mde.PitchOffset);
|
||||||
|
float pitchOfsetSin = (float)Math.Sin(-mde.PitchOffset);
|
||||||
|
float rollOfsetCos = (float)Math.Cos(mde.RollOffset);
|
||||||
|
float rollOfsetSin = (float)Math.Sin(mde.RollOffset);
|
||||||
|
|
||||||
//verts
|
//verts
|
||||||
for (int i = 0; i < num_verts; i++) {
|
for (int i = 0; i < num_verts; i++) {
|
||||||
//pos
|
|
||||||
WorldVertex v = new WorldVertex();
|
WorldVertex v = new WorldVertex();
|
||||||
|
|
||||||
v.x = ((float)br.ReadByte() * scale.X + translate.X) * mde.Scale.X;
|
v.x = ((float)br.ReadByte() * scale.X + translate.X);
|
||||||
v.y = ((float)br.ReadByte() * scale.Y + translate.Y) * mde.Scale.Y;
|
v.y = ((float)br.ReadByte() * scale.Y + translate.Y);
|
||||||
v.z = ((float)br.ReadByte() * scale.Z + translate.Z) * mde.Scale.Z + mde.zOffset;
|
v.z = ((float)br.ReadByte() * scale.Z + translate.Z);
|
||||||
|
|
||||||
|
//rotate it
|
||||||
|
float rx = angleOfsetCos * v.x - angleOfsetSin * v.y;
|
||||||
|
float ry = angleOfsetSin * v.x + angleOfsetCos * v.y;
|
||||||
|
v.y = ry;
|
||||||
|
v.x = rx;
|
||||||
|
|
||||||
|
if (mde.PitchOffset != 0) {
|
||||||
|
ry = pitchOfsetCos * v.y - pitchOfsetSin * v.z;
|
||||||
|
float rz = pitchOfsetSin * v.y + pitchOfsetCos * v.z;
|
||||||
|
v.z = rz;
|
||||||
|
v.y = ry;
|
||||||
|
}
|
||||||
|
if (mde.RollOffset != 0) {
|
||||||
|
rx = rollOfsetCos * v.x - rollOfsetSin * v.z;
|
||||||
|
float rz = rollOfsetSin * v.x + rollOfsetCos * v.z;
|
||||||
|
v.z = rz;
|
||||||
|
v.x = rx;
|
||||||
|
}
|
||||||
|
|
||||||
|
//scale it
|
||||||
|
v.x *= mde.Scale.X;
|
||||||
|
v.y *= mde.Scale.Y;
|
||||||
|
v.z *= mde.Scale.Z;
|
||||||
|
|
||||||
|
//add zOffset
|
||||||
|
v.z += mde.zOffset;
|
||||||
|
|
||||||
vertList.Add(v);
|
vertList.Add(v);
|
||||||
|
|
||||||
|
@ -340,7 +412,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
||||||
|
|
||||||
mde.Model.Indeces2D.Add(indeces2d);
|
mde.Model.Indeces2D.Add(indeces2d);
|
||||||
mde.Model.NumIndeces2D.Add((short)polyIndecesList.Count);
|
mde.Model.NumIndeces2D.Add((short)polyIndecesList.Count);
|
||||||
mde.Model.Angle = -90.0f * (float)Math.PI / 180.0f;
|
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1132,10 +1132,23 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
foreach(KeyValuePair<Vector2D, Thing> group in thingsWithModel){
|
foreach(KeyValuePair<Vector2D, Thing> group in thingsWithModel){
|
||||||
ModeldefEntry mde = General.Map.Data.ModeldefEntries[group.Value.Type];
|
ModeldefEntry mde = General.Map.Data.ModeldefEntries[group.Value.Type];
|
||||||
|
|
||||||
if (mde.Model != null)
|
if (mde.Model != null) {//render model
|
||||||
RenderModel(mde.Model, group.Key, group.Value.Angle + mde.Model.Angle, group.Value.Selected);
|
//wire color
|
||||||
else
|
graphics.Shaders.Things2D.FillColor = group.Value.Selected ? General.Colors.Selection.ToColorValue() : General.Colors.ModelWireframe.ToColorValue();
|
||||||
|
|
||||||
|
for (int i = 0; i < mde.Model.NUM_MESHES; i++) {
|
||||||
|
graphics.Shaders.Things2D.SetTransformSettings(group.Key, group.Value.Angle, scale);
|
||||||
|
graphics.Shaders.Things2D.ApplySettings();
|
||||||
|
|
||||||
|
// Draw
|
||||||
|
graphics.Device.SetStreamSource(0, mde.Model.Meshes[i].VertexBuffer, 0, WorldVertex.Stride);
|
||||||
|
graphics.Device.Indices = mde.Model.Indeces2D[i];
|
||||||
|
graphics.Device.DrawIndexedPrimitives(PrimitiveType.LineList, 0, 0, mde.Model.Meshes[i].VertexCount, 0, mde.Model.NumIndeces2D[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
group.Value.IsModel = General.Map.Data.LoadModelForThing(group.Value);
|
group.Value.IsModel = General.Map.Data.LoadModelForThing(group.Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
graphics.Shaders.Things2D.EndPass();
|
graphics.Shaders.Things2D.EndPass();
|
||||||
}
|
}
|
||||||
|
@ -1157,22 +1170,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
{
|
{
|
||||||
RenderThingsBatch(things, alpha, false, new PixelColor());
|
RenderThingsBatch(things, alpha, false, new PixelColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
|
||||||
public void RenderModel(GZModel model, Vector2D modelPos, float modelAngle, bool selected) {
|
|
||||||
//wire color
|
|
||||||
graphics.Shaders.Things2D.FillColor = selected ? General.Colors.Selection.ToColorValue() : General.Colors.ModelWireframe.ToColorValue();
|
|
||||||
|
|
||||||
for (int i = 0; i < model.NUM_MESHES; i++) {
|
|
||||||
graphics.Shaders.Things2D.SetTransformSettings(modelPos, modelAngle, scale);
|
|
||||||
graphics.Shaders.Things2D.ApplySettings();
|
|
||||||
|
|
||||||
// Draw
|
|
||||||
graphics.Device.SetStreamSource(0, model.Meshes[i].VertexBuffer, 0, WorldVertex.Stride);
|
|
||||||
graphics.Device.Indices = model.Indeces2D[i];
|
|
||||||
graphics.Device.DrawIndexedPrimitives(PrimitiveType.LineList, 0, 0, model.Meshes[i].VertexCount, 0, model.NumIndeces2D[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -1031,7 +1031,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the matrix for positioning / rotation
|
// Create the matrix for positioning / rotation
|
||||||
world = Matrix.Multiply(t.Orientation, Matrix.RotationZ(t.Thing.Angle + group.Key.Model.Angle));
|
world = Matrix.Multiply(t.Orientation, Matrix.RotationZ(t.Thing.Angle));
|
||||||
world = Matrix.Multiply(world, t.Position);
|
world = Matrix.Multiply(world, t.Position);
|
||||||
ApplyMatrices3D();
|
ApplyMatrices3D();
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
{
|
{
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private bool setup;
|
//private bool setup;
|
||||||
private int value;
|
private int value;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -86,10 +86,10 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Setup from EnumList
|
// Setup from EnumList
|
||||||
public void Setup(int value)
|
public void Setup(int value)
|
||||||
{
|
{
|
||||||
setup = true;
|
//setup = true;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
angle.Value = value;
|
angle.Value = value;
|
||||||
setup = false;
|
//setup = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This shows the dialog
|
// This shows the dialog
|
||||||
|
|
10
Source/Core/Windows/ErrorsForm.Designer.cs
generated
10
Source/Core/Windows/ErrorsForm.Designer.cs
generated
|
@ -29,7 +29,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
this.copyselected = new System.Windows.Forms.Button();
|
this.copyselected = new System.Windows.Forms.Button();
|
||||||
this.clearlist = new System.Windows.Forms.Button();
|
this.clearlist = new System.Windows.Forms.Button();
|
||||||
this.close = new System.Windows.Forms.Button();
|
this.close = new System.Windows.Forms.Button();
|
||||||
|
@ -44,6 +44,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// copyselected
|
// copyselected
|
||||||
//
|
//
|
||||||
this.copyselected.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.copyselected.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.copyselected.Enabled = false;
|
||||||
this.copyselected.Location = new System.Drawing.Point(12, 416);
|
this.copyselected.Location = new System.Drawing.Point(12, 416);
|
||||||
this.copyselected.Name = "copyselected";
|
this.copyselected.Name = "copyselected";
|
||||||
this.copyselected.Size = new System.Drawing.Size(122, 25);
|
this.copyselected.Size = new System.Drawing.Size(122, 25);
|
||||||
|
@ -116,9 +117,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
this.grid.Name = "grid";
|
this.grid.Name = "grid";
|
||||||
this.grid.ReadOnly = true;
|
this.grid.ReadOnly = true;
|
||||||
this.grid.RowHeadersVisible = false;
|
this.grid.RowHeadersVisible = false;
|
||||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft;
|
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft;
|
||||||
dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(2, 4, 2, 5);
|
dataGridViewCellStyle2.Padding = new System.Windows.Forms.Padding(2, 4, 2, 5);
|
||||||
this.grid.RowsDefaultCellStyle = dataGridViewCellStyle1;
|
this.grid.RowsDefaultCellStyle = dataGridViewCellStyle2;
|
||||||
this.grid.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
this.grid.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||||
this.grid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
this.grid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||||
this.grid.ShowCellErrors = false;
|
this.grid.ShowCellErrors = false;
|
||||||
|
@ -128,6 +129,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
this.grid.Size = new System.Drawing.Size(732, 395);
|
this.grid.Size = new System.Drawing.Size(732, 395);
|
||||||
this.grid.StandardTab = true;
|
this.grid.StandardTab = true;
|
||||||
this.grid.TabIndex = 5;
|
this.grid.TabIndex = 5;
|
||||||
|
this.grid.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.grid_CellContentClick);
|
||||||
//
|
//
|
||||||
// iconcolumn
|
// iconcolumn
|
||||||
//
|
//
|
||||||
|
|
|
@ -146,5 +146,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
grid.Rows[0].Selected = false;
|
grid.Rows[0].Selected = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void grid_CellContentClick(object sender, DataGridViewCellEventArgs e) {
|
||||||
|
copyselected.Enabled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -17,8 +17,11 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
|
|
||||||
public override string Name { get { return "UDMF Controls"; } }
|
public override string Name { get { return "UDMF Controls"; } }
|
||||||
|
|
||||||
private UDMFControlsForm form;
|
//settings
|
||||||
|
private int scaleReange;
|
||||||
|
public int ScaleReange { get { return scaleReange; } }
|
||||||
|
|
||||||
|
private UDMFControlsForm form;
|
||||||
private Point formLocation; //used to keep form's location constant
|
private Point formLocation; //used to keep form's location constant
|
||||||
|
|
||||||
public override void OnInitialize() {
|
public override void OnInitialize() {
|
||||||
|
@ -31,27 +34,12 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
me = this;
|
me = this;
|
||||||
|
|
||||||
General.Actions.BindMethods(this);
|
General.Actions.BindMethods(this);
|
||||||
}
|
|
||||||
|
|
||||||
/*public override void OnEditKeyDown(KeyEventArgs e) {
|
scaleReange = General.Settings.ReadPluginSetting("scalerange", 2);
|
||||||
//dbg
|
if (scaleReange < 1) scaleReange = 2;
|
||||||
GZBuilder.GZGeneral.Trace("OnEditKeyDown");
|
General.Settings.WritePluginSetting("scalerange", scaleReange); //not working when called from Dispose()...
|
||||||
|
|
||||||
base.OnEditKeyDown(e);
|
|
||||||
if(form != null){
|
|
||||||
form.FineMovement = General.Interface.ShiftState;
|
|
||||||
form.FastMovement = General.Interface.CtrlState;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnEditKeyUp(KeyEventArgs e) {
|
|
||||||
base.OnEditKeyUp(e);
|
|
||||||
if (form != null) {
|
|
||||||
form.FineMovement = General.Interface.ShiftState;
|
|
||||||
form.FastMovement = General.Interface.CtrlState;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public override void Dispose() {
|
public override void Dispose() {
|
||||||
base.Dispose();
|
base.Dispose();
|
||||||
General.Actions.UnbindMethods(this);
|
General.Actions.UnbindMethods(this);
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
|
|
||||||
public float Value {
|
public float Value {
|
||||||
get {
|
get {
|
||||||
return (float)trackBar1.Value / 10f;
|
return (float)Math.Round(numericUpDown1.Value, 1);
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
blockEvents = true;
|
blockEvents = true;
|
||||||
|
@ -28,9 +28,9 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int previousValue;
|
private float previousValue;
|
||||||
private int delta;
|
private float delta;
|
||||||
public float Delta { get { return (float)delta / 10f; } }
|
public float Delta { get { return delta; } }
|
||||||
|
|
||||||
private bool showLabels = true;
|
private bool showLabels = true;
|
||||||
public bool ShowLabels {
|
public bool ShowLabels {
|
||||||
|
@ -43,14 +43,14 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
labelMax.Visible = showLabels;
|
labelMax.Visible = showLabels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public FloatSlider() {
|
public FloatSlider() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
ShowLabels = showLabels;
|
ShowLabels = showLabels;
|
||||||
numericUpDown1.DecimalPlaces = 1;
|
numericUpDown1.DecimalPlaces = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetLimits(float min, float max, bool doubledLimits) {
|
public void SetLimits(float min, float max, bool extendedLimits) {
|
||||||
blockEvents = true;
|
blockEvents = true;
|
||||||
|
|
||||||
trackBar1.Value = General.Clamp(trackBar1.Value, (int)(min * 10), (int)(max * 10));
|
trackBar1.Value = General.Clamp(trackBar1.Value, (int)(min * 10), (int)(max * 10));
|
||||||
|
@ -62,9 +62,9 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
|
|
||||||
numericUpDown1.Value = (decimal)General.Clamp((float)numericUpDown1.Value, min, max);
|
numericUpDown1.Value = (decimal)General.Clamp((float)numericUpDown1.Value, min, max);
|
||||||
|
|
||||||
if (doubledLimits) {
|
if (extendedLimits) {
|
||||||
numericUpDown1.Minimum = (decimal)(min * 10);
|
numericUpDown1.Minimum = (decimal)(min * 32);
|
||||||
numericUpDown1.Maximum = (decimal)(max * 10);
|
numericUpDown1.Maximum = (decimal)(max * 32);
|
||||||
} else {
|
} else {
|
||||||
numericUpDown1.Minimum = (decimal)min;
|
numericUpDown1.Minimum = (decimal)min;
|
||||||
numericUpDown1.Maximum = (decimal)max;
|
numericUpDown1.Maximum = (decimal)max;
|
||||||
|
@ -75,21 +75,19 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
|
|
||||||
//events
|
//events
|
||||||
private void trackBar1_ValueChanged(object sender, EventArgs e) {
|
private void trackBar1_ValueChanged(object sender, EventArgs e) {
|
||||||
int value = ((TrackBar)sender).Value;
|
if (!blockEvents) numericUpDown1.Value = Math.Round((decimal)(trackBar1.Value / 10.0), 1);
|
||||||
delta = value - previousValue;
|
|
||||||
previousValue = value;
|
|
||||||
|
|
||||||
numericUpDown1.Value = Math.Round((decimal)(value / 10.0), 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void numericUpDown1_ValueChanged(object sender, EventArgs e) {
|
private void numericUpDown1_ValueChanged(object sender, EventArgs e) {
|
||||||
float val = (float)((NumericUpDown)sender).Value;
|
float value = (float)Math.Round(numericUpDown1.Value, 1);
|
||||||
|
delta = (float)Math.Round(value - previousValue, 1);
|
||||||
|
previousValue = value;
|
||||||
|
|
||||||
if (!blockEvents && OnValueChanged != null)
|
if (!blockEvents && OnValueChanged != null)
|
||||||
OnValueChanged(this, EventArgs.Empty);
|
OnValueChanged(this, EventArgs.Empty);
|
||||||
|
|
||||||
blockEvents = true;
|
blockEvents = true;
|
||||||
trackBar1.Value = General.Clamp((int)(val * 10), trackBar1.Minimum, trackBar1.Maximum);
|
trackBar1.Value = General.Clamp((int)(value * 10), trackBar1.Minimum, trackBar1.Maximum);
|
||||||
blockEvents = false;
|
blockEvents = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,19 +10,18 @@ using System.Globalization;
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.UDMFControls
|
namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
{
|
{
|
||||||
public partial class IntSlider : UserControl {
|
public partial class IntSlider : UserControl
|
||||||
|
{
|
||||||
|
|
||||||
private bool blockEvents;
|
private bool blockEvents;
|
||||||
public event EventHandler OnValueChanged;
|
public event EventHandler OnValueChanged;
|
||||||
|
|
||||||
private int previousValue;
|
private int previousValue;
|
||||||
public int Value {
|
public int Value {
|
||||||
get
|
get {
|
||||||
{
|
return (int)numericUpDown1.Value;
|
||||||
return (int)numericUpDown1.Value;
|
|
||||||
}
|
}
|
||||||
set
|
set {
|
||||||
{
|
|
||||||
blockEvents = true;
|
blockEvents = true;
|
||||||
|
|
||||||
previousValue = General.Clamp(value, (int)numericUpDown1.Minimum, (int)numericUpDown1.Maximum);
|
previousValue = General.Clamp(value, (int)numericUpDown1.Minimum, (int)numericUpDown1.Maximum);
|
||||||
|
@ -31,7 +30,8 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Delta { get { return trackBar1.Value - previousValue; }}
|
private int delta;
|
||||||
|
public int Delta { get { return delta; } }
|
||||||
|
|
||||||
private bool showLabels;
|
private bool showLabels;
|
||||||
public bool ShowLabels {
|
public bool ShowLabels {
|
||||||
|
@ -44,13 +44,12 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
labelMax.Visible = showLabels;
|
labelMax.Visible = showLabels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IntSlider() {
|
public IntSlider() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetLimits(int min, int max) {
|
public void SetLimits(int min, int max) {
|
||||||
//bool blockEventsStatus = blockEvents;
|
|
||||||
blockEvents = true;
|
blockEvents = true;
|
||||||
|
|
||||||
trackBar1.Value = General.Clamp(trackBar1.Value, min, max);
|
trackBar1.Value = General.Clamp(trackBar1.Value, min, max);
|
||||||
|
@ -64,24 +63,24 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
numericUpDown1.Minimum = min;
|
numericUpDown1.Minimum = min;
|
||||||
numericUpDown1.Maximum = max;
|
numericUpDown1.Maximum = max;
|
||||||
|
|
||||||
//blockEvents = blockEventsStatus;
|
|
||||||
blockEvents = false;
|
blockEvents = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//events
|
//events
|
||||||
private void trackBar1_ValueChanged(object sender, EventArgs e) {
|
private void trackBar1_ValueChanged(object sender, EventArgs e) {
|
||||||
numericUpDown1.Value = ((TrackBar)sender).Value;
|
if (!blockEvents) numericUpDown1.Value = ((TrackBar)sender).Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void numericUpDown1_ValueChanged(object sender, EventArgs e) {
|
private void numericUpDown1_ValueChanged(object sender, EventArgs e) {
|
||||||
int val = (int)((NumericUpDown)sender).Value;
|
int value = (int)((NumericUpDown)sender).Value;
|
||||||
|
delta = value - previousValue;
|
||||||
|
previousValue = value;
|
||||||
|
|
||||||
if (!blockEvents && OnValueChanged != null)
|
if (!blockEvents && OnValueChanged != null)
|
||||||
OnValueChanged(this, EventArgs.Empty);
|
OnValueChanged(this, EventArgs.Empty);
|
||||||
|
|
||||||
previousValue = trackBar1.Value;
|
|
||||||
blockEvents = true;
|
blockEvents = true;
|
||||||
trackBar1.Value = General.Clamp(val, trackBar1.Minimum, trackBar1.Maximum); //clamp it!
|
trackBar1.Value = General.Clamp(value, trackBar1.Minimum, trackBar1.Maximum);
|
||||||
blockEvents = false;
|
blockEvents = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,9 +62,10 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
floatSlider2.Value = val;
|
floatSlider2.Value = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
|
|
||||||
delta.x = (float)Math.Round(val - prevValues.x, 1);
|
delta.x = (float)Math.Round(val - prevValues.x, 1);
|
||||||
prevValues.x = val;
|
prevValues.x = val;
|
||||||
|
|
||||||
|
if (OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void floatSlider2_OnValueChanged(object sender, EventArgs e) {
|
private void floatSlider2_OnValueChanged(object sender, EventArgs e) {
|
||||||
|
@ -76,9 +77,10 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
floatSlider1.Value = val;
|
floatSlider1.Value = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
|
|
||||||
delta.y = (float)Math.Round(val - prevValues.y, 1);
|
delta.y = (float)Math.Round(val - prevValues.y, 1);
|
||||||
prevValues.y = val;
|
prevValues.y = val;
|
||||||
|
|
||||||
|
if (OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button1_Click(object sender, EventArgs e) {
|
private void button1_Click(object sender, EventArgs e) {
|
||||||
|
|
|
@ -142,7 +142,8 @@ namespace CodeImp.DoomBuilder.UDMFControls
|
||||||
//set sliders limits
|
//set sliders limits
|
||||||
sliderDesaturation.SetLimits(0f, 1f, false);
|
sliderDesaturation.SetLimits(0f, 1f, false);
|
||||||
sliderAlpha.SetLimits(0f, 1f, false);
|
sliderAlpha.SetLimits(0f, 1f, false);
|
||||||
scaleControl.SetLimits(-2f, 2f);
|
float scaleRange = BuilderPlug.Me.ScaleReange;
|
||||||
|
scaleControl.SetLimits(-scaleRange, scaleRange);
|
||||||
|
|
||||||
cbRenderStyle.Items.AddRange(new object[] { "Translucent", "Add" });
|
cbRenderStyle.Items.AddRange(new object[] { "Translucent", "Add" });
|
||||||
cbRenderStyle.SelectedIndex = 0;
|
cbRenderStyle.SelectedIndex = 0;
|
||||||
|
|
Loading…
Reference in a new issue