aboutsummaryrefslogtreecommitdiff
path: root/src/ecs/predicted.moon
diff options
context:
space:
mode:
Diffstat (limited to 'src/ecs/predicted.moon')
-rw-r--r--src/ecs/predicted.moon25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/ecs/predicted.moon b/src/ecs/predicted.moon
new file mode 100644
index 0000000..b8bdd28
--- /dev/null
+++ b/src/ecs/predicted.moon
@@ -0,0 +1,25 @@
+Component = require("ecs.component")
+
+class PredictedComponent extends Component
+ new: (name, properties, netc_name, calculate) =>
+ super(name, properties)
+ @netc_name = netc_name
+ assert(calculate and type(calculate) == "table", "Calculate must be a table, was " .. type(calculate))
+ @calculate = calculate
+ join: (entity) =>
+ @net = @entity\get(@netc_name)
+ @node = am.group!
+ @node\action(() ->
+ @forward!
+ )
+ @@node\append(@node)
+ super(entity)
+ leave: (entity) =>
+ @@node\remove(@node)
+ forward: () =>
+ for property, calculation in pairs(@calculate)
+ @properties[property] = calculation(@)
+
+
+
+PredictedComponent