UGCProjects/TwoOnTwo/Script/Global/System/MyVehicleSystem.lua
2025-01-04 23:00:19 +08:00

59 lines
2.8 KiB
Lua

---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by LT.
--- DateTime: 2024/8/23 17:10
---
MyVehicleSystem = MyVehicleSystem or {}
MyVehicleSystem.VehicleClassName = "STExtraWheeledVehicle"
MyVehicleSystem.SpawnVehiclePointPath = UGCGameSystem.GetUGCResourcesFullPath('Asset/Blueprint/SceneActor/BP_VehicleSpawnPoint.BP_VehicleSpawnPoint_C')
function MyVehicleSystem.GetVehicleBaseClass()
if MyVehicleSystem.VehicleBaseClass == nil then
MyVehicleSystem.VehicleBaseClass = ScriptGameplayStatics.FindClass(MyVehicleSystem.VehicleClassName)
end
return MyVehicleSystem.VehicleBaseClass
end
function MyVehicleSystem.GetSpawnVehiclePointClass()
if MyVehicleSystem.VehicleBaseClass == nil then
MyVehicleSystem.VehicleBaseClass = UE.LoadClass(MyVehicleSystem.SpawnVehiclePointPath)
end
return MyVehicleSystem.VehicleBaseClass
end
--- 保存当前场景中载具的信息
function MyVehicleSystem.SaveAllVehicleTF(MapIndex)
MyVehicleSystem.AllVehicleTF = {}
--local AllVehicles = {}
--AllVehicles = ScriptGameplayStatics.GetActorsOfClass(UGCGameSystem.GameState, MyVehicleSystem.GetVehicleBaseClass(), {})
--for i, VehicleInst in pairs(AllVehicles) do
-- MyVehicleSystem.AllVehicleTF[#MyVehicleSystem.AllVehicleTF + 1] = {VehicleID = VehicleInst.VehicleConfigID, Pos = VehicleInst:K2_GetActorLocation(), Rot = VehicleInst:K2_GetActorRotation(), Inst = VehicleInst}
--end
--UGCLogSystem.LogTree("[MyVehicleSystem_SaveAllVehicleTF]", MyVehicleSystem.AllVehicleTF)
MyVehicleSystem.AllVehicleTF = {}
local AllVehicleSpawnPoints = ScriptGameplayStatics.GetActorsOfClass(UGCGameSystem.GameState, MyVehicleSystem.GetSpawnVehiclePointClass(), {})
for i, v in pairs(AllVehicleSpawnPoints) do
UGCLogSystem.Log("[MyVehicleSystem_SaveAllVehicleTF] VehiclePath:%s", v.VehiclePath)
if MapIndex == nil or MapIndex == v.MapIndex then
MyVehicleSystem.AllVehicleTF[#MyVehicleSystem.AllVehicleTF + 1] = {VehiclePath = v.VehiclePath, Pos = v:K2_GetActorLocation(), Rot = v:K2_GetActorRotation(), Inst = nil}
end
end
UGCLogSystem.LogTree("[MyVehicleSystem_SaveAllVehicleTF]", MyVehicleSystem.AllVehicleTF)
end
--- 移除场景中的载具
function MyVehicleSystem.DestroyAllSavedVehicle()
for i, v in pairs(MyVehicleSystem.AllVehicleTF) do
if UE.IsValid(v.Inst) then
UGCVehicleSystem.DestroySelf(v.Inst)
end
end
end
--- 重置当前场景中的载具,需要先调移除
function MyVehicleSystem.ResetAllSavedVehicle()
for i, v in pairs(MyVehicleSystem.AllVehicleTF) do
MyVehicleSystem.AllVehicleTF[i].Inst = UGCVehicleSystem.SpawnVehicleNew(v.VehiclePath, v.Pos, v.Rot, true)
UGCLogSystem.Log("[MyVehicleSystem_ResetAllSavedVehicle] Inst:%s", tostring(MyVehicleSystem.AllVehicleTF[i].Inst))
end
end