Content Compiler:

- Began implementing Preview
This commit is contained in:
SND\eagleeyestudios_cp 2012-10-18 18:52:05 +00:00 committed by Konstantin Koch
parent 9d997dd43d
commit 93c729e31f
5 changed files with 142 additions and 3 deletions

View File

@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ANX.Framework", "ANX.Framework\ANX.Framework.csproj", "{6899F0C9-70B9-4EB0-9DD3-E598D4BE3E35}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ANX.Framework.TestCenter", "ANX.Framework.TestCenter\ANX.Framework.TestCenter.csproj", "{7344BBEB-A1C7-43A8-B68E-D42B81973DA9}"
@ -248,17 +248,21 @@ Global
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|Any CPU.ActiveCfg = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|Any CPU.Build.0 = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|ARM.ActiveCfg = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|ARM.Build.0 = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|Mixed Platforms.Build.0 = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|x64.ActiveCfg = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|x64.Build.0 = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|x86.ActiveCfg = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Debug|x86.Build.0 = Debug|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|Any CPU.ActiveCfg = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|Any CPU.Build.0 = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|ARM.ActiveCfg = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|ARM.Build.0 = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|Mixed Platforms.ActiveCfg = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|Mixed Platforms.Build.0 = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|x64.ActiveCfg = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|x64.Build.0 = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|x86.ActiveCfg = Release|x86
{ECBF60CB-1CF0-4F92-8963-E73115B04B43}.Release|x86.Build.0 = Release|x86
{9D8DC781-2E0D-4348-BAD9-745F91428A3F}.Debug|Any CPU.ActiveCfg = Debug|x86

View File

@ -152,6 +152,7 @@
<Compile Include="Dialogues\PreviewScreen.Designer.cs">
<DependentUpon>PreviewScreen.cs</DependentUpon>
</Compile>
<Compile Include="FakeBuildLogger.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
@ -191,6 +192,9 @@
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TreeViewExtensions.cs" />
<EmbeddedResource Include="Dialogues\PreviewScreen.resx">
<DependentUpon>PreviewScreen.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>

View File

@ -31,6 +31,8 @@
this.buttonQuit = new System.Windows.Forms.Button();
this.labelTitle = new System.Windows.Forms.Label();
this.drawSurface = new System.Windows.Forms.Panel();
this.labelStatus = new System.Windows.Forms.Label();
this.drawSurface.SuspendLayout();
this.SuspendLayout();
//
// buttonQuit
@ -69,11 +71,21 @@
//
// drawSurface
//
this.drawSurface.Controls.Add(this.labelStatus);
this.drawSurface.Location = new System.Drawing.Point(12, 27);
this.drawSurface.Name = "drawSurface";
this.drawSurface.Size = new System.Drawing.Size(595, 410);
this.drawSurface.TabIndex = 4;
//
// labelStatus
//
this.labelStatus.Location = new System.Drawing.Point(129, 166);
this.labelStatus.Name = "labelStatus";
this.labelStatus.Size = new System.Drawing.Size(337, 78);
this.labelStatus.TabIndex = 0;
this.labelStatus.Text = "Loading Preview...";
this.labelStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// PreviewScreen
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -90,6 +102,8 @@
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Preview";
this.Load += new System.EventHandler(this.PreviewScreenLoad);
this.drawSurface.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -99,5 +113,6 @@
private System.Windows.Forms.Button buttonQuit;
private System.Windows.Forms.Label labelTitle;
private System.Windows.Forms.Panel drawSurface;
private System.Windows.Forms.Label labelStatus;
}
}

View File

