From 3fcac37ccf4e2237ca8cb72ca353a3d94ae33153 Mon Sep 17 00:00:00 2001 From: RoadTom Date: Mon, 26 Jul 2021 15:12:29 +0200 Subject: [PATCH 1/3] test commit --- Source/StreetMapRuntime/StreetMapRuntime.Build.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/StreetMapRuntime/StreetMapRuntime.Build.cs b/Source/StreetMapRuntime/StreetMapRuntime.Build.cs index a7b4d25..75dd713 100644 --- a/Source/StreetMapRuntime/StreetMapRuntime.Build.cs +++ b/Source/StreetMapRuntime/StreetMapRuntime.Build.cs @@ -1,5 +1,5 @@ // Copyright 2017 Mike Fricker. All Rights Reserved. - +//test namespace UnrealBuildTool.Rules { public class StreetMapRuntime : ModuleRules From 2470b826dbdae0f45cfb661d047881134e3c7971 Mon Sep 17 00:00:00 2001 From: RoadTom Date: Mon, 26 Jul 2021 19:37:55 +0200 Subject: [PATCH 2/3] SplineComponent for every Road --- .../Private/StreetMapActor.cpp | 3 +-- .../Private/StreetMapComponent.cpp | 18 ++++++++++++++++-- Source/StreetMapRuntime/Public/StreetMap.h | 2 +- .../StreetMapRuntime/Public/StreetMapActor.h | 4 ++-- .../Public/StreetMapComponent.h | 4 +++- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Source/StreetMapRuntime/Private/StreetMapActor.cpp b/Source/StreetMapRuntime/Private/StreetMapActor.cpp index 21976ee..b536a6b 100644 --- a/Source/StreetMapRuntime/Private/StreetMapActor.cpp +++ b/Source/StreetMapRuntime/Private/StreetMapActor.cpp @@ -4,10 +4,9 @@ #include "StreetMapRuntime.h" #include "StreetMapComponent.h" - AStreetMapActor::AStreetMapActor(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { StreetMapComponent = CreateDefaultSubobject(TEXT("StreetMapComp")); RootComponent = StreetMapComponent; -} \ No newline at end of file +} diff --git a/Source/StreetMapRuntime/Private/StreetMapComponent.cpp b/Source/StreetMapRuntime/Private/StreetMapComponent.cpp index 612693e..16c3131 100644 --- a/Source/StreetMapRuntime/Private/StreetMapComponent.cpp +++ b/Source/StreetMapRuntime/Private/StreetMapComponent.cpp @@ -12,6 +12,7 @@ #if WITH_EDITOR #include "Modules/ModuleManager.h" #include "PropertyEditorModule.h" +#include "Components/SplineComponent.h" #endif //WITH_EDITOR @@ -44,7 +45,11 @@ UStreetMapComponent::UStreetMapComponent(const FObjectInitializer& ObjectInitial static ConstructorHelpers::FObjectFinder DefaultMaterialAsset(TEXT("/StreetMap/StreetMapDefaultMaterial")); StreetMapDefaultMaterial = DefaultMaterialAsset.Object; - + + StreetMapSplines.Add(CreateDefaultSubobject(TEXT("SplineMapComp1"))); + /*StreetMapSplines.Add(CreateDefaultSubobject(TEXT("SplineMapComp2"))); + StreetMapSplines.Add(CreateDefaultSubobject(TEXT("SplineMapComp3"))); + StreetMapSplines.Add(CreateDefaultSubobject(TEXT("SplineMapComp4")));*/ } @@ -247,6 +252,14 @@ void UStreetMapComponent::GenerateMesh() for( const auto& Road : Roads ) { + + FString test = Road.RoadName; + FName name = FName(*test); + auto spline = NewObject(this,USplineComponent::StaticClass()); + + spline->AppendName(test); + StreetMapSplines.Add(spline); + float RoadThickness = StreetThickness; FColor RoadColor = StreetColor; switch( Road.RoadType ) @@ -269,9 +282,10 @@ void UStreetMapComponent::GenerateMesh() check( 0 ); break; } - + spline->SetWorldLocation(FVector(Road.RoadPoints[ 0 ].X, Road.RoadPoints[ 0 ].Y, RoadZ)); for( int32 PointIndex = 0; PointIndex < Road.RoadPoints.Num() - 1; ++PointIndex ) { + // spline->AddSplinePoint() AddThick2DLine( Road.RoadPoints[ PointIndex ], Road.RoadPoints[ PointIndex + 1 ], diff --git a/Source/StreetMapRuntime/Public/StreetMap.h b/Source/StreetMapRuntime/Public/StreetMap.h index 487e276..7bdbc29 100644 --- a/Source/StreetMapRuntime/Public/StreetMap.h +++ b/Source/StreetMapRuntime/Public/StreetMap.h @@ -104,7 +104,7 @@ struct STREETMAPRUNTIME_API FStreetMapMeshBuildSettings bWant3DBuildings(true), bWantLitBuildings(true), StreetThickness(800.0f), - StreetColor(0.05f, 0.75f, 0.05f), + StreetColor(1.0f, 0.0f, 0.0f), MajorRoadThickness(1000.0f), MajorRoadColor(0.15f, 0.85f, 0.15f), HighwayThickness(1400.0f), diff --git a/Source/StreetMapRuntime/Public/StreetMapActor.h b/Source/StreetMapRuntime/Public/StreetMapActor.h index e8bae48..2dc2c0c 100644 --- a/Source/StreetMapRuntime/Public/StreetMapActor.h +++ b/Source/StreetMapRuntime/Public/StreetMapActor.h @@ -11,8 +11,8 @@ class STREETMAPRUNTIME_API AStreetMapActor : public AActor GENERATED_UCLASS_BODY() /** Component that represents a section of street map roads and buildings */ - UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "StreetMap") - class UStreetMapComponent* StreetMapComponent; + UPROPERTY(Instanced, EditAnywhere, Category = "StreetMap") + class UStreetMapComponent* StreetMapComponent; public: FORCEINLINE class UStreetMapComponent* GetStreetMapComponent() { return StreetMapComponent; } diff --git a/Source/StreetMapRuntime/Public/StreetMapComponent.h b/Source/StreetMapRuntime/Public/StreetMapComponent.h index ea7ebb1..d571081 100644 --- a/Source/StreetMapRuntime/Public/StreetMapComponent.h +++ b/Source/StreetMapRuntime/Public/StreetMapComponent.h @@ -162,7 +162,9 @@ class STREETMAPRUNTIME_API UStreetMapComponent : public UMeshComponent, public I //** Physics data for mesh collision. */ UPROPERTY(Transient) UBodySetup* StreetMapBodySetup; - + + UPROPERTY(Transient, EditAnywhere, Category = "StreetMapSPlines") + TArray StreetMapSplines; protected: // From 50f960a4c8cb74fc72ad565cd41cd281004a5ae8 Mon Sep 17 00:00:00 2001 From: RoadTom Date: Tue, 3 Aug 2021 12:43:02 +0200 Subject: [PATCH 3/3] Spline Points based on osm --- .../Private/StreetMapFactory.cpp | 15 +++++++++++++ .../Private/StreetMapComponent.cpp | 21 ++++++++----------- .../StreetMapRuntime/Public/StreetMapActor.h | 3 ++- .../Public/StreetMapComponent.h | 3 ++- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Source/StreetMapImporting/Private/StreetMapFactory.cpp b/Source/StreetMapImporting/Private/StreetMapFactory.cpp index 546c4b2..c5aaf5d 100644 --- a/Source/StreetMapImporting/Private/StreetMapFactory.cpp +++ b/Source/StreetMapImporting/Private/StreetMapFactory.cpp @@ -114,6 +114,21 @@ bool UStreetMapFactory::LoadFromOpenStreetMapXMLFile( UStreetMap* StreetMap, FSt case FOSMFile::EOSMWayType::Road: // @todo: Consider excluding "Road" from our data set, as it could be a highway that wasn't properly tagged in OSM yet RoadType = EStreetMapRoadType::Street; break; + case FOSMFile::EOSMWayType::Living_Street: break; + case FOSMFile::EOSMWayType::Pedestrian: break; + case FOSMFile::EOSMWayType::Track: break; + case FOSMFile::EOSMWayType::Bus_Guideway: break; + case FOSMFile::EOSMWayType::Raceway: break; + case FOSMFile::EOSMWayType::Footway: break; + case FOSMFile::EOSMWayType::Cycleway: break; + case FOSMFile::EOSMWayType::Bridleway: break; + case FOSMFile::EOSMWayType::Steps: break; + case FOSMFile::EOSMWayType::Path: break; + case FOSMFile::EOSMWayType::Proposed: break; + case FOSMFile::EOSMWayType::Construction: break; + case FOSMFile::EOSMWayType::Building: break; + case FOSMFile::EOSMWayType::Other: break; + default: ; } if( RoadType != EStreetMapRoadType::Other ) diff --git a/Source/StreetMapRuntime/Private/StreetMapComponent.cpp b/Source/StreetMapRuntime/Private/StreetMapComponent.cpp index 16c3131..2bd5a5f 100644 --- a/Source/StreetMapRuntime/Private/StreetMapComponent.cpp +++ b/Source/StreetMapRuntime/Private/StreetMapComponent.cpp @@ -3,8 +3,6 @@ #include "StreetMapComponent.h" #include "StreetMapRuntime.h" #include "StreetMapSceneProxy.h" -#include "Runtime/Engine/Classes/Engine/StaticMesh.h" -#include "Runtime/Engine/Public/StaticMeshResources.h" #include "PolygonTools.h" #include "PhysicsEngine/BodySetup.h" @@ -24,7 +22,7 @@ UStreetMapComponent::UStreetMapComponent(const FObjectInitializer& ObjectInitial { // We make sure our mesh collision profile name is set to NoCollisionProfileName at initialization. // Because we don't have collision data yet! - SetCollisionProfileName(UCollisionProfile::NoCollision_ProfileName); + UPrimitiveComponent::SetCollisionProfileName(UCollisionProfile::NoCollision_ProfileName); // We don't currently need to be ticked. This can be overridden in a derived class though. PrimaryComponentTick.bCanEverTick = false; @@ -247,17 +245,15 @@ void UStreetMapComponent::GenerateMesh() MeshBoundingBox.Init(); const auto& Roads = StreetMap->GetRoads(); - const auto& Nodes = StreetMap->GetNodes(); + const auto& Buildings = StreetMap->GetBuildings(); - + int index = 0; for( const auto& Road : Roads ) - { - - FString test = Road.RoadName; - FName name = FName(*test); + { + FString test = Road.RoadName; auto spline = NewObject(this,USplineComponent::StaticClass()); - - spline->AppendName(test); + // auto spline = NewObject(this,USplineComponent::StaticClass(), FText::Format("spline {0}", index)); + ++index; StreetMapSplines.Add(spline); float RoadThickness = StreetThickness; @@ -285,7 +281,8 @@ void UStreetMapComponent::GenerateMesh() spline->SetWorldLocation(FVector(Road.RoadPoints[ 0 ].X, Road.RoadPoints[ 0 ].Y, RoadZ)); for( int32 PointIndex = 0; PointIndex < Road.RoadPoints.Num() - 1; ++PointIndex ) { - // spline->AddSplinePoint() + spline->AddSplinePoint(FVector(Road.RoadPoints[ PointIndex ], RoadZ), ESplineCoordinateSpace::World, true); + AddThick2DLine( Road.RoadPoints[ PointIndex ], Road.RoadPoints[ PointIndex + 1 ], diff --git a/Source/StreetMapRuntime/Public/StreetMapActor.h b/Source/StreetMapRuntime/Public/StreetMapActor.h index 2dc2c0c..d9a1956 100644 --- a/Source/StreetMapRuntime/Public/StreetMapActor.h +++ b/Source/StreetMapRuntime/Public/StreetMapActor.h @@ -14,6 +14,7 @@ class STREETMAPRUNTIME_API AStreetMapActor : public AActor UPROPERTY(Instanced, EditAnywhere, Category = "StreetMap") class UStreetMapComponent* StreetMapComponent; -public: +public: + UFUNCTION(BlueprintCallable, Category="StreetMap") FORCEINLINE class UStreetMapComponent* GetStreetMapComponent() { return StreetMapComponent; } }; diff --git a/Source/StreetMapRuntime/Public/StreetMapComponent.h b/Source/StreetMapRuntime/Public/StreetMapComponent.h index d571081..422865a 100644 --- a/Source/StreetMapRuntime/Public/StreetMapComponent.h +++ b/Source/StreetMapRuntime/Public/StreetMapComponent.h @@ -88,7 +88,8 @@ class STREETMAPRUNTIME_API UStreetMapComponent : public UMeshComponent, public I UFUNCTION(BlueprintCallable, Category = "StreetMap") void SetStreetMap(UStreetMap* NewStreetMap, bool bClearPreviousMeshIfAny = false, bool bRebuildMesh = false); - + UFUNCTION(BlueprintCallable, Category="StreetMap") + FORCEINLINE TArray GetStreetMapSplines() { return StreetMapSplines; } //** Begin Interface_CollisionDataProvider Interface */ virtual bool GetPhysicsTriMeshData(struct FTriMeshCollisionData* CollisionData, bool InUseAllTriData) override;