From 82aacb202e61afa5d06ab8a9afccb6f52a72e86a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tur=C3=A1nszki=20J=C3=A1nos?= Date: Fri, 26 Jul 2024 07:38:26 +0200 Subject: [PATCH] character controller script updates --- .../character_controller/character_controller.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Content/scripts/character_controller/character_controller.lua b/Content/scripts/character_controller/character_controller.lua index 375fb12d5..629f39874 100644 --- a/Content/scripts/character_controller/character_controller.lua +++ b/Content/scripts/character_controller/character_controller.lua @@ -328,7 +328,6 @@ local function Character(model_scene, start_transform, controllable, anim_scene) layerMask = ~0, -- layerMask will be used to filter collisions scale = Vector(1, 1, 1), rotation = Vector(0,math.pi,0), - start_position = Vector(0, 1, 0), position = Vector(), controllable = true, fixed_update_remain = 0, @@ -350,7 +349,6 @@ local function Character(model_scene, start_transform, controllable, anim_scene) next_dialog = 1, Create = function(self, model_scene, start_transform, controllable, anim_scene) - self.start_position = start_transform.GetPosition() self.face = vector.Rotate(start_transform.GetForward(), vector.QuaternionFromRollPitchYaw(self.rotation)) self.face_next = self.face self.controllable = controllable @@ -435,7 +433,7 @@ local function Character(model_scene, start_transform, controllable, anim_scene) model_transform.ClearTransform() model_transform.Scale(self.scale) model_transform.Rotate(self.rotation) - model_transform.Translate(self.start_position) + model_transform.Translate(start_transform.GetPosition()) model_transform.UpdateTransform() self.target_height = scene.Component_GetTransform(self.neck).GetPosition().GetY() @@ -1280,6 +1278,7 @@ runProcess(function() if metadata.GetPreset() == MetadataPreset.NPC then local npc = Character(character_scene, transform, false, anim_scene) -- Add patrol waypoints if found: + -- It will be looking for "waypoint" named string values in metadata components, and they can be chained by their value local visited = {} -- avoid infinite loop while metadata ~= nil and metadata.HasString("waypoint") do local waypoint_name = metadata.GetString("waypoint") @@ -1291,6 +1290,9 @@ runProcess(function() metadata = scene.Component_GetMetadata(waypoint_entity) -- chain waypoints visited[waypoint_entity] = true end + if metadata == nil then + break + end local waypoint = { entity = waypoint_entity, wait = metadata.GetFloat("wait") @@ -1299,6 +1301,8 @@ runProcess(function() waypoint.state = metadata.GetString("state") end table.insert(npc.patrol_waypoints, waypoint) -- add waypoint to NPC + else + break end end table.insert(npcs, npc) -- add NPC