forked from MonoGame/MonoGame
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TestProcessorContext.cs
111 lines (93 loc) · 3.67 KB
/
TestProcessorContext.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using System;
using Microsoft.Xna.Framework.Content.Pipeline;
using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
using Microsoft.Xna.Framework.Graphics;
namespace MonoGame.Tests.ContentPipeline
{
class TestProcessorContext : ContentProcessorContext
{
private readonly TargetPlatform _targetPlatform;
private readonly string _outputFilename;
private readonly TestContentBuildLogger _logger;
public TestProcessorContext( TargetPlatform targetPlatform,
string outputFilename)
{
_targetPlatform = targetPlatform;
_outputFilename = outputFilename;
_logger = new TestContentBuildLogger();
}
public override string BuildConfiguration
{
get { return "Debug"; }
}
public override string IntermediateDirectory
{
get { throw new NotImplementedException(); }
}
public override ContentBuildLogger Logger
{
get { return _logger; }
}
public override string OutputDirectory
{
get { throw new NotImplementedException(); }
}
public override string OutputFilename
{
get { return _outputFilename; }
}
public override OpaqueDataDictionary Parameters
{
get { throw new NotImplementedException(); }
}
#if !XNA
public override ContentIdentity SourceIdentity
{
get { throw new NotImplementedException(); }
}
#endif
public override TargetPlatform TargetPlatform
{
get { return _targetPlatform; }
}
public override GraphicsProfile TargetProfile
{
get { return GraphicsProfile.HiDef; }
}
public override void AddDependency(string filename)
{
}
public override void AddOutputFile(string filename)
{
}
public override TOutput BuildAndLoadAsset<TInput, TOutput>(ExternalReference<TInput> sourceAsset, string processorName, OpaqueDataDictionary processorParameters, string importerName)
{
return default(TOutput);
}
public override ExternalReference<TOutput> BuildAsset<TInput, TOutput>(ExternalReference<TInput> sourceAsset, string processorName, OpaqueDataDictionary processorParameters, string importerName, string assetName)
{
throw new NotImplementedException();
}
public override TOutput Convert<TInput, TOutput>(TInput input, string processorName, OpaqueDataDictionary processorParameters)
{
// MaterialProcessor essentially transforms its
// input and returns it... not a copy. So this
// seems like a reasonable shortcut for testing.
if (typeof(TOutput) == typeof(MaterialContent) && typeof(TInput).IsAssignableFrom(typeof(MaterialContent)))
return (TOutput)((object)input);
var processor = (ContentProcessor<TInput, TOutput>)typeof(ContentProcessor<TInput, TOutput>).Assembly.CreateInstance("Microsoft.Xna.Framework.Content.Pipeline.Processors."+ processorName);
if (processor != null) {
var type = processor.GetType();
foreach (var kvp in processorParameters)
{
var property = type.GetProperty(kvp.Key);
if (property == null)
continue;
property.SetValue(processor, kvp.Value);
}
return processor.Process(input, this);
}
throw new NotImplementedException();
}
}
}