From e4d3c646312167dff6d29b3fc2d1a6182fcb3231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tur=C3=A1nszki=20J=C3=A1nos?= Date: Thu, 14 Mar 2024 17:47:16 +0100 Subject: [PATCH] lua loading screen interface (#816) --- Content/Content.vcxitems | 1 + Content/Content.vcxitems.filters | 3 + .../ScriptingAPI-Documentation.md | 14 +- .../assets/loadingscreen.png | Bin 0 -> 181458 bytes .../character_controller.lua | 693 +++++++++--------- WickedEngine/wiApplication.cpp | 17 - WickedEngine/wiApplication.h | 2 + WickedEngine/wiApplication_BindLua.cpp | 11 + WickedEngine/wiApplication_BindLua.h | 4 +- WickedEngine/wiFadeManager.cpp | 3 + WickedEngine/wiFadeManager.h | 17 +- WickedEngine/wiImageParams_BindLua.cpp | 20 + WickedEngine/wiImageParams_BindLua.h | 2 + WickedEngine/wiLoadingScreen.cpp | 51 +- WickedEngine/wiLoadingScreen.h | 18 +- WickedEngine/wiLoadingScreen_BindLua.cpp | 244 +++++- WickedEngine/wiLoadingScreen_BindLua.h | 8 +- WickedEngine/wiRenderPath2D.h | 2 +- WickedEngine/wiScene.cpp | 101 ++- WickedEngine/wiScene.h | 13 + WickedEngine/wiScene_Serializers.cpp | 5 +- WickedEngine/wiSprite_BindLua.cpp | 1 + WickedEngine/wiTextureHelper.cpp | 8 +- WickedEngine/wiVersion.cpp | 2 +- 24 files changed, 803 insertions(+), 437 deletions(-) create mode 100644 Content/scripts/character_controller/assets/loadingscreen.png diff --git a/Content/Content.vcxitems b/Content/Content.vcxitems index 874a615d5..93303f353 100644 --- a/Content/Content.vcxitems +++ b/Content/Content.vcxitems @@ -600,6 +600,7 @@ + diff --git a/Content/Content.vcxitems.filters b/Content/Content.vcxitems.filters index 951aba848..d0595d53c 100644 --- a/Content/Content.vcxitems.filters +++ b/Content/Content.vcxitems.filters @@ -569,6 +569,9 @@ scripts\character_controller\assets + + scripts\character_controller\assets + diff --git a/Content/Documentation/ScriptingAPI-Documentation.md b/Content/Documentation/ScriptingAPI-Documentation.md index 403f28aad..dd6472838 100644 --- a/Content/Documentation/ScriptingAPI-Documentation.md +++ b/Content/Documentation/ScriptingAPI-Documentation.md @@ -240,6 +240,8 @@ Specify Sprite properties, like position, size, etc. - DisableMirror() - EnableBackgroundBlur(opt float mip = 0) - DisableBackgroundBlur() +- SetMaskAlphaRange(float start, end) +- GetMaskAlphaRange() : float start, end - [outer]STENCILMODE_DISABLED : int - [outer]STENCILMODE_EQUAL : int @@ -1400,7 +1402,7 @@ This is the main entry point and manages the lifetime of the application. - [void-constructor]Application() - GetContent() : Resource? result - GetActivePath() : RenderPath? result -- SetActivePath(RenderPath path, opt float fadeSeconds,fadeColorR,fadeColorG,fadeColorB) +- SetActivePath(RenderPath path, opt float fadeSeconds, opt int fadeColorR = 0, fadeColorG = 0, fadeColorB = 0) - SetFrameSkip(bool enabled) -- enable/disable frame skipping in fixed update - SetTargetFrameRate(float fps) -- set target frame rate for fixed update and variable rate update when frame rate is locked - SetFrameRateLock(bool enabled) -- if enabled, variable rate update will use a fixed delta time @@ -1416,6 +1418,7 @@ This is the main entry point and manages the lifetime of the application. - GetCanvas() : Canvas canvas -- returns a copy of the application's current canvas - SetCanvas(Canvas canvas) -- applies the specified canvas to the application - Exit() -- Closes the program +- IsFaded() -- returns true when fadeout is full (fadeout can be set when switching paths with SetActivePath()) - [outer]SetProfilerEnabled(bool enabled) ### RenderPath @@ -1507,8 +1510,13 @@ Tonemap = { It is a RenderPath2D but one that internally manages resource loading and can display information about the process. It inherits functions from RenderPath2D. - [constructor]LoadingScreen() -- AddLoadingTask(string taskScript) -- OnFinished(string taskScript) +- AddLoadModelTask(string fileName, Matrix matrix) : Entity -- Adds a scene loading task into the global scene and returns the root entity handle immediately. The loading task will be started asynchronously when the LoadingScreen is activated by the Application. +- AddLoadModelTask(Scene scene, string fileName, Matrix matrix) : Entity -- Adds a scene loading task into the specified scene and returns the root entity handle immediately. The loading task will be started asynchronously when the LoadingScreen is activated by the Application. +- AddRenderPathActivationTask(RenderPath path, opt float fadeSeconds = 0, opt int fadeR = 0,fadeG = 0,fadeB = 0) -- loads resources of a RenderPath and activates it after all loading tasks have finished +- IsFinished() : bool -- returns true when all loading tasks have finished +- GetProgress() : int -- returns percentage of loading complete (0% - 100%) +- SetBackgroundTexture(Texture tex) -- set a full screen background texture that wil be displayed when loading screen is active +- GetBackgroundTexture() : Texture ### Primitives diff --git a/Content/scripts/character_controller/assets/loadingscreen.png b/Content/scripts/character_controller/assets/loadingscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..76439315660f1122c365823235ce7bfb814a0934 GIT binary patch literal 181458 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

dy+x~qX_KzdtAGL-Z90k%z!j82a;%xbg@Aacb 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 N002ovPDHLkV1kk}<97f6 literal 0 HcmV?d00001 diff --git a/Content/scripts/character_controller/character_controller.lua b/Content/scripts/character_controller/character_controller.lua index f85e62453..65f2634e8 100644 --- a/Content/scripts/character_controller/character_controller.lua +++ b/Content/scripts/character_controller/character_controller.lua @@ -278,9 +278,7 @@ local footprint_texture = Texture(script_dir() .. "assets/footprint.dds") local footprints = {} local animations = {} -local function LoadAnimations(model_name) - local anim_scene = Scene() - LoadModel(anim_scene, model_name) +local function LoadAnimations(anim_scene) animations = { IDLE = anim_scene.Entity_FindByName("idle"), WALK = anim_scene.Entity_FindByName("walk"), @@ -292,7 +290,6 @@ local function LoadAnimations(model_name) DANCE = anim_scene.Entity_FindByName("dance"), WAVE = anim_scene.Entity_FindByName("wave"), } - return anim_scene end local character_capsules = {} @@ -300,7 +297,7 @@ local voxelgrid = VoxelGrid(128,32,128) voxelgrid.SetVoxelSize(0.25) voxelgrid.SetCenter(Vector(0,0.1,0)) -local function Character(model_name, start_position, face, controllable, anim_scene) +local function Character(model_entity, start_position, face, controllable, anim_scene) local self = { model = INVALID_ENTITY, target_rot_horizontal = 0, @@ -350,7 +347,7 @@ local function Character(model_name, start_position, face, controllable, anim_sc dialogs = {}, next_dialog = 1, - Create = function(self, model_name, start_position, face, controllable) + Create = function(self, model_entity, start_position, face, controllable) self.start_position = start_position self.face = face self.face_next = face @@ -360,7 +357,7 @@ local function Character(model_name, start_position, face, controllable, anim_sc else self.layerMask = Layers.NPC end - self.model = LoadModel(model_name) + self.model = model_entity local layer = scene.Component_GetLayer(self.model) layer.SetLayerMask(self.layerMask) @@ -991,7 +988,7 @@ local function Character(model_name, start_position, face, controllable, anim_sc } - self:Create(model_name, start_position, face, controllable) + self:Create(model_entity, start_position, face, controllable) return self end @@ -1167,38 +1164,14 @@ local function ThirdPersonCamera(character) return self end -ClearWorld() -LoadModel(script_dir() .. "assets/level.wiscene") ---LoadModel(script_dir() .. "assets/terrain.wiscene") ---LoadModel(script_dir() .. "assets/waypoints.wiscene", matrix.Translation(Vector(1,0,2))) ---dofile(script_dir() .. "../dungeon_generator/dungeon_generator.lua") - -scene.VoxelizeScene(voxelgrid, false, FILTER_NAVIGATION_MESH | FILTER_COLLIDER, ~(Layers.Player | Layers.NPC)) -- player and npc layers not included in voxelization - -local anim_scene = LoadAnimations(script_dir() .. "assets/animations.wiscene") - -local player = Character(script_dir() .. "assets/character.wiscene", Vector(0,0.5,0), Vector(0,0,1), true, anim_scene) -local npcs = { - -- Patrolling NPC IDs: 1,2,3 - Character(script_dir() .. "assets/character.wiscene", Vector(4,0.1,4), Vector(0,0,-1), false, anim_scene), - Character(script_dir() .. "assets/character.wiscene", Vector(-8,1,4), Vector(-1,0,0), false, anim_scene), - Character(script_dir() .. "assets/character.wiscene", Vector(-2,0.1,8), Vector(-1,0,0), false, anim_scene), - - -- stationary NPC IDs: 3,4.... - Character(script_dir() .. "assets/character.wiscene", Vector(-1,0.1,-6), Vector(0,0,1), false, anim_scene), - --Character(script_dir() .. "assets/character.wiscene", Vector(10.8,0.1,4.1), Vector(0,0,-1), false, anim_scene), - --Character(script_dir() .. "assets/character.wiscene", Vector(11.1,4,7.2), Vector(-1,0,0), false, anim_scene), -} - -local camera = ThirdPersonCamera(player) - --- Main loop: runProcess(function() -- We will override the render path so we can invoke the script from Editor and controls won't collide with editor scripts -- Also save the active component that we can restore when ESCAPE is pressed local prevPath = application.GetActivePath() local path = RenderPath3D() + local loadingscreen = LoadingScreen() + --path.SetLightShaftsEnabled(true) path.SetLightShaftsStrength(0.01) path.SetAO(AO_MSAO) @@ -1208,18 +1181,343 @@ runProcess(function() path.SetOutlineThickness(1.7) path.SetOutlineColor(0,0,0,0.6) path.SetBloomThreshold(5) - application.SetActivePath(path) --application.SetInfoDisplay(false) - application.SetFPSDisplay(true) + --application.SetFPSDisplay(true) --path.SetResolutionScale(0.75) --path.SetFSR2Enabled(true) --path.SetFSR2Preset(FSR2_Preset.Performance) --SetProfilerEnabled(true) + -- Configure a simple loading progress bar: + local loadingbar = Sprite() + loadingbar.SetMaskTexture(texturehelper.CreateGradientTexture( + GradientType.Linear, + 2048, 1, + Vector(0, 0), Vector(1, 0), + GradientFlags.Inverse, + "111r" + )) + local loadingbarparams = loadingbar.GetParams() + loadingbarparams.SetColor(Vector(1,0.2,0.2,1)) + loadingbarparams.SetBlendMode(BLENDMODE_ALPHA) + loadingscreen.AddSprite(loadingbar) + loadingscreen.SetBackgroundTexture(Texture(script_dir() .. "assets/loadingscreen.png")) + + -- All LoadModel tasks are started by the LoadingScreen asynchronously, but we get back root Entity handles immediately: + local anim_scene = Scene() + loadingscreen.AddLoadModelTask(anim_scene, script_dir() .. "assets/animations.wiscene") + local loading_scene = Scene() + local character_entities = { + loadingscreen.AddLoadModelTask(loading_scene, script_dir() .. "assets/character.wiscene"), + loadingscreen.AddLoadModelTask(loading_scene, script_dir() .. "assets/character.wiscene"), + loadingscreen.AddLoadModelTask(loading_scene, script_dir() .. "assets/character.wiscene"), + loadingscreen.AddLoadModelTask(loading_scene, script_dir() .. "assets/character.wiscene"), + loadingscreen.AddLoadModelTask(loading_scene, script_dir() .. "assets/character.wiscene"), + } + loadingscreen.AddLoadModelTask(loading_scene, script_dir() .. "assets/level.wiscene") + loadingscreen.AddRenderPathActivationTask(path, application, 0.5) + application.SetActivePath(loadingscreen, 0.5) -- activate and switch to loading screen + + -- Because we are in a runProcess, we can block loading screen like this while application is still running normally: + -- Meanwhile, we can update the progress bar sprite + while not loadingscreen.IsFinished() do + update() -- gives back control for application for one frame, script waits until next update() phase + local canvas = application.GetCanvas() + loadingbarparams.SetPos(Vector(50, canvas.GetLogicalHeight() * 0.8)) + loadingbarparams.SetSize(Vector(canvas.GetLogicalWidth() - 100, 20)) + local progress = 1 - loadingscreen.GetProgress() / 100.0 + loadingbarparams.SetMaskAlphaRange(math.saturate(progress - 0.05), math.saturate(progress)) + loadingbar.SetParams(loadingbarparams) + end + + -- After loading finished, we clear the main scene, and merge loaded scene into it: + scene.Clear() + scene.Merge(loading_scene) + scene.Update(0) + + scene.VoxelizeScene(voxelgrid, false, FILTER_NAVIGATION_MESH | FILTER_COLLIDER, ~(Layers.Player | Layers.NPC)) -- player and npc layers not included in voxelization + + -- Parse animations from anim_scene, which was loaded by the loading screen: + LoadAnimations(anim_scene) + + -- Create characters from root Entity handles that were loaded by loading screen + local player = Character(character_entities[1], Vector(0,0.5,0), Vector(0,0,1), true, anim_scene) + local npcs = { + -- Patrolling NPC IDs: 1,2,3 + Character(character_entities[2], Vector(4,0.1,4), Vector(0,0,-1), false, anim_scene), + Character(character_entities[3], Vector(-8,1,4), Vector(-1,0,0), false, anim_scene), + Character(character_entities[4], Vector(-2,0.1,8), Vector(-1,0,0), false, anim_scene), + + -- stationary NPC IDs: 3,4.... + Character(character_entities[5], Vector(-1,0.1,-6), Vector(0,0,1), false, anim_scene), + --Character(character_entities[6], Vector(10.8,0.1,4.1), Vector(0,0,-1), false, anim_scene), + --Character(character_entities[7], Vector(11.1,4,7.2), Vector(-1,0,0), false, anim_scene), + } + + local camera = ThirdPersonCamera(player) + path.AddFont(conversation.font) path.AddFont(conversation.advance_font) + + local help_text = "Wicked Engine Character demo (LUA)\n\n" + help_text = help_text .. "Controls:\n" + help_text = help_text .. "#############\n" + help_text = help_text .. "WASD/arrows/left analog stick: walk\n" + help_text = help_text .. "SHIFT/right shoulder button: walk -> jog\n" + help_text = help_text .. "E/left shoulder button: jog -> run\n" + help_text = help_text .. "SPACE/gamepad X/gamepad button 3: Jump\n" + help_text = help_text .. "Right Mouse Button/Right thumbstick: rotate camera\n" + help_text = help_text .. "Scoll middle mouse/Left-Right triggers: adjust camera distance\n" + help_text = help_text .. "ESCAPE key: quit\n" + help_text = help_text .. "ENTER key: interact\n" + help_text = help_text .. "R: reload script\n" + help_text = help_text .. "H: toggle debug draw\n" + help_text = help_text .. "L: toggle framerate lock\n" + + -- Conversation dialogs: + local dialogtree = { + -- Dialog starts here: + {"Hello! Today is a nice day for a walk, isn't it? The sun is shining, the wind blows lightly, and the temperature is just perfect! To be honest, I don't need anything else to be happy."}, + {"I just finished my morning routine and I'm ready for the day. What should I do now...?"}, + { + "Anything I can do for you?", + choices = { + { + "Follow me!", + action = function() + conversation.character:Follow(player) + conversation.character.next_dialog = 4 + end + }, + { + "Never mind.", + action = function() + conversation.character.next_dialog = 5 + end + } + } + }, + + -- Dialog 4: When chosen [Follow me] or [Just keep following me] + {"Lead the way!", action_after = function() conversation:Exit() conversation.character.next_dialog = 6 end}, + + -- Dialog 5: When chosen [Never mind] - this also modifies mood (expression) and state (anim) while dialog is playing + { + "Have a nice day!", + action = function() + conversation.character.mood = Mood.Happy + conversation.character.state = States.WAVE + conversation.character.anim_amount = 0.1 + end, + action_after = function() + conversation.character.mood = Mood.Neutral + conversation.character.state = States.IDLE + conversation.character.anim_amount = 1 + conversation:Exit() + conversation.character.next_dialog = 1 + end + }, + + -- Dialog 6: After Dialog 4 finished, so character is following player + { + "Where are we going?", + choices = { + {"Just keep following me.", action = function() conversation.character.next_dialog = 4 end}, + {"Stay here!", action = function() conversation.character:Unfollow() end} + } + }, + {"Gotcha!"}, -- After chosen [Stay here] + } + + for i,npc in pairs(npcs) do + npc.dialogs = dialogtree + end + + -- Patrol waypoints: + + local waypoints = { + scene.Entity_FindByName("waypoint1"), + scene.Entity_FindByName("waypoint2"), + + scene.Entity_FindByName("waypoint3"), + scene.Entity_FindByName("waypoint4"), + scene.Entity_FindByName("waypoint5"), + scene.Entity_FindByName("waypoint6"), + + scene.Entity_FindByName("waypoint7"), + scene.Entity_FindByName("waypoint8"), + scene.Entity_FindByName("waypoint9"), + scene.Entity_FindByName("waypoint10"), + scene.Entity_FindByName("waypoint11"), + scene.Entity_FindByName("waypoint12"), + scene.Entity_FindByName("waypoint13"), + scene.Entity_FindByName("waypoint14"), + scene.Entity_FindByName("waypoint15"), + scene.Entity_FindByName("waypoint16"), + scene.Entity_FindByName("waypoint17"), + scene.Entity_FindByName("waypoint18"), + scene.Entity_FindByName("waypoint19"), + scene.Entity_FindByName("waypoint20"), + scene.Entity_FindByName("waypoint21"), + scene.Entity_FindByName("waypoint22"), + scene.Entity_FindByName("waypoint23"), + scene.Entity_FindByName("waypoint24"), + scene.Entity_FindByName("waypoint25"), + } + + -- Simplest 1-2 patrol: + if( + waypoints[1] ~= INVALID_ENTITY and + waypoints[2] ~= INVALID_ENTITY + ) then + npcs[1].patrol_waypoints = { + { + entity = waypoints[1], + wait = 0, + }, + { + entity = waypoints[2], + wait = 2, + }, + } + end + + -- Some more advanced, toggle between walk and jog, also swimming (because waypoints are across water mesh in test level): + if( + waypoints[3] ~= INVALID_ENTITY and + waypoints[4] ~= INVALID_ENTITY and + waypoints[5] ~= INVALID_ENTITY and + waypoints[6] ~= INVALID_ENTITY + ) then + npcs[2].patrol_waypoints = { + { + entity = waypoints[3], + wait = 0, + state = States.JOG, + }, + { + entity = waypoints[4], + wait = 0, + }, + { + entity = waypoints[5], + wait = 2, + }, + { + entity = waypoints[6], + wait = 0, + state = States.JOG, + }, + } + end + + + -- Run long circle: + if( + waypoints[7] ~= INVALID_ENTITY and + waypoints[8] ~= INVALID_ENTITY and + waypoints[9] ~= INVALID_ENTITY and + waypoints[10] ~= INVALID_ENTITY and + waypoints[11] ~= INVALID_ENTITY and + waypoints[12] ~= INVALID_ENTITY and + waypoints[13] ~= INVALID_ENTITY and + waypoints[14] ~= INVALID_ENTITY and + waypoints[15] ~= INVALID_ENTITY and + waypoints[16] ~= INVALID_ENTITY and + waypoints[17] ~= INVALID_ENTITY and + waypoints[18] ~= INVALID_ENTITY and + waypoints[19] ~= INVALID_ENTITY and + waypoints[20] ~= INVALID_ENTITY and + waypoints[21] ~= INVALID_ENTITY and + waypoints[22] ~= INVALID_ENTITY and + waypoints[23] ~= INVALID_ENTITY and + waypoints[24] ~= INVALID_ENTITY and + waypoints[25] ~= INVALID_ENTITY + ) then + npcs[3].patrol_waypoints = { + { + entity = waypoints[7], + state = States.JOG, + }, + { + entity = waypoints[8], + state = States.JOG, + }, + { + entity = waypoints[9], + state = States.JOG, + }, + { + entity = waypoints[10], + state = States.JOG, + }, + { + entity = waypoints[11], + state = States.JOG, + }, + { + entity = waypoints[12], + state = States.JOG, + }, + { + entity = waypoints[13], + state = States.JOG, + }, + { + entity = waypoints[14], + state = States.JOG, + }, + { + entity = waypoints[15], + state = States.JOG, + }, + { + entity = waypoints[16], + state = States.JOG, + }, + { + entity = waypoints[17], + state = States.JOG, + }, + { + entity = waypoints[18], + state = States.JOG, + wait = 2, -- little wait at top of slope + }, + { + entity = waypoints[19], + state = States.JOG, + }, + { + entity = waypoints[20], + state = States.JOG, + }, + { + entity = waypoints[21], + state = States.JOG, + }, + { + entity = waypoints[22], + state = States.JOG, + }, + { + entity = waypoints[23], + state = States.JOG, + }, + { + entity = waypoints[24], + state = States.JOG, + }, + { + entity = waypoints[25], + state = States.JOG, + }, + } + end + + -- Main loop: while true do player:Update() @@ -1262,58 +1560,7 @@ runProcess(function() scene.VoxelizeScene(voxelgrid, false, FILTER_NAVIGATION_MESH | FILTER_COLLIDER, ~(Layers.Player | Layers.NPC)) -- player and npc layers not included in voxelization end - update() - if not backlog_isactive() then - if(input.Press(KEYBOARD_BUTTON_ESCAPE)) then - -- restore previous component - -- so if you loaded this script from the editor, you can go back to the editor with ESC - backlog_post("EXIT") - killProcesses() - application.SetActivePath(prevPath) - return - end - if(input.Press(string.byte('R'))) then - -- reload script - backlog_post("RELOAD") - killProcesses() - application.SetActivePath(prevPath) - dofile(script_file()) - return - end - if input.Press(string.byte('L')) then - framerate_lock = not framerate_lock - application.SetFrameRateLock(framerate_lock) - if framerate_lock then - application.SetTargetFrameRate(framerate_lock_target) - end - end - end - - end - -end) - --- Draw -runProcess(function() - - local help_text = "Wicked Engine Character demo (LUA)\n\n" - help_text = help_text .. "Controls:\n" - help_text = help_text .. "#############\n" - help_text = help_text .. "WASD/arrows/left analog stick: walk\n" - help_text = help_text .. "SHIFT/right shoulder button: walk -> jog\n" - help_text = help_text .. "E/left shoulder button: jog -> run\n" - help_text = help_text .. "SPACE/gamepad X/gamepad button 3: Jump\n" - help_text = help_text .. "Right Mouse Button/Right thumbstick: rotate camera\n" - help_text = help_text .. "Scoll middle mouse/Left-Right triggers: adjust camera distance\n" - help_text = help_text .. "ESCAPE key: quit\n" - help_text = help_text .. "ENTER key: interact\n" - help_text = help_text .. "R: reload script\n" - help_text = help_text .. "H: toggle debug draw\n" - help_text = help_text .. "L: toggle framerate lock\n" - - while true do - -- Do some debug draw geometry: DrawDebugText(help_text, Vector(0,2,2), Vector(1,1,1,1), 0.1, DEBUG_TEXT_DEPTH_TEST) @@ -1362,249 +1609,37 @@ runProcess(function() end - -- Wait for the engine to render the scene - render() - end -end) - --- Conversation dialogs: -local dialogtree = { - -- Dialog starts here: - {"Hello! Today is a nice day for a walk, isn't it? The sun is shining, the wind blows lightly, and the temperature is just perfect! To be honest, I don't need anything else to be happy."}, - {"I just finished my morning routine and I'm ready for the day. What should I do now...?"}, - { - "Anything I can do for you?", - choices = { - { - "Follow me!", - action = function() - conversation.character:Follow(player) - conversation.character.next_dialog = 4 + update() + + if not backlog_isactive() then + if(input.Press(KEYBOARD_BUTTON_ESCAPE)) then + -- restore previous component + -- so if you loaded this script from the editor, you can go back to the editor with ESC + backlog_post("EXIT") + application.SetActivePath(prevPath) + killProcesses() + return + end + if(input.Press(string.byte('R'))) then + -- reload script + backlog_post("RELOAD") + application.SetActivePath(prevPath, 0.5) + while not application.IsFaded() do + update() end - }, - { - "Never mind.", - action = function() - conversation.character.next_dialog = 5 + killProcesses() + dofile(script_file()) + return + end + if input.Press(string.byte('L')) then + framerate_lock = not framerate_lock + application.SetFrameRateLock(framerate_lock) + if framerate_lock then + application.SetTargetFrameRate(framerate_lock_target) end - } - } - }, - - -- Dialog 4: When chosen [Follow me] or [Just keep following me] - {"Lead the way!", action_after = function() conversation:Exit() conversation.character.next_dialog = 6 end}, - - -- Dialog 5: When chosen [Never mind] - this also modifies mood (expression) and state (anim) while dialog is playing - { - "Have a nice day!", - action = function() - conversation.character.mood = Mood.Happy - conversation.character.state = States.WAVE - conversation.character.anim_amount = 0.1 - end, - action_after = function() - conversation.character.mood = Mood.Neutral - conversation.character.state = States.IDLE - conversation.character.anim_amount = 1 - conversation:Exit() - conversation.character.next_dialog = 1 + end end - }, - - -- Dialog 6: After Dialog 4 finished, so character is following player - { - "Where are we going?", - choices = { - {"Just keep following me.", action = function() conversation.character.next_dialog = 4 end}, - {"Stay here!", action = function() conversation.character:Unfollow() end} - } - }, - {"Gotcha!"}, -- After chosen [Stay here] -} - -for i,npc in pairs(npcs) do - npc.dialogs = dialogtree -end - --- Patrol waypoints: - -local waypoints = { - scene.Entity_FindByName("waypoint1"), - scene.Entity_FindByName("waypoint2"), - - scene.Entity_FindByName("waypoint3"), - scene.Entity_FindByName("waypoint4"), - scene.Entity_FindByName("waypoint5"), - scene.Entity_FindByName("waypoint6"), - - scene.Entity_FindByName("waypoint7"), - scene.Entity_FindByName("waypoint8"), - scene.Entity_FindByName("waypoint9"), - scene.Entity_FindByName("waypoint10"), - scene.Entity_FindByName("waypoint11"), - scene.Entity_FindByName("waypoint12"), - scene.Entity_FindByName("waypoint13"), - scene.Entity_FindByName("waypoint14"), - scene.Entity_FindByName("waypoint15"), - scene.Entity_FindByName("waypoint16"), - scene.Entity_FindByName("waypoint17"), - scene.Entity_FindByName("waypoint18"), - scene.Entity_FindByName("waypoint19"), - scene.Entity_FindByName("waypoint20"), - scene.Entity_FindByName("waypoint21"), - scene.Entity_FindByName("waypoint22"), - scene.Entity_FindByName("waypoint23"), - scene.Entity_FindByName("waypoint24"), - scene.Entity_FindByName("waypoint25"), -} - --- Simplest 1-2 patrol: -if( - waypoints[1] ~= INVALID_ENTITY and - waypoints[2] ~= INVALID_ENTITY -) then - npcs[1].patrol_waypoints = { - { - entity = waypoints[1], - wait = 0, - }, - { - entity = waypoints[2], - wait = 2, - }, - } -end - --- Some more advanced, toggle between walk and jog, also swimming (because waypoints are across water mesh in test level): -if( - waypoints[3] ~= INVALID_ENTITY and - waypoints[4] ~= INVALID_ENTITY and - waypoints[5] ~= INVALID_ENTITY and - waypoints[6] ~= INVALID_ENTITY -) then - npcs[2].patrol_waypoints = { - { - entity = waypoints[3], - wait = 0, - state = States.JOG, - }, - { - entity = waypoints[4], - wait = 0, - }, - { - entity = waypoints[5], - wait = 2, - }, - { - entity = waypoints[6], - wait = 0, - state = States.JOG, - }, - } -end - - --- Run long circle: -if( - waypoints[7] ~= INVALID_ENTITY and - waypoints[8] ~= INVALID_ENTITY and - waypoints[9] ~= INVALID_ENTITY and - waypoints[10] ~= INVALID_ENTITY and - waypoints[11] ~= INVALID_ENTITY and - waypoints[12] ~= INVALID_ENTITY and - waypoints[13] ~= INVALID_ENTITY and - waypoints[14] ~= INVALID_ENTITY and - waypoints[15] ~= INVALID_ENTITY and - waypoints[16] ~= INVALID_ENTITY and - waypoints[17] ~= INVALID_ENTITY and - waypoints[18] ~= INVALID_ENTITY and - waypoints[19] ~= INVALID_ENTITY and - waypoints[20] ~= INVALID_ENTITY and - waypoints[21] ~= INVALID_ENTITY and - waypoints[22] ~= INVALID_ENTITY and - waypoints[23] ~= INVALID_ENTITY and - waypoints[24] ~= INVALID_ENTITY and - waypoints[25] ~= INVALID_ENTITY -) then - npcs[3].patrol_waypoints = { - { - entity = waypoints[7], - state = States.JOG, - }, - { - entity = waypoints[8], - state = States.JOG, - }, - { - entity = waypoints[9], - state = States.JOG, - }, - { - entity = waypoints[10], - state = States.JOG, - }, - { - entity = waypoints[11], - state = States.JOG, - }, - { - entity = waypoints[12], - state = States.JOG, - }, - { - entity = waypoints[13], - state = States.JOG, - }, - { - entity = waypoints[14], - state = States.JOG, - }, - { - entity = waypoints[15], - state = States.JOG, - }, - { - entity = waypoints[16], - state = States.JOG, - }, - { - entity = waypoints[17], - state = States.JOG, - }, - { - entity = waypoints[18], - state = States.JOG, - wait = 2, -- little wait at top of slope - }, - { - entity = waypoints[19], - state = States.JOG, - }, - { - entity = waypoints[20], - state = States.JOG, - }, - { - entity = waypoints[21], - state = States.JOG, - }, - { - entity = waypoints[22], - state = States.JOG, - }, - { - entity = waypoints[23], - state = States.JOG, - }, - { - entity = waypoints[24], - state = States.JOG, - }, - { - entity = waypoints[25], - state = States.JOG, - }, - } -end + end + +end) diff --git a/WickedEngine/wiApplication.cpp b/WickedEngine/wiApplication.cpp index 0474c7ad7..155376319 100644 --- a/WickedEngine/wiApplication.cpp +++ b/WickedEngine/wiApplication.cpp @@ -60,7 +60,6 @@ namespace wi } // Fade manager will activate on fadeout - fadeManager.Clear(); fadeManager.Start(fadeSeconds, fadeColor, [this, component]() { if (GetActivePath() != nullptr) @@ -109,22 +108,6 @@ namespace wi return; } -#if 0 -#ifdef WICKEDENGINE_BUILD_DX12 - static bool startup_workaround = false; - if (!startup_workaround) - { - startup_workaround = true; - if (dynamic_cast(graphicsDevice.get())) - { - CommandList cmd = graphicsDevice->BeginCommandList(); - wi::renderer::Workaround(1, cmd); - graphicsDevice->SubmitCommandLists(); - } - } -#endif // WICKEDENGINE_BUILD_DX12 -#endif - static bool startup_script = false; if (!startup_script) { diff --git a/WickedEngine/wiApplication.h b/WickedEngine/wiApplication.h index 88f8ae030..4ce4da288 100644 --- a/WickedEngine/wiApplication.h +++ b/WickedEngine/wiApplication.h @@ -120,6 +120,8 @@ namespace wi // display all-time engine information text InfoDisplayer infoDisplay; + bool IsFaded() const { return fadeManager.IsFaded(); } + }; } diff --git a/WickedEngine/wiApplication_BindLua.cpp b/WickedEngine/wiApplication_BindLua.cpp index 7faa90eed..5b60d7b36 100644 --- a/WickedEngine/wiApplication_BindLua.cpp +++ b/WickedEngine/wiApplication_BindLua.cpp @@ -28,6 +28,7 @@ namespace wi::lua lunamethod(Application_BindLua, GetCanvas), lunamethod(Application_BindLua, SetCanvas), lunamethod(Application_BindLua, Exit), + lunamethod(Application_BindLua, IsFaded), { NULL, NULL } }; Luna::PropertyType Application_BindLua::properties[] = { @@ -389,6 +390,16 @@ namespace wi::lua wi::platform::Exit(); return 0; } + int Application_BindLua::IsFaded(lua_State* L) + { + if (component == nullptr) + { + wi::lua::SError(L, "IsFaded() component is empty!"); + return 0; + } + wi::lua::SSetBool(L, component->IsFaded()); + return 1; + } int SetProfilerEnabled(lua_State* L) diff --git a/WickedEngine/wiApplication_BindLua.h b/WickedEngine/wiApplication_BindLua.h index 03af22c97..fecc91483 100644 --- a/WickedEngine/wiApplication_BindLua.h +++ b/WickedEngine/wiApplication_BindLua.h @@ -31,9 +31,8 @@ namespace wi::lua class Application_BindLua { - private: - Application* component = nullptr; public: + Application* component = nullptr; inline static constexpr char className[] = "Application"; static Luna::FunctionType methods[]; static Luna::PropertyType properties[]; @@ -60,6 +59,7 @@ namespace wi::lua int SetCanvas(lua_State* L); int Exit(lua_State* L); + int IsFaded(lua_State* L); static void Bind(); }; diff --git a/WickedEngine/wiFadeManager.cpp b/WickedEngine/wiFadeManager.cpp index 34d6f0bda..4469537e9 100644 --- a/WickedEngine/wiFadeManager.cpp +++ b/WickedEngine/wiFadeManager.cpp @@ -11,6 +11,7 @@ namespace wi void FadeManager::Update(float dt) { + fadeEventTriggeredThisFrame = false; if (!IsActive()) return; @@ -19,6 +20,7 @@ namespace wi // skip fade, just launch the job onFade(); state = FADE_FINISHED; + fadeEventTriggeredThisFrame = true; } float t = timer / targetFadeTimeInSeconds; @@ -39,6 +41,7 @@ namespace wi opacity = 1.0f; onFade(); timer = 0; + fadeEventTriggeredThisFrame = true; } else if (state == FADE_OUT) { diff --git a/WickedEngine/wiFadeManager.h b/WickedEngine/wiFadeManager.h index 70fe13e0c..d5e7757d6 100644 --- a/WickedEngine/wiFadeManager.h +++ b/WickedEngine/wiFadeManager.h @@ -23,6 +23,7 @@ namespace wi } state = FADE_FINISHED; wi::Color color = wi::Color(0, 0, 0, 255); std::function onFade = [] {}; + bool fadeEventTriggeredThisFrame = false; FadeManager() { @@ -34,15 +35,23 @@ namespace wi targetFadeTimeInSeconds = seconds; this->color = color; timer = 0; - state = FADE_IN; + if (IsFaded()) + { + // If starting a new fade on mid-fadeout, it will start from faded and just transition out of mid + state = FADE_MID; + } + else + { + state = FADE_IN; + } onFade = onFadeFunction; } void Update(float dt); - bool IsFaded() + bool IsFaded() const { - return state == FADE_MID; + return fadeEventTriggeredThisFrame; } - bool IsActive() + bool IsActive() const { return state != FADE_FINISHED; } diff --git a/WickedEngine/wiImageParams_BindLua.cpp b/WickedEngine/wiImageParams_BindLua.cpp index a1035d16f..35acef66d 100644 --- a/WickedEngine/wiImageParams_BindLua.cpp +++ b/WickedEngine/wiImageParams_BindLua.cpp @@ -45,6 +45,8 @@ namespace wi::lua lunamethod(ImageParams_BindLua, DisableBackgroundBlur), lunamethod(ImageParams_BindLua, EnableBackground), lunamethod(ImageParams_BindLua, DisableBackground), + lunamethod(ImageParams_BindLua, SetMaskAlphaRange), + lunamethod(ImageParams_BindLua, GetMaskAlphaRange), { nullptr, nullptr } }; Luna::PropertyType ImageParams_BindLua::properties[] = { @@ -431,6 +433,24 @@ namespace wi::lua params.disableBackground(); return 0; } + int ImageParams_BindLua::SetMaskAlphaRange(lua_State* L) + { + int argc = wi::lua::SGetArgCount(L); + if (argc < 2) + { + wi::lua::SError(L, "SetMaskAlphaRange(float start, end): not enough arguments!"); + return 0; + } + params.mask_alpha_range_start = wi::lua::SGetFloat(L, 1); + params.mask_alpha_range_end = wi::lua::SGetFloat(L, 2); + return 0; + } + int ImageParams_BindLua::GetMaskAlphaRange(lua_State* L) + { + wi::lua::SSetFloat(L, params.mask_alpha_range_start); + wi::lua::SSetFloat(L, params.mask_alpha_range_end); + return 2; + } ImageParams_BindLua::ImageParams_BindLua(lua_State* L) { diff --git a/WickedEngine/wiImageParams_BindLua.h b/WickedEngine/wiImageParams_BindLua.h index 3cea747c7..7c415f910 100644 --- a/WickedEngine/wiImageParams_BindLua.h +++ b/WickedEngine/wiImageParams_BindLua.h @@ -58,6 +58,8 @@ namespace wi::lua int DisableBackgroundBlur(lua_State* L); int EnableBackground(lua_State* L); int DisableBackground(lua_State* L); + int SetMaskAlphaRange(lua_State* L); + int GetMaskAlphaRange(lua_State* L); static void Bind(); }; diff --git a/WickedEngine/wiLoadingScreen.cpp b/WickedEngine/wiLoadingScreen.cpp index c201ef578..00d649617 100644 --- a/WickedEngine/wiLoadingScreen.cpp +++ b/WickedEngine/wiLoadingScreen.cpp @@ -1,16 +1,33 @@ #include "wiLoadingScreen.h" #include "wiApplication.h" +#include "wiEventHandler.h" #include +using namespace wi::graphics; + namespace wi { - bool LoadingScreen::isActive() + bool LoadingScreen::isActive() const { return wi::jobsystem::IsBusy(ctx); } + bool LoadingScreen::isFinished() const + { + return tasks.empty(); + } + + int LoadingScreen::getProgress() const + { + if (launchedTasks == 0) + return 100; + uint32_t counter = ctx.counter.load(); + float percent = 1 - float(counter) / float(launchedTasks); + return (int)std::round(percent * 100); + } + void LoadingScreen::addLoadingFunction(std::function loadingFunction) { if (loadingFunction != nullptr) @@ -37,24 +54,42 @@ namespace wi void LoadingScreen::Start() { + launchedTasks = (uint32_t)tasks.size(); for (auto& x : tasks) { wi::jobsystem::Execute(ctx, x); } std::thread([this]() { wi::jobsystem::Wait(ctx); - finish(); - }).detach(); + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [this](uint64_t) { + if (finish != nullptr) + finish(); + tasks.clear(); + launchedTasks = 0; + finish = nullptr; + }); + }).detach(); - RenderPath2D::Start(); + RenderPath2D::Start(); } - void LoadingScreen::Stop() + void LoadingScreen::Compose(wi::graphics::CommandList cmd) const { - tasks.clear(); - finish = nullptr; + if (backgroundTexture.IsValid()) + { + wi::image::Params fx; + fx.enableFullScreen(); + fx.blendFlag = wi::enums::BLENDMODE_PREMULTIPLIED; + if (colorspace != ColorSpace::SRGB) + { + // Convert the regular SRGB result of the render path to linear space for HDR compositing: + fx.enableLinearOutputMapping(hdr_scaling); + } + const Texture& tex = backgroundTexture.GetTexture(); + wi::image::Draw(&tex, fx, cmd); + } - RenderPath2D::Stop(); + RenderPath2D::Compose(cmd); } } diff --git a/WickedEngine/wiLoadingScreen.h b/WickedEngine/wiLoadingScreen.h index 647b2ce68..775259000 100644 --- a/WickedEngine/wiLoadingScreen.h +++ b/WickedEngine/wiLoadingScreen.h @@ -14,27 +14,31 @@ namespace wi class LoadingScreen : public RenderPath2D { - private: + protected: wi::jobsystem::context ctx; wi::vector> tasks; std::function finish; + uint32_t launchedTasks = 0; public: + wi::Resource backgroundTexture; //Add a loading task which should be executed - //use std::bind( YourFunctionPointer ) void addLoadingFunction(std::function loadingFunction); //Helper for loading a whole renderable component void addLoadingComponent(RenderPath* component, Application* main, float fadeSeconds = 0, wi::Color fadeColor = wi::Color(0, 0, 0, 255)); //Set a function that should be called when the loading finishes - //use std::bind( YourFunctionPointer ) void onFinished(std::function finishFunction); //See if the loading is currently running - bool isActive(); + bool isActive() const; + // See if there are any loading tasks that are still not finished + bool isFinished() const; + // Returns the percentage of loading tasks that are finished (0% - 100%) + int getProgress() const; //Start Executing the tasks and mark the loading as active - virtual void Start() override; - //Clear all tasks - virtual void Stop() override; + void Start() override; + + void Compose(wi::graphics::CommandList cmd) const override; }; } diff --git a/WickedEngine/wiLoadingScreen_BindLua.cpp b/WickedEngine/wiLoadingScreen_BindLua.cpp index a0104b983..479167c7d 100644 --- a/WickedEngine/wiLoadingScreen_BindLua.cpp +++ b/WickedEngine/wiLoadingScreen_BindLua.cpp @@ -1,4 +1,14 @@ #include "wiLoadingScreen_BindLua.h" +#include "wiScene_BindLua.h" +#include "wiTexture_BindLua.h" +#include "wiApplication_BindLua.h" +#include "wiRenderPath3D_BindLua.h" + +#include + +using namespace wi::lua::scene; +using namespace wi::scene; +using namespace wi::ecs; namespace wi::lua { @@ -21,54 +31,246 @@ namespace wi::lua lunamethod(RenderPath_BindLua, GetLayerMask), lunamethod(RenderPath_BindLua, SetLayerMask), - lunamethod(LoadingScreen_BindLua, AddLoadingTask), - lunamethod(LoadingScreen_BindLua, OnFinished), + lunamethod(LoadingScreen_BindLua, AddLoadModelTask), + lunamethod(LoadingScreen_BindLua, AddRenderPathActivationTask), + lunamethod(LoadingScreen_BindLua, IsFinished), + lunamethod(LoadingScreen_BindLua, GetProgress), + lunamethod(LoadingScreen_BindLua, SetBackgroundTexture), + lunamethod(LoadingScreen_BindLua, GetBackgroundTexture), { NULL, NULL } }; Luna::PropertyType LoadingScreen_BindLua::properties[] = { { NULL, NULL } }; - int LoadingScreen_BindLua::AddLoadingTask(lua_State* L) + int LoadingScreen_BindLua::AddLoadModelTask(lua_State* L) { + LoadingScreen* loading = dynamic_cast(component); + if (loading == nullptr) + { + wi::lua::SError(L, "AddLoadModelTask(Scene scene, string fileName, opt Matrix transform): loading screen is invalid!"); + return 0; + } + int argc = wi::lua::SGetArgCount(L); if (argc > 0) { - std::string task = wi::lua::SGetString(L, 1); - LoadingScreen* loading = dynamic_cast(component); - if (loading != nullptr) + Scene_BindLua* custom_scene = Luna::lightcheck(L, 1); + if (custom_scene) { - loading->addLoadingFunction([=](wi::jobsystem::JobArgs args) { - wi::lua::RunText(task); + // Overload 1: thread safe version + if (argc > 1) + { + std::string fileName = wi::lua::SGetString(L, 2); + XMMATRIX transform = XMMatrixIdentity(); + if (argc > 2) + { + Matrix_BindLua* matrix = Luna::lightcheck(L, 3); + if (matrix != nullptr) + { + transform = XMLoadFloat4x4(&matrix->data); + } + else + { + wi::lua::SError(L, "AddLoadModelTask(Scene scene, string fileName, opt Matrix transform) argument is not a matrix!"); + } + } + Entity root = CreateEntity(); + loading->addLoadingFunction([=](wi::jobsystem::JobArgs args) { + Scene scene; + wi::scene::LoadModel2(scene, fileName, transform, root); + + // Note: we lock the scene for merging from multiple loading screen tasks + // Because we don't have fine control over thread execution in lua, and this significantly + // simplifies loading into scene from loadingscreen + std::scoped_lock lck(custom_scene->scene->locker); + custom_scene->scene->Merge(scene); }); + wi::lua::SSetLongLong(L, root); + return 1; + } + else + { + wi::lua::SError(L, "AddLoadModelTask(Scene scene, string fileName, opt Matrix transform) not enough arguments!"); + return 0; + } } else - wi::lua::SError(L, "AddLoader(string taskScript) component is not a LoadingScreen!"); + { + // Overload 2: global scene version + std::string fileName = wi::lua::SGetString(L, 1); + XMMATRIX transform = XMMatrixIdentity(); + if (argc > 1) + { + Matrix_BindLua* matrix = Luna::lightcheck(L, 2); + if (matrix != nullptr) + { + transform = XMLoadFloat4x4(&matrix->data); + } + else + { + wi::lua::SError(L, "AddLoadModelTask(string fileName, opt Matrix transform) argument is not a matrix!"); + } + } + Entity root = CreateEntity(); + loading->addLoadingFunction([=](wi::jobsystem::JobArgs args) { + Scene scene; + wi::scene::LoadModel2(scene, fileName, transform, root); + + // Note: we lock the scene for merging from multiple loading screen tasks + // Because we don't have fine control over thread execution in lua, and this significantly + // simplifies loading into scene from loadingscreen + std::scoped_lock lck(GetGlobalScene()->locker); + GetGlobalScene()->Merge(scene); + }); + wi::lua::SSetLongLong(L, root); + return 1; + } } else - wi::lua::SError(L, "AddLoader(string taskScript) not enough arguments!"); + { + wi::lua::SError(L, "AddLoadModelTask(string fileName, opt Matrix transform) not enough arguments!"); + } return 0; } - int LoadingScreen_BindLua::OnFinished(lua_State* L) + int LoadingScreen_BindLua::AddRenderPathActivationTask(lua_State* L) { - int argc = wi::lua::SGetArgCount(L); - if (argc > 0) + LoadingScreen* loading = dynamic_cast(component); + if (loading == nullptr) { - std::string task = wi::lua::SGetString(L, 1); - LoadingScreen* loading = dynamic_cast(component); - if (loading != nullptr) + wi::lua::SError(L, "AddRenderPathActivationTask(RenderPath path, opt float fadeSeconds = 0, opt int fadeR = 0,fadeG = 0,fadeB = 0): loading screen is invalid!"); + return 0; + } + + int argc = wi::lua::SGetArgCount(L); + if (argc < 2) + { + wi::lua::SError(L, "AddRenderPathActivationTask(RenderPath path, Application app, opt float fadeSeconds = 0, opt int fadeR = 0,fadeG = 0,fadeB = 0): not enough arguments!"); + return 0; + } + RenderPath* path = nullptr; + + RenderPath3D_BindLua* comp3D = Luna::lightcheck(L, 1); + if (comp3D == nullptr) + { + RenderPath2D_BindLua* comp2D = Luna::lightcheck(L, 1); + if (comp2D == nullptr) { - loading->onFinished([=] { - wi::lua::RunText(task); - }); + LoadingScreen_BindLua* compLoading = Luna::lightcheck(L, 1); + if (compLoading == nullptr) + { + RenderPath_BindLua* comp = Luna::lightcheck(L, 1); + if (comp == nullptr) + { + wi::lua::SError(L, "AddRenderPathActivationTask(RenderPath path, Application app, opt float fadeSeconds = 0, opt int fadeR = 0,fadeG = 0,fadeB = 0): first argument is not a RenderPath!"); + return 0; + } + else + { + path = comp->component; + } + } + else + { + path = compLoading->component; + } } else - wi::lua::SError(L, "OnFinished(string taskScript) component is not a LoadingScreen!"); + { + path = comp2D->component; + } } else - wi::lua::SError(L, "OnFinished(string taskScript) not enough arguments!"); + { + path = comp3D->component; + } + + Application_BindLua* app = Luna::lightcheck(L, 2); + if (app == nullptr) + { + wi::lua::SError(L, "AddRenderPathActivationTask(RenderPath path, Application app, opt float fadeSeconds = 0, opt int fadeR = 0,fadeG = 0,fadeB = 0): second argument is not an Application!"); + return 0; + } + + float fadeSeconds = 0; + wi::Color fadeColor = wi::Color::Black(); + + if (argc > 2) + { + fadeSeconds = wi::lua::SGetFloat(L, 3); + if (argc > 3) + { + fadeColor.setR((uint8_t)wi::lua::SGetInt(L, 4)); + if (argc > 4) + { + fadeColor.setG((uint8_t)wi::lua::SGetInt(L, 5)); + if (argc > 5) + { + fadeColor.setB((uint8_t)wi::lua::SGetInt(L, 6)); + } + } + } + } + + loading->addLoadingComponent(path, app->component, fadeSeconds, fadeColor); return 0; } + int LoadingScreen_BindLua::IsFinished(lua_State* L) + { + LoadingScreen* loading = dynamic_cast(component); + if (loading != nullptr) + { + wi::lua::SSetBool(L, loading->isFinished()); + return 1; + } + wi::lua::SError(L, "IsFinished(): loading screen is invalid!"); + return 0; + } + int LoadingScreen_BindLua::GetProgress(lua_State* L) + { + LoadingScreen* loading = dynamic_cast(component); + if (loading != nullptr) + { + wi::lua::SSetInt(L, loading->getProgress()); + return 1; + } + wi::lua::SError(L, "GetProgress(): loading screen is invalid!"); + return 0; + } + int LoadingScreen_BindLua::SetBackgroundTexture(lua_State* L) + { + LoadingScreen* loading = dynamic_cast(component); + if (loading == nullptr) + { + wi::lua::SError(L, "SetBackgroundTexture(Texture tex): loading screen is not valid!"); + return 0; + } + int argc = wi::lua::SGetArgCount(L); + if (argc < 1) + { + wi::lua::SError(L, "SetBackgroundTexture(Texture tex): not enough arguments!"); + return 0; + } + Texture_BindLua* tex = Luna::lightcheck(L, 1); + if (tex == nullptr) + { + wi::lua::SError(L, "SetBackgroundTexture(Texture tex): argument is not a Texture!"); + return 0; + } + loading->backgroundTexture = tex->resource; + return 0; + } + int LoadingScreen_BindLua::GetBackgroundTexture(lua_State* L) + { + LoadingScreen* loading = dynamic_cast(component); + if (loading == nullptr) + { + wi::lua::SError(L, "GetBackgroundTexture(): loading screen is not valid!"); + return 0; + } + Luna::push(L, loading->backgroundTexture); + return 1; + } void LoadingScreen_BindLua::Bind() { diff --git a/WickedEngine/wiLoadingScreen_BindLua.h b/WickedEngine/wiLoadingScreen_BindLua.h index 925c11f6f..947cd9dee 100644 --- a/WickedEngine/wiLoadingScreen_BindLua.h +++ b/WickedEngine/wiLoadingScreen_BindLua.h @@ -25,8 +25,12 @@ namespace wi::lua this->component = &loadingscreen; } - int AddLoadingTask(lua_State* L); - int OnFinished(lua_State* L); + int AddLoadModelTask(lua_State* L); + int AddRenderPathActivationTask(lua_State* L); + int IsFinished(lua_State* L); + int GetProgress(lua_State* L); + int SetBackgroundTexture(lua_State* L); + int GetBackgroundTexture(lua_State* L); static void Bind(); }; diff --git a/WickedEngine/wiRenderPath2D.h b/WickedEngine/wiRenderPath2D.h index bc1c48341..a7fd5c9a7 100644 --- a/WickedEngine/wiRenderPath2D.h +++ b/WickedEngine/wiRenderPath2D.h @@ -13,7 +13,7 @@ namespace wi class RenderPath2D : public RenderPath { - private: + protected: wi::graphics::Texture rtStenciled; wi::graphics::Texture rtStenciled_resolved; wi::graphics::Texture rtFinal; diff --git a/WickedEngine/wiScene.cpp b/WickedEngine/wiScene.cpp index f9e07e02a..0817c5c27 100644 --- a/WickedEngine/wiScene.cpp +++ b/WickedEngine/wiScene.cpp @@ -4866,6 +4866,12 @@ namespace wi::scene { SoundComponent& sound = sounds[i]; + if (!sound.soundinstance.IsValid()) + { + sound.soundinstance.SetLooped(sound.IsLooped()); + wi::audio::CreateSoundInstance(&sound.soundResource.GetSound(), &sound.soundinstance); + } + if (!sound.IsDisable3D()) { Entity entity = sounds.GetEntity(i); @@ -4917,6 +4923,8 @@ namespace wi::scene } void Scene::RunScriptUpdateSystem(wi::jobsystem::context& ctx) { + if (dt == 0) + return; // not allowed to be run when dt == 0 as it could be on separate thread! auto range = wi::profiler::BeginRangeCPU("Script Components"); for (size_t i = 0; i < scripts.GetCount(); ++i) { @@ -6285,57 +6293,78 @@ namespace wi::scene Entity LoadModel(const std::string& fileName, const XMMATRIX& transformMatrix, bool attached) { - Scene scene; - Entity root = LoadModel(scene, fileName, transformMatrix, attached); - GetScene().Merge(scene); - return root; + Entity rootEntity = INVALID_ENTITY; + if (attached) + { + rootEntity = CreateEntity(); + } + LoadModel2(fileName, transformMatrix, rootEntity); + return rootEntity; } Entity LoadModel(Scene& scene, const std::string& fileName, const XMMATRIX& transformMatrix, bool attached) { - wi::Archive archive(fileName, true); - if (archive.IsOpen()) + Entity rootEntity = INVALID_ENTITY; + if (attached) { - // Serialize it from file: - scene.Serialize(archive); + rootEntity = CreateEntity(); + } + LoadModel2(scene, fileName, transformMatrix, rootEntity); + return rootEntity; + } - // First, create new root: - Entity root = CreateEntity(); - scene.transforms.Create(root); - scene.layers.Create(root).layerMask = ~0; + void LoadModel2(const std::string& fileName, const XMMATRIX& transformMatrix, Entity rootEntity) + { + Scene scene; + LoadModel(scene, fileName, transformMatrix, rootEntity); + GetScene().Merge(scene); + } + void LoadModel2(Scene& scene, const std::string& fileName, const XMMATRIX& transformMatrix, Entity rootEntity) + { + wi::Archive archive(fileName, true); + if (!archive.IsOpen()) + return; + + // Serialize it from file: + scene.Serialize(archive); + + // First, create new root: + bool attached = true; + if (rootEntity == INVALID_ENTITY) + { + rootEntity = CreateEntity(); + attached = false; + } + scene.transforms.Create(rootEntity); + scene.layers.Create(rootEntity).layerMask = ~0; + + { + // Apply the optional transformation matrix to the new scene: + + // Parent all unparented transforms to new root entity + for (size_t i = 0; i < scene.transforms.GetCount(); ++i) { - // Apply the optional transformation matrix to the new scene: - - // Parent all unparented transforms to new root entity - for (size_t i = 0; i < scene.transforms.GetCount() - 1; ++i) // GetCount() - 1 because the last added was the "root" + Entity entity = scene.transforms.GetEntity(i); + if (entity != rootEntity && !scene.hierarchy.Contains(entity)) { - Entity entity = scene.transforms.GetEntity(i); - if (!scene.hierarchy.Contains(entity)) - { - scene.Component_Attach(entity, root); - } + scene.Component_Attach(entity, rootEntity); } - - // The root component is transformed, scene is updated: - TransformComponent* root_transform = scene.transforms.GetComponent(root); - root_transform->MatrixTransform(transformMatrix); - - scene.Update(0); } - if (!attached) - { - // In this case, we don't care about the root anymore, so delete it. This will simplify overall hierarchy - scene.Component_DetachChildren(root); - scene.Entity_Remove(root); - root = INVALID_ENTITY; - } + // The root component is transformed, scene is updated: + TransformComponent* root_transform = scene.transforms.GetComponent(rootEntity); + root_transform->MatrixTransform(transformMatrix); - return root; + scene.Update(0); } - return INVALID_ENTITY; + if (!attached) + { + // In this case, we don't care about the root anymore, so delete it. This will simplify overall hierarchy + scene.Component_DetachChildren(rootEntity); + scene.Entity_Remove(rootEntity); + } } PickResult Pick(const wi::primitive::Ray& ray, uint32_t filterMask, uint32_t layerMask, const Scene& scene, uint32_t lod) diff --git a/WickedEngine/wiScene.h b/WickedEngine/wiScene.h index 1db8f6bd0..167cb655e 100644 --- a/WickedEngine/wiScene.h +++ b/WickedEngine/wiScene.h @@ -546,6 +546,19 @@ namespace wi::scene // returns INVALID_ENTITY if attached argument was false, else it returns the base entity handle wi::ecs::Entity LoadModel(Scene& scene, const std::string& fileName, const XMMATRIX& transformMatrix = XMMatrixIdentity(), bool attached = false); + // Helper function to open a wiscene file and add the contents to the global scene + // fileName : file path + // transformMatrix : everything will be transformed by this matrix (optional) + // rootEntity : specify entity to attach whole scene to (optional) + void LoadModel2(const std::string& fileName, const XMMATRIX& transformMatrix = XMMatrixIdentity(), wi::ecs::Entity rootEntity = wi::ecs::INVALID_ENTITY); + + // Helper function to open a wiscene file and add the contents to the specified scene. This is thread safe as it doesn't modify global scene + // scene : the scene that will contain the model + // fileName : file path + // transformMatrix : everything will be transformed by this matrix (optional) + // rootEntity : specify entity to attach whole scene to (optional) + void LoadModel2(Scene& scene, const std::string& fileName, const XMMATRIX& transformMatrix = XMMatrixIdentity(), wi::ecs::Entity rootEntity = wi::ecs::INVALID_ENTITY); + // Deprecated, use Scene::Intersects() function instead using PickResult = Scene::RayIntersectionResult; PickResult Pick(const wi::primitive::Ray& ray, uint32_t filterMask = wi::enums::FILTER_OPAQUE, uint32_t layerMask = ~0, const Scene& scene = GetScene(), uint32_t lod = 0); diff --git a/WickedEngine/wiScene_Serializers.cpp b/WickedEngine/wiScene_Serializers.cpp index 8ffd93326..4068d8a76 100644 --- a/WickedEngine/wiScene_Serializers.cpp +++ b/WickedEngine/wiScene_Serializers.cpp @@ -1727,8 +1727,9 @@ namespace wi::scene { filename = dir + filename; soundResource = wi::resourcemanager::Load(filename, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); - soundinstance.SetLooped(IsLooped()); - wi::audio::CreateSoundInstance(&soundResource.GetSound(), &soundinstance); + // Note: sound instance can't be created yet, as soundResource is not necessarily ready at this point + // Consider when multiple threads are loading the same sound, one thread will be loading the data, + // the others return early with the resource that will be containing the data once it has been loaded. } }); } diff --git a/WickedEngine/wiSprite_BindLua.cpp b/WickedEngine/wiSprite_BindLua.cpp index a057d4e60..e43f63346 100644 --- a/WickedEngine/wiSprite_BindLua.cpp +++ b/WickedEngine/wiSprite_BindLua.cpp @@ -120,6 +120,7 @@ namespace wi::lua if (tex != nullptr) { sprite.maskResource = tex->resource; + sprite.params.setMaskMap(&tex->resource.GetTexture()); } } else diff --git a/WickedEngine/wiTextureHelper.cpp b/WickedEngine/wiTextureHelper.cpp index 545c52600..b8022e0af 100644 --- a/WickedEngine/wiTextureHelper.cpp +++ b/WickedEngine/wiTextureHelper.cpp @@ -335,7 +335,7 @@ namespace wi::texturehelper { for (uint32_t x = 0; x < width; ++x) { - const XMFLOAT2 uv = XMFLOAT2(float(x) / float(width - 1), float(y) / float(height - 1)); + const XMFLOAT2 uv = XMFLOAT2((float(x) + 0.5f) / float(width), (float(y) + 0.5f) / float(height)); const XMVECTOR point_on_line = wi::math::ClosestPointOnLineSegment(a, b, XMLoadFloat2(&uv)); const float uv_distance = XMVectorGetX(XMVector3Length(point_on_line - a)); float gradient = wi::math::saturate(wi::math::InverseLerp(0, distance, uv_distance)); @@ -374,7 +374,7 @@ namespace wi::texturehelper { for (uint32_t x = 0; x < width; ++x) { - const XMFLOAT2 uv = XMFLOAT2(float(x) / float(width - 1), float(y) / float(height - 1)); + const XMFLOAT2 uv = XMFLOAT2((float(x) + 0.5f) / float(width), (float(y) + 0.5f) / float(height)); const float uv_distance = wi::math::Clamp(XMVectorGetX(XMVector3Length(XMLoadFloat2(&uv) - a)), 0, distance); float gradient = wi::math::saturate(wi::math::InverseLerp(0, distance, uv_distance)); if (has_flag(flags, GradientFlags::Inverse)) @@ -411,7 +411,7 @@ namespace wi::texturehelper { for (uint32_t x = 0; x < width; ++x) { - const XMFLOAT2 uv = XMFLOAT2(float(x) / float(width - 1), float(y) / float(height - 1)); + const XMFLOAT2 uv = XMFLOAT2((float(x) + 0.5f) / float(width), (float(y) + 0.5f) / float(height)); const XMFLOAT2 coord = XMFLOAT2(uv.x - uv_start.x, uv.y - uv_start.y); float gradient = wi::math::GetAngle(direction, coord) / XM_2PI; if (has_flag(flags, GradientFlags::Inverse)) @@ -467,7 +467,7 @@ namespace wi::texturehelper { for (uint32_t x = 0; x < width; ++x) { - const XMFLOAT2 coord = XMFLOAT2(float(x) / float(width - 1) * 2 - 1, -(float(y) / float(height - 1) * 2 - 1)); + const XMFLOAT2 coord = XMFLOAT2((float(x) + 0.5f) / float(width) * 2 - 1, -((float(y) + 0.5f) / float(height) * 2 - 1)); float gradient = wi::math::GetAngle(direction, coord) / XM_2PI; if (counter_clockwise) { diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index c61014dd4..dc8f80814 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wi::version // minor features, major updates, breaking compatibility changes const int minor = 71; // minor bug fixes, alterations, refactors, updates - const int revision = 397; + const int revision = 398; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);