diff options
Diffstat (limited to 'honey.bak/ecs-systems.lua')
-rw-r--r-- | honey.bak/ecs-systems.lua | 152 |
1 files changed, 76 insertions, 76 deletions
diff --git a/honey.bak/ecs-systems.lua b/honey.bak/ecs-systems.lua index 5dec159..e3f9d56 100644 --- a/honey.bak/ecs-systems.lua +++ b/honey.bak/ecs-systems.lua @@ -1,76 +1,76 @@ -local ecs = require 'honey.ecs'
-
-
-local module = {}
-setmetatable(module, {__index=_G})
-setfenv(1, module)
-
-
-
---===== transform cascading =====--
-
-local function recursiveComputeTransform(entity)
- if entity._transformComputed then
- return entity._transform
- end
- if entity.parent == false then
- entity._transformComputed = true
- entity._transform = entity.transform
- return entity.transform
- end
-
- entity._transformComputed = true
- local parentTransform = recursiveComputeTransform(entity.parent)
- entity._transform = parentTransform * entity.transform
- return entity._transform
-end
-
--- update transforms
-transformCascade = {
- filter=ecs.Filter.AND{"transform", "parent"},
- prepareEntity=function(self, entity)
- entity._transform = nil
- entity._transformComputed = false
- end,
- update=function(self, entity, dt)
- recursiveComputeTransform(entity)
- end,
- priority=98,
-}
-
-
---===== rendering =====--
-
-function renderCam(camera, priority)
- local priority = priority or 99
- return {
- filter=ecs.Filter.AND{"mesh", "shader", "transform"},
- update=function(self, entity, dt)
- entity.shader:use()
- entity.shader:configure{
- matrix={
- model=entity._transform,
- view=camera.view,
- projection=camera.projection,
- },
- }
- entity.mesh:drawElements()
- end,
- nopause=true,
- priority=priority,
- }
-end
-
---===== update functions =====--
-
-update = {
- filter=ecs.Filter.AND{"update"},
- update=function(self, entity, dt)
- entity.update(entity, dt)
- end,
- priority=50,
-}
-
-
-
-return module
+local ecs = require 'honey.ecs' + + +local module = {} +setmetatable(module, {__index=_G}) +setfenv(1, module) + + + +--===== transform cascading =====-- + +local function recursiveComputeTransform(entity) + if entity._transformComputed then + return entity._transform + end + if entity.parent == false then + entity._transformComputed = true + entity._transform = entity.transform + return entity.transform + end + + entity._transformComputed = true + local parentTransform = recursiveComputeTransform(entity.parent) + entity._transform = parentTransform * entity.transform + return entity._transform +end + +-- update transforms +transformCascade = { + filter=ecs.Filter.AND{"transform", "parent"}, + prepareEntity=function(self, entity) + entity._transform = nil + entity._transformComputed = false + end, + update=function(self, entity, dt) + recursiveComputeTransform(entity) + end, + priority=98, +} + + +--===== rendering =====-- + +function renderCam(camera, priority) + local priority = priority or 99 + return { + filter=ecs.Filter.AND{"mesh", "shader", "transform"}, + update=function(self, entity, dt) + entity.shader:use() + entity.shader:configure{ + matrix={ + model=entity._transform, + view=camera.view, + projection=camera.projection, + }, + } + entity.mesh:drawElements() + end, + nopause=true, + priority=priority, + } +end + +--===== update functions =====-- + +update = { + filter=ecs.Filter.AND{"update"}, + update=function(self, entity, dt) + entity.update(entity, dt) + end, + priority=50, +} + + + +return module |