Untitled
unknown
plain_text
8 months ago
4.2 kB
4
Indexable
FindIntersect(VehicleData:vehicle_data, Transform:transform)<transacts>:logic =
DebugDraw:debug_draw = debug_draw{Channel := my_debug_draw}
for:
ComparisonVehicleData:VehicleDatas
ComparisonVehicleData.Busy = true
ComparisonVehicleData.AssignedPlayerOption?
ComparisonVehicleData.AssignedPlayerOption <> VehicleData.AssignedPlayerOption
CompareTransform := ComparisonVehicleData.CurrentVehicleOption?.GetTransform()
do:
var Continue:logic = false
TopRightForwardVectorA := Transform.Translation + Transform.Rotation.GetLocalForward()*(1.0*VehicleData.VLength/2.0) + Transform.Rotation.GetLocalRight()*(1.0*VehicleData.VWidth/2.0) + Transform.Rotation.GetLocalUp()*(1.0*VehicleData.VHeight/2.0)
BottomLeftBackwardVectorA := Transform.Translation - Transform.Rotation.GetLocalForward()*(1.0*VehicleData.VLength/2.0) - Transform.Rotation.GetLocalRight()*(1.0*VehicleData.VWidth/2.0) - Transform.Rotation.GetLocalUp()*(1.0*VehicleData.VHeight/2.0)
TopRightForwardVectorB := CompareTransform.Translation + CompareTransform.Rotation.GetLocalForward()*(1.0*ComparisonVehicleData.VLength/2.0) + CompareTransform.Rotation.GetLocalRight()*(1.0*ComparisonVehicleData.VWidth/2.0) + CompareTransform.Rotation.GetLocalUp()*(1.0*ComparisonVehicleData.VHeight/2.0)
BottomLeftBackwardVectorB := CompareTransform.Translation - CompareTransform.Rotation.GetLocalForward()*(1.0*ComparisonVehicleData.VLength/2.0) - CompareTransform.Rotation.GetLocalRight()*(1.0*ComparisonVehicleData.VWidth/2.0) - CompareTransform.Rotation.GetLocalUp()*(1.0*ComparisonVehicleData.VHeight/2.0)
Print("======================================================")
Print("TopRightForwardVectorA: {TopRightForwardVectorA}")
Print("BottomLeftBackwardVectorA: {BottomLeftBackwardVectorA}")
Print("TopRightForwardVectorB: {TopRightForwardVectorB}")
Print("BottomLeftBackwardVectorB: {BottomLeftBackwardVectorB}")
Print("======================================================")
DebugDraw.DrawLine(TopRightForwardVectorA, BottomLeftBackwardVectorA , ?Color:=NamedColors.Blue, ?Thickness:= 10.0, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
DebugDraw.DrawLine(TopRightForwardVectorB, BottomLeftBackwardVectorB , ?Color:=NamedColors.Blue, ?Thickness:= 10.0, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
DebugDrawClampVector(
Transform,
1.0*VehicleData.VLength,
1.0*VehicleData.VWidth,
1.0*VehicleData.VHeight
)
DebugDrawClampVector(
CompareTransform,
1.0*ComparisonVehicleData.VLength,
1.0*ComparisonVehicleData.VWidth,
1.0*ComparisonVehicleData.VHeight
)
if:
TopRightForwardVectorA.X < BottomLeftBackwardVectorB.X or BottomLeftBackwardVectorA.X > TopRightForwardVectorB.X
then:
set Continue = true
if:
TopRightForwardVectorA.Y < BottomLeftBackwardVectorB.Y or BottomLeftBackwardVectorA.Y > TopRightForwardVectorB.Y
then:
set Continue = true
if:
TopRightForwardVectorA.Z < BottomLeftBackwardVectorB.Z or BottomLeftBackwardVectorA.Z > TopRightForwardVectorB.Z
then:
set Continue = true
if (Continue = false):
Print("Found intersection with a player space")
return true
Print("Intersection Transform: {Transform.Translation}")
DebugDrawClampVector(
Transform,
1.0*VehicleData.VLength,
1.0*VehicleData.VWidth,
1.0*VehicleData.VHeight
)
Print("No intersection with a player space found")
return false
Editor is loading...
Leave a Comment