Skip to content

Commit 8e9b80d

Browse files
committed
namespace adjustments
1 parent dc8ba13 commit 8e9b80d

15 files changed

+885
-872
lines changed

build/SharpGLTF.CodeGen/Constants.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ internal static string CustomExtensionsPath(string ext, string json)
8181

8282
public static string CesiumNameSpace => "SharpGLTF.Schema2.Tiles3D";
8383

84+
public static string AgiNameSpace => "SharpGLTF.Schema2.AGI";
85+
8486
#endregion
8587
}
8688
}

build/SharpGLTF.CodeGen/Ext.AGI_Articulations.cs

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -43,29 +43,16 @@ private static SchemaType.Context ProcessNode()
4343

4444
public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
4545
{
46-
newEmitter.SetRuntimeName("AGI_articulations glTF extension", "AgiRootArticulations");
47-
newEmitter.SetRuntimeName("AGI_articulations glTF Node extension", "AgiNodeArticulations");
48-
newEmitter.SetRuntimeName("Articulation", "AgiArticulation");
49-
newEmitter.SetRuntimeName("Articulation Stage", "AgiArticulationStage");
50-
newEmitter.SetRuntimeName("uniformScale-xRotate-xScale-xTranslate-yRotate-yScale-yTranslate-zRotate-zScale-zTranslate", "AgiArticulationTransformType");
51-
52-
var agiArticulationRootClass = ctx.FindClass("AGI_articulations glTF extension");
53-
if (agiArticulationRootClass != null)
54-
{
55-
newEmitter.SetCollectionContainer(agiArticulationRootClass.UseField("articulations"), "ChildrenList<TItem,AgiRootArticulations>");
56-
}
57-
58-
var agiArticulationClass = ctx.FindClass("Articulation");
59-
if (agiArticulationClass != null)
60-
{
61-
newEmitter.SetCollectionContainer(agiArticulationClass.UseField("stages"), "ChildrenList<TItem,AgiArticulation>");
62-
}
63-
64-
var agiStkMetadataRootClass = ctx.FindClass("AGI_stk_metadata glTF extension");
65-
if (agiStkMetadataRootClass != null)
66-
{
67-
newEmitter.SetCollectionContainer(agiStkMetadataRootClass.UseField("solarPanelGroups"), "ChildrenList<TItem,AgiRootStkMetadata>");
68-
}
46+
newEmitter.SetRuntimeName("AGI_stk_metadata glTF extension", "AgiRootStkMetadata", Constants.AgiNameSpace);
47+
newEmitter.SetRuntimeName("AGI_articulations glTF extension", "AgiRootArticulations", Constants.AgiNameSpace);
48+
newEmitter.SetRuntimeName("AGI_articulations glTF Node extension", "AgiNodeArticulations", Constants.AgiNameSpace);
49+
newEmitter.SetRuntimeName("Articulation", "AgiArticulation", Constants.AgiNameSpace);
50+
newEmitter.SetRuntimeName("Articulation Stage", "AgiArticulationStage", Constants.AgiNameSpace);
51+
newEmitter.SetRuntimeName("uniformScale-xRotate-xScale-xTranslate-yRotate-yScale-yTranslate-zRotate-zScale-zTranslate", "AgiArticulationTransformType", Constants.AgiNameSpace);
52+
53+
newEmitter.SetFieldToChildrenList(ctx, "AGI_articulations glTF extension", "articulations");
54+
newEmitter.SetFieldToChildrenList(ctx, "Articulation", "stages");
55+
newEmitter.SetFieldToChildrenList(ctx, "AGI_stk_metadata glTF extension", "solarPanelGroups");
6956
}
7057
}
7158
}

build/SharpGLTF.CodeGen/Ext.AGI_RootStkMetadata.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ private static SchemaType.Context ProcessNode()
3636

3737
public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
3838
{
39-
newEmitter.SetRuntimeName("AGI_stk_metadata glTF extension", "AgiRootStkMetadata");
40-
newEmitter.SetRuntimeName("AGI_stk_metadata glTF Node extension", "AgiNodeStkMetadata");
41-
newEmitter.SetRuntimeName("Solar Panel Group", "AgiStkSolarPanelGroup");
39+
newEmitter.SetRuntimeName("AGI_stk_metadata glTF extension", "AgiRootStkMetadata", Constants.AgiNameSpace);
40+
newEmitter.SetRuntimeName("AGI_stk_metadata glTF Node extension", "AgiNodeStkMetadata", Constants.AgiNameSpace);
41+
newEmitter.SetRuntimeName("Solar Panel Group", "AgiStkSolarPanelGroup", Constants.AgiNameSpace);
4242
}
4343
}
4444
}

