UltimateZoneBuilder/Source/Plugins/BuilderEffects/Interface/ObjImportSettingsForm.cs
2017-01-15 00:35:40 +02:00

92 lines
2.8 KiB
C#
Executable file

#region ================== Namespaces
using System;
using System.IO;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Windows;
#endregion
namespace CodeImp.DoomBuilder.BuilderEffects
{
public partial class ObjImportSettingsForm : DelayedForm
{
#region ================== Variables
private ImportObjAsTerrainMode.UpAxis axis;
private bool slopessupported;
#endregion
#region ================== Properties
internal string FilePath { get { return tbImportPath.Text.Trim(); } }
internal ImportObjAsTerrainMode.UpAxis UpAxis { get { return axis; } }
internal float ObjScale { get { return (float)nudScale.Value; } }
internal bool UseVertexHeights { get { return slopessupported && cbusevertexheight.Checked; } }
//todo: floor/ceiling textures? height offsets? ceiling extra height?
#endregion
public ObjImportSettingsForm()
{
InitializeComponent();
//restore settings
axis = (ImportObjAsTerrainMode.UpAxis)General.Settings.ReadPluginSetting("objexportupaxis", 0);
nudScale.Value = (decimal)General.Settings.ReadPluginSetting("objexportscale", 1.0f);
slopessupported = (General.Map.UDMF || General.Map.Data.GetThingInfoEx(ImportObjAsTerrainMode.VERTEX_HEIGHT_THING_TYPE) != null);
if(slopessupported)
cbusevertexheight.Checked = General.Settings.ReadPluginSetting("objusevertexheights", true);
else
cbusevertexheight.Enabled = false;
switch(axis)
{
case ImportObjAsTerrainMode.UpAxis.X: axisx.Checked = true; break;
case ImportObjAsTerrainMode.UpAxis.Y: axisy.Checked = true; break;
case ImportObjAsTerrainMode.UpAxis.Z: axisz.Checked = true; break;
default: axisy.Checked = true; break;
}
}
#region ================== Events
private void browse_Click(object sender, EventArgs e)
{
if(openFileDialog.ShowDialog() == DialogResult.OK) tbImportPath.Text = openFileDialog.FileName;
}
private void import_Click(object sender, EventArgs e)
{
if(nudScale.Value == 0)
{
MessageBox.Show("Scale should not be zero!");
return;
}
if(!File.Exists(tbImportPath.Text))
{
MessageBox.Show("Selected path does not exist!");
return;
}
axis = (axisy.Checked ? ImportObjAsTerrainMode.UpAxis.Y : (axisz.Checked ? ImportObjAsTerrainMode.UpAxis.Z : ImportObjAsTerrainMode.UpAxis.X));
//save settings
General.Settings.WritePluginSetting("objexportupaxis", (int)axis);
General.Settings.WritePluginSetting("objexportscale", (float)nudScale.Value);
if(slopessupported) General.Settings.WritePluginSetting("objusevertexheights", cbusevertexheight.Checked);
this.DialogResult = DialogResult.OK;
this.Close();
}
private void cancel_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
}
}