86 lines
2.5 KiB
Lua
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
|