From c581dfbf1e849f393861d15e82aa6446c0c1c310 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 31 Jan 2019 09:06:15 +0800 Subject: *misc --- Source/Asura.Framework/scripts/gameobject.lua | 115 ++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 Source/Asura.Framework/scripts/gameobject.lua (limited to 'Source/Asura.Framework/scripts/gameobject.lua') diff --git a/Source/Asura.Framework/scripts/gameobject.lua b/Source/Asura.Framework/scripts/gameobject.lua new file mode 100644 index 0000000..cd984ee --- /dev/null +++ b/Source/Asura.Framework/scripts/gameobject.lua @@ -0,0 +1,115 @@ +-- +-- 实体,作为scene中的实体存在。Scene中唯一管理的就是实体entity,游戏里的所有component都依附于entity存在,包括camera组件。 +-- +require "transform" + +AsuraEngine.GameObject = AsuraEngine.Asset.Sub("GameObject") + +local GameObject = AsuraEngine.GameObject + +function GameObject:Ctor() + self.transform = AsuraEngine.Transform.New() + self.subentities = {} -- Sub node entities +end + +function GameObject:AddChild(gameobject) + table.insert(self.child, gameobject) +end + +function GameObject:AddComponent(type, name) + local cname = type + if name == nil then + cname = name + end + local component = AsuraEngine.Component.GetComponent(type) + self.components[cname] = compoennt +end + +-- 根据组件名拿到组件 +function GameObject:GetComponent(name) + return self.components[name] +end + +-- 根据组件类型拿到组件 +function GameObject:GetComponentByType(tname) + +end + +function GameObject:OnEnable() + +end + +function GameObject:OnEvent(e) + if self.components == nil or type(self.components) ~= "table" then + AsuraEditor.LogError("") + return + end + for name, component in self.components do + if component.OnEvent ~= nil then + component:OnEvent(e) + end + end +end + +function GameObject:OnUpdate(dt) + for name, component in self.components do + if component.OnUpdate ~= nil then + component:OnUpdate(dt) + end + end +end + +function GameObject:OnRender() + for name, component in self.components do + if component.OnRender ~= nil then + component.OnRender() + end + end +end + +function GameObject:OnDisable() + for name, component in self.components do + if component.OnDisable ~= nil then + component.OnDisable() + end + end +end + +function GameObject:GetTrasform() + return self.transform +end + +function GameObject:GetPosition() + +end + +function GameObject:GetScale() + +end + +function GameObject:GetRotation() + +end + +function GameObject:SetTrasform(transform) + +end + +function GameObject:SetPosition() + +end + +function GameObject:SetScale() + +end + +function GameObject:SetRotation() + +end + +--写asset +function GameObject:ToAsset() + +end + +return GameObject \ No newline at end of file -- cgit v1.1-26-g67d0