vault backup: 2025-07-15 23:58:06

This commit is contained in:
BlueRose 2025-07-15 23:58:06 +08:00
parent 40943af304
commit 65d043ec2b

View File

@ -652,9 +652,6 @@ bool AShaderWorldActor::CollisionPreprocessGPU()
return true;
}
```
#### CollisionGPU()
```c++
@ -1481,7 +1478,7 @@ void AShaderWorldActor::UpdateCollisionMeshData(FCollisionMeshElement& Mesh)
}
```
### CollisionCPU
#### CollisionCPU
```c++
void AShaderWorldActor::CollisionCPU()
@ -1512,22 +1509,24 @@ void AShaderWorldActor::CollisionCPU()
}
//通过AShaderWorldActor::UpdateCollisionInRegion()来添加碰撞重建区域
bool bExternalCollisionRebuildRequest = !CollisionUpdateRequest.IsEmpty();
FBox2D BPCollisionRebuildRequest(ForceInit);
//从CollisionUpdateRequest队列中取出碰撞更新范围
if (bExternalCollisionRebuildRequest)
CollisionUpdateRequest.Dequeue(BPCollisionRebuildRequest);
TArray<ShaderWorld::FVisitor> VisitorLocations;
// Use latest camera we know if current array is empty
//在BeginPlay()会将ShaderWorld Actor的Location添加到CameraLocations中。
//在UpdateCameraLocation()中会将这个函数会在Setup()中调用。
// USWorldSubsystem::Tick()中会调用UpdateVisitors()获取所有USW_CollisionComponent。
if (CameraLocations.Num() <= 0)
VisitorLocations.Add(CamLocation);
VisitorLocations.Append(CameraLocations);
//将bPreprocessingCollisionUpdate线程安全变量设置为true
(*bPreprocessingCollisionUpdate.Get()) = true;
Async(EAsyncExecution::TaskGraph, [Completion = bPreprocessingCollisionUpdate, CollData = CollisionShareable,
@ -1547,7 +1546,6 @@ void AShaderWorldActor::CollisionCPU()
double CollisionWidth = CollData->CollisionResolution * (CollData->VerticePerPatch - 1);
TMap<FIntVector, FVector> BrushRedraws;
for (const FBox2d& B : BrushScope)
{
const int32 MinBoxX_local = FMath::FloorToInt(((double)(B.Min.X + LocalOriginLocation.X)) / CollisionWidth + 0.45);