@@ -1328,6 +1328,7 @@ getIndices(const TIndexAccessor& indicesView, int32 primitiveMode) {
1328
1328
break ;
1329
1329
case CesiumGltf::MeshPrimitive::Mode::TRIANGLES:
1330
1330
case CesiumGltf::MeshPrimitive::Mode::POINTS:
1331
+ case CesiumGltf::MeshPrimitive::Mode::LINES:
1331
1332
default :
1332
1333
indices.SetNum (static_cast <TArray<uint32>::SizeType>(indicesView.size ()));
1333
1334
for (int32 i = 0 ; i < indicesView.size (); ++i) {
@@ -1360,6 +1361,7 @@ static void loadPrimitive(
1360
1361
1361
1362
switch (primitive.mode ) {
1362
1363
case CesiumGltf::MeshPrimitive::Mode::POINTS:
1364
+ case CesiumGltf::MeshPrimitive::Mode::LINES:
1363
1365
case CesiumGltf::MeshPrimitive::Mode::TRIANGLES:
1364
1366
case CesiumGltf::MeshPrimitive::Mode::TRIANGLE_STRIP:
1365
1367
case CesiumGltf::MeshPrimitive::Mode::TRIANGLE_FAN:
@@ -1540,8 +1542,10 @@ static void loadPrimitive(
1540
1542
bool needToGenerateFlatNormals = normalsAreRequired && !hasNormals;
1541
1543
bool needToGenerateTangents = needsTangents && !hasTangents;
1542
1544
bool duplicateVertices = needToGenerateFlatNormals || needToGenerateTangents;
1543
- duplicateVertices = duplicateVertices &&
1544
- primitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS;
1545
+ duplicateVertices =
1546
+ duplicateVertices &&
1547
+ primitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS &&
1548
+ primitive.mode != CesiumGltf::MeshPrimitive::Mode::LINES;
1545
1549
1546
1550
uint32 numVertices =
1547
1551
duplicateVertices ? uint32 (indices.Num ()) : uint32 (positionView.size ());
@@ -1759,7 +1763,8 @@ static void loadPrimitive(
1759
1763
section.MinVertexIndex = 0 ;
1760
1764
section.MaxVertexIndex = numVertices - 1 ;
1761
1765
section.bEnableCollision =
1762
- primitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS;
1766
+ primitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS &&
1767
+ primitive.mode != CesiumGltf::MeshPrimitive::Mode::LINES;
1763
1768
section.bCastShadow = true ;
1764
1769
section.MaterialIndex = 0 ;
1765
1770
@@ -1786,7 +1791,8 @@ static void loadPrimitive(
1786
1791
#if ENGINE_VERSION_5_5_OR_HIGHER
1787
1792
// UE 5.5 requires that we do this in order to avoid a crash when ray
1788
1793
// tracing is enabled.
1789
- if (primitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS) {
1794
+ if (primitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS &&
1795
+ primitive.mode != CesiumGltf::MeshPrimitive::Mode::LINES) {
1790
1796
// UE 5.5 requires that we do this in order to avoid a crash when ray
1791
1797
// tracing is enabled.
1792
1798
RenderData->InitializeRayTracingRepresentationFromRenderingLODs ();
@@ -1800,7 +1806,7 @@ static void loadPrimitive(
1800
1806
1801
1807
primitiveResult.transform = transform * yInvertMatrix * scaleMatrix;
1802
1808
1803
- if (primitive. mode != CesiumGltf::MeshPrimitive::Mode::POINTS &&
1809
+ if (section. bEnableCollision &&
1804
1810
options.pMeshOptions ->pNodeOptions ->pModelOptions ->createPhysicsMeshes ) {
1805
1811
if (numVertices != 0 && indices.Num () != 0 ) {
1806
1812
TRACE_CPUPROFILER_EVENT_SCOPE (Cesium::ChaosCook)
@@ -3040,9 +3046,12 @@ static void loadPrimitiveGameThreadPart(
3040
3046
3041
3047
UStaticMeshComponent* pMesh = nullptr ;
3042
3048
ICesiumPrimitive* pCesiumPrimitive = nullptr ;
3043
- if (meshPrimitive.mode == CesiumGltf::MeshPrimitive::Mode::POINTS) {
3049
+ if (meshPrimitive.mode == CesiumGltf::MeshPrimitive::Mode::POINTS ||
3050
+ meshPrimitive.mode == CesiumGltf::MeshPrimitive::Mode::LINES) {
3044
3051
UCesiumGltfPointsComponent* pPointMesh =
3045
3052
NewObject<UCesiumGltfPointsComponent>(pGltf, componentName);
3053
+ pPointMesh->bLinesList =
3054
+ (meshPrimitive.mode == CesiumGltf::MeshPrimitive::Mode::LINES);
3046
3055
pPointMesh->UsesAdditiveRefinement =
3047
3056
tile.getRefine () == Cesium3DTilesSelection::TileRefine::Add;
3048
3057
pPointMesh->GeometricError = static_cast <float >(tile.getGeometricError ());
@@ -3114,7 +3123,8 @@ static void loadPrimitiveGameThreadPart(
3114
3123
// sense, but if Unreal will crash trying to generate ray tracing
3115
3124
// information for a static mesh without triangles.
3116
3125
pStaticMesh->bSupportRayTracing =
3117
- meshPrimitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS;
3126
+ meshPrimitive.mode != CesiumGltf::MeshPrimitive::Mode::POINTS &&
3127
+ meshPrimitive.mode != CesiumGltf::MeshPrimitive::Mode::LINES;
3118
3128
pMesh->SetStaticMesh (pStaticMesh);
3119
3129
3120
3130
pStaticMesh->SetFlags (
0 commit comments