vault backup: 2025-07-16 15:22:16

This commit is contained in:
BlueRose 2025-07-16 15:22:16 +08:00
parent 65d043ec2b
commit f8f930a09f

View File

@ -1534,6 +1534,7 @@ void AShaderWorldActor::CollisionCPU()
BPRecomputeScope = BPCollisionRebuildRequest, ColRingCount = CollisionGridMaxRingNumber, LocalActorLocation, LocalOriginLocation, BPRecomputeScope = BPCollisionRebuildRequest, ColRingCount = CollisionGridMaxRingNumber, LocalActorLocation, LocalOriginLocation,
Height0 = HeightOnStart, Bounded = WorldHasBounds_OnRebuild, GBounds = WorldBoundsOnRebuild, Lock = CollisionMeshAccessLock] Height0 = HeightOnStart, Bounded = WorldHasBounds_OnRebuild, GBounds = WorldBoundsOnRebuild, Lock = CollisionMeshAccessLock]
{ {
//CollisionShareable无效则返回
if (!CollData.IsValid()) if (!CollData.IsValid())
{ {
if (Completion.IsValid()) if (Completion.IsValid())
@ -1542,9 +1543,8 @@ void AShaderWorldActor::CollisionCPU()
} }
FScopeLock CollisionMeshArrayAccess(Lock.Get()); FScopeLock CollisionMeshArrayAccess(Lock.Get());
//Brush相关
double CollisionWidth = CollData->CollisionResolution * (CollData->VerticePerPatch - 1); double CollisionWidth = CollData->CollisionResolution * (CollData->VerticePerPatch - 1);
TMap<FIntVector, FVector> BrushRedraws; TMap<FIntVector, FVector> BrushRedraws;
for (const FBox2d& B : BrushScope) for (const FBox2d& B : BrushScope)
{ {
@ -1571,7 +1571,6 @@ void AShaderWorldActor::CollisionCPU()
SWorldBounds.Max *= 100.0; SWorldBounds.Max *= 100.0;
TSet<FIntVector> ExternalCollisionsBounds; TSet<FIntVector> ExternalCollisionsBounds;
for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations) for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations)
{ {
if (SingleCamLoc.Bounds.IsValid) if (SingleCamLoc.Bounds.IsValid)
@ -1583,6 +1582,7 @@ void AShaderWorldActor::CollisionCPU()
CollData->MultipleCamera.Empty(); CollData->MultipleCamera.Empty();
CollData->LocRefs.Empty(); CollData->LocRefs.Empty();
//遍历所有Visitor之后往CollisionShareable中的LocRefs、MultipleCamera添加计算结果。
for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations) for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations)
{ {
if (SingleCamLoc.Bounds.IsValid) if (SingleCamLoc.Bounds.IsValid)
@ -1689,6 +1689,7 @@ void AShaderWorldActor::CollisionCPU()
WorldBounds.Min *= 100.0; WorldBounds.Min *= 100.0;
WorldBounds.Max *= 100.0; WorldBounds.Max *= 100.0;
//根据ShaderWorld边界来维护UsedCollisionMesh、CollisionMeshData、CollisionMeshToCreate、CollisionMeshToRenameMoveUpdate、GroundCollisionLayout
for (auto& ExternalBounds : ExternalCollisionsBounds) for (auto& ExternalBounds : ExternalCollisionsBounds)
{ {
FIntVector LocMeshInt = ExternalBounds; FIntVector LocMeshInt = ExternalBounds;
@ -1735,6 +1736,7 @@ void AShaderWorldActor::CollisionCPU()
} }
} }
//根据ShaderWorld MultipleCamera来维护UsedCollisionMesh、CollisionMeshData、CollisionMeshToCreate、CollisionMeshToRenameMoveUpdate、GroundCollisionLayout
for (auto& Elem : CollData->MultipleCamera) for (auto& Elem : CollData->MultipleCamera)
{ {
FIntVector& SingleCam = Elem.Key; FIntVector& SingleCam = Elem.Key;
@ -1796,6 +1798,7 @@ void AShaderWorldActor::CollisionCPU()
} }
} }
//开始下一轮循环bPreprocessingCollisionUpdate 设置为false
if (Completion.IsValid()) if (Completion.IsValid())
(*Completion.Get()) = false; (*Completion.Get()) = false;
} }