forked from alvani/Unity-glTF-Exporter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGlTF_Node.cs
123 lines (119 loc) · 3.08 KB
/
GlTF_Node.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
112
113
114
115
116
117
118
119
120
121
122
123
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class GlTF_Node : GlTF_Writer {
public string cameraName;
public bool hasParent = false;
public List<string> childrenNames = new List<string>();
public bool uniqueItems = true;
public string lightName;
public List<string>bufferViewNames = new List<string>();
public List<string>indexNames = new List<string>();
public List<string>accessorNames = new List<string>();
public List<string> meshNames = new List<string>();
public GlTF_Matrix matrix;
// public GlTF_Mesh mesh;
public GlTF_Rotation rotation;
public GlTF_Scale scale;
public GlTF_Translation translation;
public bool additionalProperties = false;
public string skinName;
public List<string> skeletonNames = new List<string>();
public string jointName;
public static string GetNameFromObject(Object o)
{
return "node_" + GlTF_Writer.GetNameFromObject(o, true);
}
public override void Write ()
{
Indent();
jsonWriter.Write ("\""+name+"\": {\n");
IndentIn();
Indent();
jsonWriter.Write ("\"name\": \""+name+"\",\n");
if (cameraName != null)
{
CommaNL();
Indent();
jsonWriter.Write ("\"camera\": \""+cameraName+"\"");
}
else if (lightName != null)
{
CommaNL();
Indent();
jsonWriter.Write ("\"light\": \""+lightName+"\"");
}
else if (meshNames.Count > 0)
{
CommaNL();
Indent();
jsonWriter.Write ("\"meshes\": [\n");
IndentIn();
foreach (string m in meshNames)
{
CommaNL();
Indent(); jsonWriter.Write ("\"" + m + "\"");
}
jsonWriter.WriteLine();
IndentOut();
Indent(); jsonWriter.Write ("]");
}
if (childrenNames != null && childrenNames.Count > 0)
{
CommaNL();
Indent(); jsonWriter.Write ("\"children\": [\n");
IndentIn();
foreach (string ch in childrenNames)
{
CommaNL();
Indent(); jsonWriter.Write ("\""+ch+"\"");
}
jsonWriter.WriteLine();
IndentOut();
Indent(); jsonWriter.Write ("]");
}
if (matrix != null)
{
CommaNL();
matrix.Write();
}
if (translation != null && (translation.items[0] != 0f || translation.items[1] != 0f || translation.items[2] != 0f))
{
CommaNL();
translation.Write ();
}
if (scale != null && (scale.items[0] != 1f || scale.items[1] != 1f || scale.items[2] != 1f))
{
CommaNL();
scale.Write();
}
if (rotation != null && (rotation.items[0] != 0f || rotation.items[1] != 0f || rotation.items[2] != 0f || rotation.items[3] != 0f))
{
CommaNL();
rotation.Write ();
}
if (jointName != null) {
CommaNL();
Indent(); jsonWriter.Write("\"jointName\": \"" + jointName + "\"");
}
if (skinName != null) {
CommaNL();
Indent(); jsonWriter.Write("\"skin\": \"" + skinName + "\"");
}
if (skeletonNames.Count > 0) {
CommaNL();
Indent(); jsonWriter.Write("\"skeletons\": [\n");
IndentIn();
foreach (var n in skeletonNames) {
CommaNL();
Indent(); jsonWriter.Write("\"" + n + "\"");
}
IndentOut();
jsonWriter.WriteLine();
Indent(); jsonWriter.Write("]");
}
jsonWriter.WriteLine();
IndentOut();
Indent(); jsonWriter.Write ("}");
}
}