diff options
Diffstat (limited to 'Source/modules/asura-framework/scripts/entity.lua')
-rw-r--r-- | Source/modules/asura-framework/scripts/entity.lua | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/Source/modules/asura-framework/scripts/entity.lua b/Source/modules/asura-framework/scripts/entity.lua new file mode 100644 index 0000000..ea8e14d --- /dev/null +++ b/Source/modules/asura-framework/scripts/entity.lua @@ -0,0 +1,114 @@ +-- +-- 实体,作为scene中的实体存在。Scene中唯一管理的就是实体entity,游戏里的所有component都依附于entity存在,包括camera组件。 +-- +module "AsuraEngine" +require "transform" + +AsuraEngine.Entity = AsuraEngine.Asset.Extend("Entity") + +local Entity = AsuraEngine.Entity + +function Entity:Ctor() + self.transform = AsuraEngine.Transform.New() + self.subentities = {} -- Extend node entities +end + +function Entity:AddChild(entity) + table.insert(self.child, entity) +end + +function Entity: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 Entity:GetComponent(name) + return self.components[name] +end + +function Entity:GetComponentByType(type) + +end + +function Entity:OnEnable() + +end + +function Entity: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 Entity:OnUpdate(dt) + for name, component in self.components do + if component.OnUpdate ~= nil then + component:OnUpdate(dt) + end + end +end + +function Entity:OnRender() + for name, component in self.components do + if component.OnRender ~= nil then + component.OnRender() + end + end +end + +function Entity:OnDisable() + for name, component in self.components do + if component.OnDisable ~= nil then + component.OnDisable() + end + end +end + +function Entity:GetTrasform() + return self.transform +end + +function Entity:GetPosition() + +end + +function Entity:GetScale() + +end + +function Entity:GetRotation() + +end + +function Entity:SetTrasform(transform) + +end + +function Entity:SetPosition() + +end + +function Entity:SetScale() + +end + +function Entity:SetRotation() + +end + +--写asset +function Entity:ToAsset() + +end + +return Entity
\ No newline at end of file |