src/SharpGLTF.Ext.3DTiles/Schema2/Ext.CESIUM_primitive_outline.cs

Lines changed: 99 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -4,102 +4,9 @@
44

55
using SharpGLTF.Validation;
66

7-
namespace SharpGLTF.Schema2.Tiles3D
7+
namespace SharpGLTF.Schema2
88
{
9-
/// <remarks>
10-
/// This extension is attached to a <see cref="Schema2.MeshPrimitive"/> using <see cref="Tiles3DExtensions.SetCesiumOutline"/>
11-
/// </remarks>
12-
partial class CesiumPrimitiveOutline
13-
{
14-
#region lifecycle
15-
16-
internal CesiumPrimitiveOutline(MeshPrimitive meshPrimitive)
17-
{
18-
this.meshPrimitive = meshPrimitive;
19-
}
20-
21-
#endregion
22-
23-
#region properties
24-
25-
private MeshPrimitive meshPrimitive;
26-
27-
public Accessor Indices
28-
{
29-
get
30-
{
31-
return _indices.HasValue
32-
? meshPrimitive.LogicalParent.LogicalParent.LogicalAccessors[_indices.Value]
33-
: null;
34-
}
35-
set
36-
{
37-
if (value == null) { _indices = null; return; }
38-
39-
_ValidateAccessor(meshPrimitive.LogicalParent.LogicalParent, value);
40-
41-
_indices = value.LogicalIndex;
42-
}
43-
}
44-
45-
#endregion
46-
47-
#region validation
48-
49-
protected override void OnValidateReferences(ValidationContext validate)
50-
{
51-
validate.IsNullOrIndex(nameof(Indices), this._indices, meshPrimitive.LogicalParent.LogicalParent.LogicalAccessors);
52-
53-
base.OnValidateReferences(validate);
54-
}
55-
56-
protected override void OnValidateContent(ValidationContext validate)
57-
{
58-
var outlineAccessor = meshPrimitive.LogicalParent.LogicalParent.LogicalAccessors[(int)_indices];
59-
var isValid = _ValidateCesiumOutlineIndices(outlineAccessor, meshPrimitive);
60-
validate.IsTrue(nameof(_indices), isValid, "Mismatch between accesor indices and MeshPrimitive indices");
61-
62-
base.OnValidateContent(validate);
63-
}
64-
65-
internal static void _ValidateAccessor(ModelRoot model, Accessor accessor)
66-
{
67-
Guard.NotNull(accessor, nameof(accessor));
68-
Guard.MustShareLogicalParent(model, "this", accessor, nameof(accessor));
69-
Guard.IsTrue(accessor.Encoding == EncodingType.UNSIGNED_INT, nameof(accessor));
70-
Guard.IsTrue(accessor.Dimensions == DimensionType.SCALAR, nameof(accessor));
71-
Guard.IsFalse(accessor.Normalized, nameof(accessor));
72-
}
73-
74-
/// <summary>
75-
/// Checks if all the indices of the Cesium outline accessor are within the range of in the MeshPrimitive indices
76-
/// </summary>
77-
/// <param name="accessor">Cesium outline accessor</param>
78-
/// <param name="meshPrimitive">MeshPrimitive with the CESIUM_primitive_outline extension</param>
79-
/// <returns>true all indices are available, false indices are missing </returns>
80-
private static bool _ValidateCesiumOutlineIndices(Accessor accessor, MeshPrimitive meshPrimitive)
81-
{
82-
var cesiumOutlineExtension = meshPrimitive.GetExtension<CesiumPrimitiveOutline>();
83-
if (cesiumOutlineExtension != null)
84-
{
85-
var accessorIndices = accessor.AsIndicesArray();
86-
var meshPrimitiveIndices = meshPrimitive.GetIndices();
87-
var maxIndex = meshPrimitiveIndices.Max();
88-
89-
foreach (var _ in from accessorIndice in accessorIndices
90-
let contains = accessorIndice <= maxIndex
91-
where !contains
92-
select new { })
93-
{
94-
return false;
95-
}
96-
}
97-
return true;
98-
}
99-
100-
#endregion
101-
}
102-
9+
using Tiles3D;
10310
partial class Tiles3DExtensions
10411
{
10512
/// <summary>
@@ -137,4 +44,101 @@ public static void SetCesiumOutline(this MeshPrimitive primitive, Accessor acces
13744
ext.Indices = accessor;
13845
}
13946
}
47+
48+
namespace Tiles3D
49+
{
50+
/// <remarks>
51+
/// This extension is attached to a <see cref="Schema2.MeshPrimitive"/> using <see cref="Tiles3DExtensions.SetCesiumOutline"/>
52+
/// </remarks>
53+
partial class CesiumPrimitiveOutline
54+
{
55+
#region lifecycle
56+
57+
internal CesiumPrimitiveOutline(MeshPrimitive meshPrimitive)
58+
{
59+
this.meshPrimitive = meshPrimitive;
60+
}
61+
62+
#endregion
63+
64+
#region properties
65+
66+
private MeshPrimitive meshPrimitive;
67+
68+
public Accessor Indices
69+
{
70+
get
71+
{
72+
return _indices.HasValue
73+
? meshPrimitive.LogicalParent.LogicalParent.LogicalAccessors[_indices.Value]
74+
: null;
75+
}
76+
set
77+
{
78+
if (value == null) { _indices = null; return; }
79+
80+
_ValidateAccessor(meshPrimitive.LogicalParent.LogicalParent, value);
81+
82+
_indices = value.LogicalIndex;
83+
}
84+
}
85+
86+
#endregion
87+
88+
#region validation
89+
90+
protected override void OnValidateReferences(ValidationContext validate)
91+
{
92+
validate.IsNullOrIndex(nameof(Indices), this._indices, meshPrimitive.LogicalParent.LogicalParent.LogicalAccessors);
93+
94+
base.OnValidateReferences(validate);
95+
}
96+
97+
protected override void OnValidateContent(ValidationContext validate)
98+
{
99+
var outlineAccessor = meshPrimitive.LogicalParent.LogicalParent.LogicalAccessors[(int)_indices];
100+
var isValid = _ValidateCesiumOutlineIndices(outlineAccessor, meshPrimitive);
101+
validate.IsTrue(nameof(_indices), isValid, "Mismatch between accesor indices and MeshPrimitive indices");
102+
103+
base.OnValidateContent(validate);
104+
}
105+
106+
internal static void _ValidateAccessor(ModelRoot model, Accessor accessor)
107+
{
108+
Guard.NotNull(accessor, nameof(accessor));
109+
Guard.MustShareLogicalParent(model, "this", accessor, nameof(accessor));
110+
Guard.IsTrue(accessor.Encoding == EncodingType.UNSIGNED_INT, nameof(accessor));
111+
Guard.IsTrue(accessor.Dimensions == DimensionType.SCALAR, nameof(accessor));
112+
Guard.IsFalse(accessor.Normalized, nameof(accessor));
113+
}
114+
115+
/// <summary>
116+
/// Checks if all the indices of the Cesium outline accessor are within the range of in the MeshPrimitive indices
117+
/// </summary>
118+
/// <param name="accessor">Cesium outline accessor</param>
119+
/// <param name="meshPrimitive">MeshPrimitive with the CESIUM_primitive_outline extension</param>
120+
/// <returns>true all indices are available, false indices are missing </returns>
121+
private static bool _ValidateCesiumOutlineIndices(Accessor accessor, MeshPrimitive meshPrimitive)
122+
{
123+
var cesiumOutlineExtension = meshPrimitive.GetExtension<CesiumPrimitiveOutline>();
124+
if (cesiumOutlineExtension != null)
125+
{
126+
var accessorIndices = accessor.AsIndicesArray();
127+
var meshPrimitiveIndices = meshPrimitive.GetIndices();
128+
var maxIndex = meshPrimitiveIndices.Max();
129+
130+
foreach (var _ in from accessorIndice in accessorIndices
131+
let contains = accessorIndice <= maxIndex
132+
where !contains
133+
select new { })
134+
{
135+
return false;
136+
}
137+
}
138+
return true;
139+
}
140+
141+
#endregion
142+
}
143+
}
140144
}

0 commit comments

Comments
 (0)