48 lines
1.7 KiB
Lua
48 lines
1.7 KiB
Lua
|
---@class BP_SpawnPickupWrapper_C:AActor
|
||
|
---@field Box UBoxComponent
|
||
|
---@field DefaultSceneRoot USceneComponent
|
||
|
---@field ItemID int32
|
||
|
---@field DelayTime float
|
||
|
--Edit Below--
|
||
|
---@type BP_SpawnPickupWrapper_C
|
||
|
local BP_SpawnPickupWrapper = {
|
||
|
WrapperClass = nil;
|
||
|
PickupWrapper = nil;
|
||
|
};
|
||
|
|
||
|
|
||
|
function BP_SpawnPickupWrapper:ReceiveBeginPlay()
|
||
|
self.SuperClass.ReceiveBeginPlay(self);
|
||
|
if not self:HasAuthority() then return end
|
||
|
self.WrapperClass = UE.LoadClass(UGCBackPackSystem.GetPickupWrapperClassPath(self.ItemID))
|
||
|
self:SpawnItem()
|
||
|
end
|
||
|
|
||
|
function BP_SpawnPickupWrapper:SpawnItem()
|
||
|
if UE.IsValid(self.WrapperClass) then
|
||
|
self.PickupWrapper = ScriptGameplayStatics.SpawnActor(UGCGameSystem.GameState, self.WrapperClass, self:K2_GetActorLocation(), self:K2_GetActorRotation(), VectorHelper.ScaleOne());
|
||
|
if self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate then
|
||
|
self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate:Add(self.DelaySpawnItem, self)
|
||
|
UGCLogSystem.Log("[BP_SpawnPickupWrapper_SpawnItem] SpawnSucceed")
|
||
|
else
|
||
|
UGCLogSystem.Log("[BP_SpawnPickupWrapper_SpawnItem] UGC_PickUpWrapperDestroyDelegate is nil")
|
||
|
end
|
||
|
else
|
||
|
UGCLogSystem.LogError("[BP_SpawnPickupWrapper_SpawnItem] WrapperClass is not Valid")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function BP_SpawnPickupWrapper:DelaySpawnItem()
|
||
|
if self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate then
|
||
|
self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate:Remove(self.DelaySpawnItem, self)
|
||
|
end
|
||
|
UGCEventSystem.SetTimer(self,
|
||
|
function()
|
||
|
self:SpawnItem()
|
||
|
end,
|
||
|
self.DelayTime
|
||
|
)
|
||
|
end
|
||
|
|
||
|
|
||
|
return BP_SpawnPickupWrapper;
|