From 99d967ced6b343708e944e91d2996ca49a4b8728 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 4 Nov 2021 02:46:33 +0500 Subject: [PATCH] Added extension methods for tables and entities, added inrange helper to libs --- koptilnya/libs/entity.txt | 7 +++++++ koptilnya/libs/math.txt | 3 +++ koptilnya/libs/table.txt | 31 ++++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 koptilnya/libs/entity.txt create mode 100644 koptilnya/libs/math.txt diff --git a/koptilnya/libs/entity.txt b/koptilnya/libs/entity.txt new file mode 100644 index 0000000..2db67fe --- /dev/null +++ b/koptilnya/libs/entity.txt @@ -0,0 +1,7 @@ +function getLocalVelocity(entity) + if not entity:isValid() then + return + end + + return entity:worldToLocal(entity:getVelocity() + entity:getPos()) +end diff --git a/koptilnya/libs/math.txt b/koptilnya/libs/math.txt new file mode 100644 index 0000000..e90f495 --- /dev/null +++ b/koptilnya/libs/math.txt @@ -0,0 +1,3 @@ +function inrange(value, min, max) + return value >= min and value <= max +end diff --git a/koptilnya/libs/table.txt b/koptilnya/libs/table.txt index 6e0e583..b34c250 100644 --- a/koptilnya/libs/table.txt +++ b/koptilnya/libs/table.txt @@ -1,5 +1,4 @@ -- @name koptilnya/libs/table - function table.chunk(tbl, size) size = size or 1 size = size > 0 and size or 1 @@ -64,3 +63,33 @@ function table.contains(tbl, ...) return result end end + +function table.map(tbl, action) + local res = {} + + for _, field in ipairs(tbl) do + table.insert(res, action(field)) + end + + return res +end + +function table.filter(tbl, predicate) + local res = {} + + for _, field in ipairs(tbl) do + if predicate(field) == true then + table.insert(res, field) + end + end + + return res +end + +function table.find(tbl, predicate) + for _, field in ipairs(tbl) do + if predicate(field) == true then + return field + end + end +end