zworld-em/Content/Script/World.lua
2025-05-11 22:07:21 +08:00

86 lines
2.5 KiB
Lua

local WITH_LUAIDE_DEBUG = true
print("import World.lua")
if WITH_LUAIDE_DEBUG then
require "socket.core"
require("LuaPanda").start("127.0.0.1", 8818)
end
require "GameGlobal"
local class = class(GA, "World")
function class:ctor()
self._uWorldContext = nil
self._registerManager = {}
end
function class:registerLuaManager(key, luaclass)
if self[key] then
return
end
local manager = luaclass.new()
manager:init()
self[key] = manager
table.insert(self._registerManager, manager)
end
function class:registerUManager(key, uclass, script)
local manager = self:spawnLuaActor(uclass, script, UE.FVector(0.0, 0.0, 0.0), UE.FRotator(0, 0, 0))
manager:init()
self[key] = manager
table.insert(self._registerManager, manager)
end
function class:CreateSubSystem()
end
function class:ReInitializeWorld(WorldContext)
self._uWorldContext = WorldContext
end
function class:InitializeWorld(WorldContext)
self:CreateSubSystem()
self._uWorldContext = WorldContext
for key, luaclass in pairs(GA.initManagerList) do
self:registerLuaManager(key, luaclass)
end
GA.initManagerList = nil
end
function class:getWorldContext()
return self._uWorldContext
end
function class:getWorldObject()
return self._uWorldContext
end
function class:getMainController()
return UE.UGameplayStatics.GetPlayerController(self._uWorldContext, 0)
end
function class:getMainPlayer()
return UE.UGameplayStatics.GetPlayerPawn(self._uWorldContext, 0)
end
function class:beginPlay()
print("world beginPlay " , self._uWorldContext:GetName())
end
function class:tick(dt)
for _, manager in pairs(self._registerManager) do
if manager.tick then
manager:tick(dt)
end
end
end
function class:lateTick(dt)
for _, manager in pairs(self._registerManager) do
if manager.lateTick then
manager:lateTick(dt)
end
end
end
function class:spawnActor(uclass, uLocation, uRotation, params)
local transform = UE.FTransform(uRotation:ToQuat(), uLocation)
return self._uWorldContext:SpawnActor(uclass, transform, params and params.collisionHandle or
UE.ESpawnActorCollisionHandlingMethod.AlwaysSpawn)
end
function class:spawnLuaActor(uclass, script, uLocation, uRotation, params)
local transform = UE.FTransform(uRotation:ToQuat(), uLocation)
return self._uWorldContext:SpawnActor(uclass, transform, params and params.collisionHandle or
UE.ESpawnActorCollisionHandlingMethod.AlwaysSpawn, self, self, script)
end
return class