RALUCA_CAP

Notiță de trișat

Controale editor

Minix – Lua API Cheatsheet

Tot API-ul este sub tabela globală Engine. Semnăturile sunt exacte.

Tipuri & convenții

Componente

Engine.RegisterComponent{
  name   = "Transform",
  fields = { Position="vec3", Rotation="quat", Scale="vec3" }
}

-- sugar identic:
Engine.Component("Renderable", { Color="string" })

Operare pe entități

local e = Engine.CreateEntity()
Engine.AddComponent(e, "Transform", {...})
local tr = Engine.GetComponent(e, "Transform")
tr.Position.y = tr.Position.y + 1
Engine.SetComponent(e, "Transform", tr)

Engine.ForEach("Transform", function(eid, tr) ... end)

Behaviors

Engine.RegisterBehavior{
  name="Spinner", requires={"Transform"},
  tick=function(s,e,dt) ... end
}

Engine.Behavior("Jumper",{requires={"Transform"},tick=function(...)end})
Engine.AttachBehavior(e, "Spinner")

Sisteme

Engine.RegisterSystem{
  name="GravityPulse", mode="loop", tick=function(dt) ... end
}

Engine.RegisterSystem{
  name="HitEcho", mode="event", listens={"Hit"},
  onEvent=function(t,n,p) ... end
}

Evenimente

Engine.Emit(e, "Hit", { boost=2 })
Engine.Subscribe("Hit", function(e,n,p) ... end)
Engine.SubscribeEntity(e, "Hit", function(...) end)
Engine.Unsubscribe(id)

Timere

local t1 = Engine.After(1.5, function() ... end)
local t2 = Engine.Every(0.2, function() ... end)
Engine.ClearTimer(t2)

Input

local k = Engine.OnKeyDown("SPACE", function() ... end)
local u = Engine.OnKeyUp("ESC", function() ... end)
local m = Engine.OnMouseDown("LEFT", function() ... end)
Engine.Unsubscribe(k)

Spawn sugar

local e = Engine.Entity{
  Transform = { Position={x=0,y=1,z=0} },
  Renderable = { Color="Blue" },
  Box = { Size={x=1,y=1,z=1} },
  as = "Crate"
}

Utilitare

Engine.Global("Button", e)
Engine.Include("Scripts/ui.lua")
Engine.Log("hello from lua")

Rețete rapide

-- Box cu fizică + behavior
Engine.Component("Box", { Size="vec3" })
Engine.Behavior("Wiggle", {
  requires={"Transform"},
  tick=function(s,e,dt)
    s.t=(s.t or 0)+dt
    local tr=Engine.GetComponent(e,"Transform")
    tr.Position.y=2+math.sin(s.t)*0.25
    Engine.SetComponent(e,"Transform",tr)
  end
})
local e=Engine.Entity{ Transform={Position={x=8,y=2,z=8}} }
Engine.AttachBehavior(e,"Wiggle")