vault backup: 2025-07-16 15:22:16
This commit is contained in:
parent
65d043ec2b
commit
f8f930a09f
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user