forked from izrik/FbxSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConverter.cs
75 lines (67 loc) · 3.11 KB
/
Converter.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
using System;
using System.Linq;
using System.Collections.Generic;
namespace FbxSharp
{
public class Converter
{
public FbxScene ConvertScene(List<ParseObject> parsedObjects)
{
var header = GetHeader(parsedObjects);
if (header != null)
{
var headerVersion = GetHeaderVersion(header);
if (headerVersion == 1003)
{
var version = GetVersion(header);
if (version.HasValue)
{
IConverter converter = null;
if (version.Value == 2000) converter = new Converter2000();
if (version.Value == 2001) converter = new Converter2001();
if (version.Value == 3000) converter = new Converter3000();
if (version.Value == 3001) converter = new Converter3001();
if (version.Value == 4000) converter = new Converter4000();
if (version.Value == 4001) converter = new Converter4001();
if (version.Value == 4050) converter = new Converter4050();
if (version.Value == 5000) converter = new Converter5000();
if (version.Value == 5800) converter = new Converter5800();
if (version.Value == 6000) converter = new Converter6000();
if (version.Value == 6100) converter = new Converter6100();
if (version.Value == 7000) converter = new Converter7000();
if (version.Value == 7099) converter = new Converter7099();
if (version.Value == 7100) converter = new Converter7100();
if (version.Value == 7200) converter = new Converter7200();
if (version.Value == 7300) converter = new Converter7300();
if (version.Value == 7400) converter = new Converter7400();
if (converter != null)
{
return converter.ConvertScene(parsedObjects);
}
}
}
}
return new Converter7300().ConvertScene(parsedObjects);
}
protected ParseObject GetHeader(List<ParseObject> parsedObjects)
{
return parsedObjects.First(h => h.Name == "FBXHeaderExtension");
}
protected long? GetHeaderVersion(ParseObject header)
{
var hv = header.FindPropertyByName("FBXHeaderVersion");
if (hv == null) return null;
if (hv.Values.Count < 1) return null;
if (!(hv.Values[0] is Number)) return null;
return ((Number)hv.Values[0]).AsLong;
}
protected long? GetVersion(ParseObject header)
{
var v = header.FindPropertyByName("FBXVersion");
if (v == null) return null;
if (v.Values.Count < 1) return null;
if (!(v.Values[0] is Number)) return null;
return ((Number)v.Values[0]).AsLong;
}
}
}