@ -3,9 +3,16 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using ANX.Framework.Content;
using ANX.Framework.Content.Pipeline;
using ANX.Framework.Content.Pipeline.Tasks;
using ANX.Framework.Graphics;
using Timer = System.Windows.Forms.Timer;
namespace ANX.ContentCompiler.GUI.Dialogues
{
@ -14,11 +21,37 @@ namespace ANX.ContentCompiler.GUI.Dialogues
#region Fields
private Point _lastPos;
private bool _mouseDown;
private readonly BuildItem _item;
private Thread _loaderThread;
private readonly string _outputFile;
private readonly string _outputDir;
private volatile bool _started;
private volatile bool _error;
private volatile string _errorMessage;
private string _processor;
private Timer _checkTimer;
private Timer _tickTimer;
private readonly GraphicsDevice _graphicsDevice;
private SpriteBatch _batch;
#endregion
public PreviewScreen()
public PreviewScreen(BuildItem item)
{
InitializeComponent();
_item = item;
_outputFile = Path.GetTempFileName();
_outputDir = Path.GetTempPath();
_graphicsDevice = new GraphicsDevice(
GraphicsAdapter.DefaultAdapter,
GraphicsProfile.HiDef,
new PresentationParameters
{
BackBufferWidth = drawSurface.Width,
BackBufferHeight = drawSurface.Height,
BackBufferFormat = SurfaceFormat.Color,
DeviceWindowHandle = drawSurface.Handle,
PresentationInterval = PresentInterval.Default,
});
}
#region WindowMoveMethods
@ -51,5 +84,82 @@ namespace ANX.ContentCompiler.GUI.Dialogues
Close();
DialogResult = DialogResult.Cancel;
}
public void CompileFile()
{
var builderTask = new BuildContent
{
BuildLogger = new FakeBuildLogger(),
OutputDirectory = _outputDir,
TargetPlatform = TargetPlatform.Windows,
TargetProfile = GraphicsProfile.HiDef,
CompressContent = false
};
if (String.IsNullOrEmpty(_item.ImporterName))
{
_item.ImporterName = ImporterManager.GuessImporterByFileExtension(_item.SourceFilename);
}
if (String.IsNullOrEmpty(_item.ProcessorName))
{
_item.ProcessorName =
new ProcessorManager().GetProcessorForImporter(new ImporterManager().GetInstance(_item.ImporterName));
}
_processor = _item.ProcessorName;
_item.OutputFilename = _outputFile;
try
{
builderTask.Execute(new[] { _item });
}
catch (Exception ex)
{
_error = true;
_errorMessage = ex.Message;
}
}
private void PreviewScreenLoad(object sender, EventArgs e)
{
_checkTimer = new Timer {Interval = 1000};
_checkTimer.Tick += CheckThread;
_checkTimer.Start();
}
void CheckThread(object sender, EventArgs e)
{
if (!_started)
{
((Timer) sender).Interval = 100;
_loaderThread = new Thread(CompileFile);
_loaderThread.Start();
_started = true;
}
else
{
if (_loaderThread.IsAlive)
return;
if (_error)
{
labelStatus.Text = "Loading of Preview failed with: \n" + _errorMessage;
return;
}
labelStatus.Text = "Loading successful";
labelStatus.Hide();
_tickTimer = new Timer {Interval = 120};
_tickTimer.Tick += Tick;
_batch = new SpriteBatch(_graphicsDevice);
_tickTimer.Start();
}
}
void Tick(object sender, EventArgs e)
{
_graphicsDevice.Clear(Framework.Color.CornflowerBlue);
if (_processor == "TextureProcessor")
{
_batch.Begin();
_batch.End();
}
}
}
}

View File

@ -876,7 +876,13 @@ namespace ANX.ContentCompiler.GUI
#region ShowPreview
internal void ShowPreview()
{
using (var preview = new PreviewScreen())
BuildItem buildItem = null;
foreach (var item in _contentProject.BuildItems.Where(item => item.AssetName == treeView.SelectedNode.Text))
{
buildItem = item;
}
using (var preview = new PreviewScreen(buildItem))
{
if ((string)treeView.SelectedNode.Tag == "File")
preview.ShowDialog();