diff options
Diffstat (limited to 'Source')
21 files changed, 135 insertions, 94 deletions
diff --git a/Source/Asura.Framework/Class.lua b/Source/Asura.Framework/Class.lua index ee30c8d..94dc491 100644 --- a/Source/Asura.Framework/Class.lua +++ b/Source/Asura.Framework/Class.lua @@ -1,16 +1,19 @@ AsuraEngine.Class = {} + local Class = AsuraEngine.Class Class.__index = Class -function AsuraEngine.Class.Sub(cname) - local c = {} - c.class = cname - setmetatable(c, Class) +function Class.Sub(base, classname) + local subclass = {} + base.__index = base + setmetatable(subclass, base) return c end -function AsuraEngine.Class.New(self) +--实例化 +function Class.New(cls) local obj = {} - setmetatable(obj, self) - self.__index = self + setmetatable(obj, cls) + cls.__index = cls end + diff --git a/Source/Asura.Framework/Component.lua b/Source/Asura.Framework/Component.lua index a31b31c..289dc8e 100644 --- a/Source/Asura.Framework/Component.lua +++ b/Source/Asura.Framework/Component.lua @@ -3,15 +3,15 @@ AsuraEngine.Component = AsuraEngine.Class("Component") local Component = AsuraEngine.Component -- Component要显示在inspector的变量 -Component.mEntity = AsuraEngine.Type.GameObject +Component.gameobject = AsuraEngine.Type.GameObject function Component.Sub(cname) assert(Component.components[cname] == nil) end -function Component:Ctor(go) - self.mEntity = go +function Component:Ctor(gameobject) + self.gameobject = gameobject end function Component:OnEvent(e) diff --git a/Source/Asura.Framework/Filesystem/scene_loader.lua b/Source/Asura.Framework/Filesystem/scene_loader.lua index 3284c57..c0a951f 100644 --- a/Source/Asura.Framework/Filesystem/scene_loader.lua +++ b/Source/Asura.Framework/Filesystem/scene_loader.lua @@ -1,3 +1,5 @@ +local Scene = require "scene" + local loader = AsuraEngine.Loader.New("scene") function loader.Load(asset) diff --git a/Source/Asura.Framework/Graphics/Animator.lua b/Source/Asura.Framework/Graphics/Animator.lua index 7cc18a1..02f67ff 100644 --- a/Source/Asura.Framework/Graphics/Animator.lua +++ b/Source/Asura.Framework/Graphics/Animator.lua @@ -3,21 +3,21 @@ AsuraEngine.Animator = AsuraEngine.Component.Sub("Animator") local Animator = AsuraEngine.Animator -- Animator inspector variables. -Animator.mSpriteRenderer = AsuraEngine.Type.SpriteRenderer -Animator.mAnimation = AsuraEngine.Type.Animation +Animator.spriteRenderer = AsuraEngine.Type.SpriteRenderer +Animator.animation = AsuraEngine.Type.Animation -function Animator:Ctor(entity, animation) - self.base(entity) - self.mSpriteRenderer = entity:GetSpriteRenderer() - self.mAnimation = animation +function Animator:Ctor(gameobject, animation) + self.base(gameobject) + self.spriteRenderer = gameobject:GetSpriteRenderer() + self.animation = animation end function Animator:SetAnimation(animation) - self.mAnimation = animation + self.animation = animation end function Animator:GetAnimation() - return self.mAnimation + return self.animation end function Animator:OnUpdate(dt) diff --git a/Source/Asura.Framework/Graphics/Camera.lua b/Source/Asura.Framework/Graphics/Camera.lua index 039de1a..c8176f8 100644 --- a/Source/Asura.Framework/Graphics/Camera.lua +++ b/Source/Asura.Framework/Graphics/Camera.lua @@ -2,12 +2,12 @@ AsuraEngine.Camera = AsuraEngine.Component.Sub("Camera") local Camera = AsuraEngine.Camera -Camera.mIsCulling = AsuraEngine.Type.Bool -Camera.mIsOnScreen = AsuraEngine.Type.Bool +Camera.isCulling = AsuraEngine.Type.Bool +Camera.isOnScreen = AsuraEngine.Type.Bool function Camera.Ctor(self) - self.mIsCulling = false - self.mIsOnScreen = false + self.isCulling = false + self.isOnScreen = false end function Camera.OnUpdate(dt) diff --git a/Source/Asura.Framework/Graphics/particle_system.lua b/Source/Asura.Framework/Graphics/particle_system.lua index 17d52e7..055d1b2 100644 --- a/Source/Asura.Framework/Graphics/particle_system.lua +++ b/Source/Asura.Framework/Graphics/particle_system.lua @@ -4,8 +4,8 @@ AsuraEngine.ParticleSystem = AsuraEngine.Component.Sub("ParticleSystem") local ParticleSystem = AsuraEngine.ParticleSystem -function ParticleSystem.Ctor(self, entity, def) - self.base(entity) +function ParticleSystem.Ctor(self, gameobject, def) + self.base(gameobject) self.spriteRenderer = AsuraEngine.SpriteRenderer.New() end diff --git a/Source/Asura.Framework/Scene.lua b/Source/Asura.Framework/Scene.lua index 48a766c..c0eaaa8 100644 --- a/Source/Asura.Framework/Scene.lua +++ b/Source/Asura.Framework/Scene.lua @@ -1,12 +1,12 @@ -- --- 原点在左下角 +-- Scene是一系列gameobject的集合。 -- AsuraEngine.Scene = AsuraEngine.Asset.Sub("Scene") local Scene = AsuraEngine.Scene function Scene.Ctor(self) - self.entities = {} --当前场景的所有entity + self.rootGameObjects = {} --当前场景的所有root gameobject end --获取当前的场景 @@ -14,4 +14,8 @@ function Scene.GetCurrent() end +function Scene.ToAsset() + +end + return Scene
\ No newline at end of file diff --git a/Source/Asura.Framework/Transform.lua b/Source/Asura.Framework/Transform.lua index e45a027..a415921 100644 --- a/Source/Asura.Framework/Transform.lua +++ b/Source/Asura.Framework/Transform.lua @@ -1,8 +1,9 @@ -local Transform = AsuraEngine.Class("Transform") -AsuraEngine.Transform = Transform +-- transform的起点在左下角,逆时针为正向 +AsuraEngine.Transform = AsuraEngine.Class("Transform") +local Transform = AsuraEngine.Transform function Transform.Ctor(self) - self.position = {} - self.rotation = {} - self.size = {} + self.position = {x=0, y=0} + self.rotation = 0 + self.size = {w=0, h=0} end diff --git a/Source/Asura.Framework/class.lua b/Source/Asura.Framework/class.lua index ee30c8d..94dc491 100644 --- a/Source/Asura.Framework/class.lua +++ b/Source/Asura.Framework/class.lua @@ -1,16 +1,19 @@ AsuraEngine.Class = {} + local Class = AsuraEngine.Class Class.__index = Class -function AsuraEngine.Class.Sub(cname) - local c = {} - c.class = cname - setmetatable(c, Class) +function Class.Sub(base, classname) + local subclass = {} + base.__index = base + setmetatable(subclass, base) return c end -function AsuraEngine.Class.New(self) +--实例化 +function Class.New(cls) local obj = {} - setmetatable(obj, self) - self.__index = self + setmetatable(obj, cls) + cls.__index = cls end + diff --git a/Source/Asura.Framework/component.lua b/Source/Asura.Framework/component.lua index a31b31c..289dc8e 100644 --- a/Source/Asura.Framework/component.lua +++ b/Source/Asura.Framework/component.lua @@ -3,15 +3,15 @@ AsuraEngine.Component = AsuraEngine.Class("Component") local Component = AsuraEngine.Component -- Component要显示在inspector的变量 -Component.mEntity = AsuraEngine.Type.GameObject +Component.gameobject = AsuraEngine.Type.GameObject function Component.Sub(cname) assert(Component.components[cname] == nil) end -function Component:Ctor(go) - self.mEntity = go +function Component:Ctor(gameobject) + self.gameobject = gameobject end function Component:OnEvent(e) diff --git a/Source/Asura.Framework/filesystem/entity_loader.lua b/Source/Asura.Framework/filesystem/entity_loader.lua index 67a849d..771f86a 100644 --- a/Source/Asura.Framework/filesystem/entity_loader.lua +++ b/Source/Asura.Framework/filesystem/entity_loader.lua @@ -1,4 +1,4 @@ -local loader = AsuraEngine.Loader.New("entity") +local loader = AsuraEngine.Loader.New("gameobject") function loader.Load(asset) diff --git a/Source/Asura.Framework/filesystem/scene_loader.lua b/Source/Asura.Framework/filesystem/scene_loader.lua index 3284c57..c0a951f 100644 --- a/Source/Asura.Framework/filesystem/scene_loader.lua +++ b/Source/Asura.Framework/filesystem/scene_loader.lua @@ -1,3 +1,5 @@ +local Scene = require "scene" + local loader = AsuraEngine.Loader.New("scene") function loader.Load(asset) diff --git a/Source/Asura.Framework/entity.lua b/Source/Asura.Framework/gameobject.lua index b41d365..cd984ee 100644 --- a/Source/Asura.Framework/entity.lua +++ b/Source/Asura.Framework/gameobject.lua @@ -3,15 +3,20 @@ -- require "transform" -AsuraEngine.Entity = AsuraEngine.Asset.Sub("Entity") +AsuraEngine.GameObject = AsuraEngine.Asset.Sub("GameObject") -local Entity = AsuraEngine.Entity +local GameObject = AsuraEngine.GameObject -function Entity:Ctor() - self.transform = AsuraEngine.Transform.New() +function GameObject:Ctor() + self.transform = AsuraEngine.Transform.New() + self.subentities = {} -- Sub node entities end -function Entity:AddComponent(type, name) +function GameObject:AddChild(gameobject) + table.insert(self.child, gameobject) +end + +function GameObject:AddComponent(type, name) local cname = type if name == nil then cname = name @@ -21,20 +26,20 @@ function Entity:AddComponent(type, name) end -- 根据组件名拿到组件 -function Entity:GetComponent(name) +function GameObject:GetComponent(name) return self.components[name] end -- 根据组件类型拿到组件 -function Entity:GetComponentByType(tname) +function GameObject:GetComponentByType(tname) end -function Entity:OnEnable() +function GameObject:OnEnable() end -function Entity:OnEvent(e) +function GameObject:OnEvent(e) if self.components == nil or type(self.components) ~= "table" then AsuraEditor.LogError("") return @@ -46,7 +51,7 @@ function Entity:OnEvent(e) end end -function Entity:OnUpdate(dt) +function GameObject:OnUpdate(dt) for name, component in self.components do if component.OnUpdate ~= nil then component:OnUpdate(dt) @@ -54,7 +59,7 @@ function Entity:OnUpdate(dt) end end -function Entity:OnRender() +function GameObject:OnRender() for name, component in self.components do if component.OnRender ~= nil then component.OnRender() @@ -62,7 +67,7 @@ function Entity:OnRender() end end -function Entity:OnDisable() +function GameObject:OnDisable() for name, component in self.components do if component.OnDisable ~= nil then component.OnDisable() @@ -70,41 +75,41 @@ function Entity:OnDisable() end end -function Entity:GetTrasform() +function GameObject:GetTrasform() return self.transform end -function Entity:GetPosition() +function GameObject:GetPosition() end -function Entity:GetScale() +function GameObject:GetScale() end -function Entity:GetRotation() +function GameObject:GetRotation() end -function Entity:SetTrasform(transform) +function GameObject:SetTrasform(transform) end -function Entity:SetPosition() +function GameObject:SetPosition() end -function Entity:SetScale() +function GameObject:SetScale() end -function Entity:SetRotation() +function GameObject:SetRotation() end --写asset -function Entity:ToAsset() +function GameObject:ToAsset() end -return Entity
\ No newline at end of file +return GameObject
\ No newline at end of file diff --git a/Source/Asura.Framework/graphics/animator.lua b/Source/Asura.Framework/graphics/animator.lua index 7cc18a1..02f67ff 100644 --- a/Source/Asura.Framework/graphics/animator.lua +++ b/Source/Asura.Framework/graphics/animator.lua @@ -3,21 +3,21 @@ AsuraEngine.Animator = AsuraEngine.Component.Sub("Animator") local Animator = AsuraEngine.Animator -- Animator inspector variables. -Animator.mSpriteRenderer = AsuraEngine.Type.SpriteRenderer -Animator.mAnimation = AsuraEngine.Type.Animation +Animator.spriteRenderer = AsuraEngine.Type.SpriteRenderer +Animator.animation = AsuraEngine.Type.Animation -function Animator:Ctor(entity, animation) - self.base(entity) - self.mSpriteRenderer = entity:GetSpriteRenderer() - self.mAnimation = animation +function Animator:Ctor(gameobject, animation) + self.base(gameobject) + self.spriteRenderer = gameobject:GetSpriteRenderer() + self.animation = animation end function Animator:SetAnimation(animation) - self.mAnimation = animation + self.animation = animation end function Animator:GetAnimation() - return self.mAnimation + return self.animation end function Animator:OnUpdate(dt) diff --git a/Source/Asura.Framework/graphics/camera.lua b/Source/Asura.Framework/graphics/camera.lua index 039de1a..c8176f8 100644 --- a/Source/Asura.Framework/graphics/camera.lua +++ b/Source/Asura.Framework/graphics/camera.lua @@ -2,12 +2,12 @@ AsuraEngine.Camera = AsuraEngine.Component.Sub("Camera") local Camera = AsuraEngine.Camera -Camera.mIsCulling = AsuraEngine.Type.Bool -Camera.mIsOnScreen = AsuraEngine.Type.Bool +Camera.isCulling = AsuraEngine.Type.Bool +Camera.isOnScreen = AsuraEngine.Type.Bool function Camera.Ctor(self) - self.mIsCulling = false - self.mIsOnScreen = false + self.isCulling = false + self.isOnScreen = false end function Camera.OnUpdate(dt) diff --git a/Source/Asura.Framework/graphics/canvas.lua b/Source/Asura.Framework/graphics/canvas.lua index 2ccb033..248c3ab 100644 --- a/Source/Asura.Framework/graphics/canvas.lua +++ b/Source/Asura.Framework/graphics/canvas.lua @@ -3,32 +3,32 @@ AsuraEngine.Canvas = AsuraEngine.Component.Sub("Canvas") local Canvas = AsuraEngine.Canvas function Canvas.Ctor(self, width, height) - self.mSimCanvas = AsuraEngine.SimCanvas.New(width, height) - self.mWidth = width - self.mHeight = height + self.simCanvas = AsuraEngine.SimCanvas.New(width, height) + self.width = width + self.height = height end function Canvas.GetWidth(self) - return self.mWidth + return self.width end function Canvas.GetHeight(self) - return self.mHeight + return self.height end function Canvas.GetSize(self) - return self.mWidth, self.mHeight + return self.width, self.height end function Canvas.OnEnable(self) - if self.mSimCanvas == nil then + if self.simCanvas == nil then return end - self.mSimCanvas:Begin() + self.simCanvas:Begin() end function Canvas.OnDisable(self) - + end return Canvas
\ No newline at end of file diff --git a/Source/Asura.Framework/graphics/particle_system.lua b/Source/Asura.Framework/graphics/particle_system.lua index 17d52e7..055d1b2 100644 --- a/Source/Asura.Framework/graphics/particle_system.lua +++ b/Source/Asura.Framework/graphics/particle_system.lua @@ -4,8 +4,8 @@ AsuraEngine.ParticleSystem = AsuraEngine.Component.Sub("ParticleSystem") local ParticleSystem = AsuraEngine.ParticleSystem -function ParticleSystem.Ctor(self, entity, def) - self.base(entity) +function ParticleSystem.Ctor(self, gameobject, def) + self.base(gameobject) self.spriteRenderer = AsuraEngine.SpriteRenderer.New() end diff --git a/Source/Asura.Framework/managers/scene_manager.lua b/Source/Asura.Framework/managers/scene_manager.lua new file mode 100644 index 0000000..fc5a6ba --- /dev/null +++ b/Source/Asura.Framework/managers/scene_manager.lua @@ -0,0 +1,16 @@ +AsuraEngine.SceneManager = AsuraEngine.Class("SceneManager") + +local SceneManager = AsuraEngine.SceneManager + +--游戏里的所有场景 +SceneManager.scenes = {} + +function SceneManager.Ctor() + +end + +function SceneManager.GetSceneByGUID() + +end + +return SceneManager
\ No newline at end of file diff --git a/Source/Asura.Framework/managers/sprite_manager.lua b/Source/Asura.Framework/managers/sprite_manager.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Framework/managers/sprite_manager.lua diff --git a/Source/Asura.Framework/scene.lua b/Source/Asura.Framework/scene.lua index 48a766c..c0eaaa8 100644 --- a/Source/Asura.Framework/scene.lua +++ b/Source/Asura.Framework/scene.lua @@ -1,12 +1,12 @@ -- --- 原点在左下角 +-- Scene是一系列gameobject的集合。 -- AsuraEngine.Scene = AsuraEngine.Asset.Sub("Scene") local Scene = AsuraEngine.Scene function Scene.Ctor(self) - self.entities = {} --当前场景的所有entity + self.rootGameObjects = {} --当前场景的所有root gameobject end --获取当前的场景 @@ -14,4 +14,8 @@ function Scene.GetCurrent() end +function Scene.ToAsset() + +end + return Scene
\ No newline at end of file diff --git a/Source/Asura.Framework/transform.lua b/Source/Asura.Framework/transform.lua index e45a027..a415921 100644 --- a/Source/Asura.Framework/transform.lua +++ b/Source/Asura.Framework/transform.lua @@ -1,8 +1,9 @@ -local Transform = AsuraEngine.Class("Transform") -AsuraEngine.Transform = Transform +-- transform的起点在左下角,逆时针为正向 +AsuraEngine.Transform = AsuraEngine.Class("Transform") +local Transform = AsuraEngine.Transform function Transform.Ctor(self) - self.position = {} - self.rotation = {} - self.size = {} + self.position = {x=0, y=0} + self.rotation = 0 + self.size = {w=0, h=0} end |