Untitled

 avatar
unknown
plain_text
20 days ago
4.2 kB
3
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