From dc653a3c7ffc2de34d8999b2a75a4ffb2ccb0d9b Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sat, 16 Nov 2019 07:10:32 +0700 Subject: [PATCH] add example scripts --- samples/bin/library/scenes/sample_07.json | 21 +++++--- .../library/scripts/sample_07/fps_label.lua | 40 +++++++++++++++ .../bin/library/scripts/sample_07/gnome.lua | 49 +++++++++++++++++++ .../library/scripts/sample_07/sample_07.lua | 22 +++++++++ 4 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 samples/bin/library/scripts/sample_07/fps_label.lua create mode 100644 samples/bin/library/scripts/sample_07/gnome.lua create mode 100644 samples/bin/library/scripts/sample_07/sample_07.lua diff --git a/samples/bin/library/scenes/sample_07.json b/samples/bin/library/scenes/sample_07.json index 90f11ee8..7d8a9360 100644 --- a/samples/bin/library/scenes/sample_07.json +++ b/samples/bin/library/scenes/sample_07.json @@ -1,6 +1,9 @@ { "components" : { - "scene" : {} + "scene" : {}, + "behaviour" : { + "script" : "../scripts/sample_07/sample_07.lua" + } }, "children" : [{ "prototype" : "../prefabs/camera_prefab.json" @@ -10,20 +13,26 @@ "actor" : { "translation" : [0,0,0], "scale" : 20 + }, + "behaviour" : { + "script" : "../scripts/sample_07/gnome.lua" } } - }, { + },{ "prototype" : "../prefabs/label_sdf_prefab.json", "components" : { "label" : { - "text" : "Hello World!", - "valign" : "center", + "text" : "FPS: ", + "halign" : "left", "outline_width" : 0.5, "outline_color" : [0,0,0,255] }, "actor" : { - "translation" : [0.5,-180.5,0], - "scale" : 2 + "translation" : [-315,-235,0], + "scale" : 1 + }, + "behaviour" : { + "script" : "../scripts/sample_07/fps_label.lua" } } }] diff --git a/samples/bin/library/scripts/sample_07/fps_label.lua b/samples/bin/library/scripts/sample_07/fps_label.lua new file mode 100644 index 00000000..c67e08b5 --- /dev/null +++ b/samples/bin/library/scripts/sample_07/fps_label.lua @@ -0,0 +1,40 @@ +-- ----------------------------------------------------------------------------- +-- +-- private +-- +-- ----------------------------------------------------------------------------- + +---@class fps_label_meta +---@field last_fps number + +---@param meta fps_label_meta +---@param go gobject +local function update_label_text(meta, go) + local curr_fps = the_engine.frame_rate + if meta.last_fps ~= curr_fps then + meta.last_fps = curr_fps + go.label.text = "FPS: " .. curr_fps + end +end + +-- ----------------------------------------------------------------------------- +-- +-- meta +-- +-- ----------------------------------------------------------------------------- + +local M = {} + +---@param meta fps_label_meta +---@param go gobject +function M.on_start(meta, go) + meta.last_fps = -1 +end + +---@param meta fps_label_meta +---@param go gobject +function M.on_update(meta, go) + update_label_text(meta, go) +end + +return M diff --git a/samples/bin/library/scripts/sample_07/gnome.lua b/samples/bin/library/scripts/sample_07/gnome.lua new file mode 100644 index 00000000..70c99526 --- /dev/null +++ b/samples/bin/library/scripts/sample_07/gnome.lua @@ -0,0 +1,49 @@ +-- ----------------------------------------------------------------------------- +-- +-- private +-- +-- ----------------------------------------------------------------------------- + +---@class gnome_meta +---@field life_time number + +---@param meta gnome_meta +---@param go gobject +local function update_life_time(meta, go) + meta.life_time = meta.life_time - the_engine.delta_time + if meta.life_time <= 0 then + go:destroy() + end +end + +---@param meta gnome_meta +---@param go gobject +local function update_gnome_rotation(meta, go) + go.actor.node.rotation = q4f.make_from_euler_angles( + radf.new(), + radf.new(the_engine.time), + radf.new()) +end + +-- ----------------------------------------------------------------------------- +-- +-- meta +-- +-- ----------------------------------------------------------------------------- + +local M = {} + +---@param meta gnome_meta +---@param go gobject +function M.on_start(meta, go) + meta.life_time = 5 +end + +---@param meta gnome_meta +---@param go gobject +function M.on_update(meta, go) + update_life_time(meta, go) + update_gnome_rotation(meta, go) +end + +return M diff --git a/samples/bin/library/scripts/sample_07/sample_07.lua b/samples/bin/library/scripts/sample_07/sample_07.lua new file mode 100644 index 00000000..5597ca2e --- /dev/null +++ b/samples/bin/library/scripts/sample_07/sample_07.lua @@ -0,0 +1,22 @@ +local M = {} + +---@param go gobject +function M:on_start(go) + the_debug:trace("sample_07: on_start") +end + +---@param go gobject +function M:on_update(go) +end + +---@param go gobject +---@param type string +---@param event any +function M:on_event(go, type, event) +end + +---@param go gobject +function M:on_shutdown(go) +end + +return M