From 0a502972c7ddddd74a94cb08068d332ea2758f46 Mon Sep 17 00:00:00 2001 From: Kex Date: Mon, 28 Oct 2024 11:38:08 +0100 Subject: [PATCH] Add ambient flyby modules (#49) * Add module base prefab and scripts * Pass editable component instead of entity * Add ambient flyby module * Update stringtable * Rearrange module base methods and add init done bool * Make sure init done only runs on authority * Update meta file * Introduce module placing actions * Make module not streamable by default * Change default image for module * Add placing actions for opening editor browser * Require entity in world placing action * Sleep placing action * Spawn default occupants placing action * Force writing module attributes * Proper prefix for placing actions * Proper prefix modules * Prefix EditableModuleComponent * Rename placing actions to init actions * Add on placing canceled event * Fix localization and prefab prefixes * Fix editable component * Do not delete immediately * Update meta * Create separate config for module attributes * Add attributes * Add module type content browser filter * Add module type filter * Disable simulation for spawned assets until all init actions are done * Restore previous simulation state * Revise module activation * Revise init actions * Implement GME_VehicleHelper methods * Add exception handling to init actions * Prevent race condition between canceling and notification * Implement additional group helper methods * Add support for spawning helicopter crew * Implement method for getting faction from editable entity * Implement invoker for when a group's members spawned * Assign number to module type enum * Fix spelling * Use vehicle helper for spawning crew * Terminate simulation when rotor breaks * Add null checks * Fix spelling of formatting * Add missing comma * Fix missing braces * Delete helo when pilot is missing * Merge branch 'master' into feature/ambient-flyby --- .../GME/Configs/Core/EditableEntityCore.conf | 7 + .../Configs/Editor/AttributeLists/Edit.conf | 4 +- .../Editor/AttributeLists/GME_Modules.conf | 42 ++++ .../PlaceableEntities/Systems/Systems.conf | 2 + .../Configs/Notifications/Notifications.conf | 16 +- .../GME/Language/GME_localization.cs_cz.conf | 18 +- .../GME/Language/GME_localization.de_de.conf | 18 +- .../GME/Language/GME_localization.en_us.conf | 18 +- .../GME/Language/GME_localization.es_es.conf | 18 +- .../GME/Language/GME_localization.fr_fr.conf | 18 +- .../GME/Language/GME_localization.it_it.conf | 18 +- .../GME/Language/GME_localization.ja_jp.conf | 18 +- .../GME/Language/GME_localization.ko_kr.conf | 18 +- .../GME/Language/GME_localization.pl_pl.conf | 18 +- .../GME/Language/GME_localization.pt_br.conf | 18 +- .../GME/Language/GME_localization.ru_ru.conf | 18 +- addons/GME/Language/GME_localization.st | 130 +++++++++--- .../GME/Language/GME_localization.uk_ua.conf | 18 +- .../GME/Language/GME_localization.zh_cn.conf | 18 +- .../Helicopters/Mi8MT/GME_Mi8MT_ambient.et | 23 +++ .../Mi8MT/GME_Mi8MT_ambient.et.meta | 17 ++ .../Helicopters/UH1H/GME_UH1H_ambient.et | 23 +++ .../Helicopters/UH1H/GME_UH1H_ambient.et.meta | 17 ++ .../AI/E_GME_Modules_AmbientFlybyBase.et | 27 +++ .../AI/E_GME_Modules_AmbientFlybyBase.et.meta | 17 ++ .../AI/E_GME_Modules_AmbientMi8MTFlyby.et | 12 ++ .../E_GME_Modules_AmbientMi8MTFlyby.et.meta | 17 ++ .../AI/E_GME_Modules_AmbientUH1HFlyby.et | 12 ++ .../AI/E_GME_Modules_AmbientUH1HFlyby.et.meta | 17 ++ .../Components/GME_AmbientFlybyComponent.c | 188 ++++++++++++++++++ .../GME_Modules_Attribute_FlybyHeight.c | 35 ++++ .../GME_Modules_Attribute_FlybySpeed.c | 35 ++++ ...GME_Modules_Attribute_FlybyStartDistance.c | 35 ++++ .../GME/Editor/Enums/EEditableEntityLabel.c | 3 +- .../Editor/Modules/GME_Modules_AmbientFlyby.c | 153 ++++++++++++++ 35 files changed, 998 insertions(+), 68 deletions(-) create mode 100644 addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et create mode 100644 addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et.meta create mode 100644 addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et create mode 100644 addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et.meta create mode 100644 addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et create mode 100644 addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et.meta create mode 100644 addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et create mode 100644 addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et.meta create mode 100644 addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et create mode 100644 addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et.meta create mode 100644 addons/GME/Scripts/Game/GME/Components/GME_AmbientFlybyComponent.c create mode 100644 addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyHeight.c create mode 100644 addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybySpeed.c create mode 100644 addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyStartDistance.c create mode 100644 addons/GME/Scripts/Game/GME/Editor/Modules/GME_Modules_AmbientFlyby.c diff --git a/addons/GME/Configs/Core/EditableEntityCore.conf b/addons/GME/Configs/Core/EditableEntityCore.conf index 0bbb527..bec8f38 100644 --- a/addons/GME/Configs/Core/EditableEntityCore.conf +++ b/addons/GME/Configs/Core/EditableEntityCore.conf @@ -10,6 +10,13 @@ SCR_EditableEntityCore { } } m_EntityLabels { + SCR_EditableEntityCoreLabelSetting "{6207444BA7AD66AD}" { + m_Info SCR_UIInfo "{6207444BD843E277}" { + Name "#GME-Editor_ContentBrowser_Filter_AI_Name" + } + m_LabelType GME_MODULETYPE_AI + m_LabelGroupType GME_MODULETYPE + } SCR_EditableEntityCoreLabelSetting "{62072CE65FF44D4F}" { m_Info SCR_UIInfo "{62072CE64AA7F64D}" { Name "#GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" diff --git a/addons/GME/Configs/Editor/AttributeLists/Edit.conf b/addons/GME/Configs/Editor/AttributeLists/Edit.conf index 811c8c1..62e4eac 100644 --- a/addons/GME/Configs/Editor/AttributeLists/Edit.conf +++ b/addons/GME/Configs/Editor/AttributeLists/Edit.conf @@ -116,7 +116,7 @@ SCR_EditorAttributeList : "{F3D6C6D25642352C}Configs/Editor/AttributeLists/Edit. m_CategoryConfig "{A16BBA8270489FA0}Configs/Editor/AttributeCategories/Waypoint.conf" m_Layout "{680E4985E42137FB}UI/layouts/Editor/Attributes/AttributePrefabs/AttributePrefab_Slider.layout" m_baseValues SCR_EditorAttributeBaseValues "{59916BDD3EC05B0B}" { - m_sSliderValueFormating "#GME-Editor_Attribute_CompletionRadius_ValueFormating" + m_sSliderValueFormating "#GME-Editor_Attribute_ValueFormatting_Length" m_fMin 0 m_fStep 1 m_iDecimals 0 @@ -157,4 +157,4 @@ SCR_EditorAttributeList : "{F3D6C6D25642352C}Configs/Editor/AttributeLists/Edit. m_Layout "{9CFE6B0F98097C35}UI/layouts/Editor/Attributes/AttributePrefabs/AttributePrefab_MultilineEditBox.layout" } } -} +} \ No newline at end of file diff --git a/addons/GME/Configs/Editor/AttributeLists/GME_Modules.conf b/addons/GME/Configs/Editor/AttributeLists/GME_Modules.conf index 8d70994..ea3f12d 100644 --- a/addons/GME/Configs/Editor/AttributeLists/GME_Modules.conf +++ b/addons/GME/Configs/Editor/AttributeLists/GME_Modules.conf @@ -1,5 +1,47 @@ SCR_EditorAttributeList { m_aAttributes { + GME_Modules_Attribute_FlybyHeight "{62071A6417B8AC69}" { + m_UIInfo SCR_EditorAttributeUIInfo "{62071BC6AA4E61DF}" { + Name "#GME-Modules_Attribute_Height_Name" + } + m_CategoryConfig "{416C6E9ECC3D231D}Configs/Editor/AttributeCategories/Entity.conf" + m_Layout "{680E4985E42137FB}UI/layouts/Editor/Attributes/AttributePrefabs/AttributePrefab_Slider.layout" + m_baseValues SCR_EditorAttributeBaseValues "{62071BC68FE0D611}" { + m_sSliderValueFormating "#GME-Editor_Attribute_ValueFormatting_Length" + m_fMin 10 + m_fMax 5000 + m_fStep 10 + m_iDecimals 0 + } + } + GME_Modules_Attribute_FlybySpeed "{62071A641437D257}" { + m_UIInfo SCR_EditorAttributeUIInfo "{62071BC6ABDCFC7A}" { + Name "#GME-Modules_Attribute_Speed_Name" + } + m_CategoryConfig "{416C6E9ECC3D231D}Configs/Editor/AttributeCategories/Entity.conf" + m_Layout "{680E4985E42137FB}UI/layouts/Editor/Attributes/AttributePrefabs/AttributePrefab_Slider.layout" + m_baseValues SCR_EditorAttributeBaseValues "{62071BC68DE0AF21}" { + m_sSliderValueFormating "#GME-Editor_Attribute_ValueFormatting_Speed" + m_fMin 50 + m_fMax 1000 + m_fStep 10 + m_iDecimals 0 + } + } + GME_Modules_Attribute_FlybyStartDistance "{62071A64154DC719}" { + m_UIInfo SCR_EditorAttributeUIInfo "{62071BC683932DA7}" { + Name "#GME-Modules_Attribute_StartDistance_Name" + } + m_CategoryConfig "{416C6E9ECC3D231D}Configs/Editor/AttributeCategories/Entity.conf" + m_Layout "{680E4985E42137FB}UI/layouts/Editor/Attributes/AttributePrefabs/AttributePrefab_Slider.layout" + m_baseValues SCR_EditorAttributeBaseValues "{62071BC63144EDC4}" { + m_sSliderValueFormating "#GME-Editor_Attribute_ValueFormatting_Length" + m_fMin 1000 + m_fMax 10000 + m_fStep 100 + m_iDecimals 0 + } + } GME_Modules_Attribute_SelectLZ "{62057E5007D74B92}" { m_UIInfo SCR_EditorAttributeUIInfo "{62057E5005337FF0}" { Name "#GME-Modules_LZ_name" diff --git a/addons/GME/Configs/Editor/PlaceableEntities/Systems/Systems.conf b/addons/GME/Configs/Editor/PlaceableEntities/Systems/Systems.conf index 9ef8303..d4fff1f 100644 --- a/addons/GME/Configs/Editor/PlaceableEntities/Systems/Systems.conf +++ b/addons/GME/Configs/Editor/PlaceableEntities/Systems/Systems.conf @@ -1,6 +1,8 @@ SCR_PlaceableEntitiesRegistry { m_Prefabs +{ "{7B68FEDCB026BB2F}Prefabs/Items/Misc/IntelligenceFolder_E_01/E_GME_IntelFolder_01.et" + "{6CC280CC94A055EA}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientUH1HFlyby.et" + "{D7381CF65B75B4D1}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientMi8MTFlyby.et" "{B11FA818A134D5AE}PrefabsEditable/Modules/Reinforcements/E_GME_Modules_RallyPoint.et" "{06E1603BE4D59D63}PrefabsEditable/Modules/Reinforcements/E_GME_Modules_LZ.et" "{8A52B1DEF3843C1D}PrefabsEditable/Modules/Reinforcements/E_GME_Modules_SpawnReinforcements.et" diff --git a/addons/GME/Configs/Notifications/Notifications.conf b/addons/GME/Configs/Notifications/Notifications.conf index 918a315..f41cfa3 100644 --- a/addons/GME/Configs/Notifications/Notifications.conf +++ b/addons/GME/Configs/Notifications/Notifications.conf @@ -1,13 +1,5 @@ SCR_NotificationConfig { m_aNotificationDisplayData { - GME_NotificationPrefabDisplayName "{620508C5276F3855}" { - m_NotificationKey GME_PLACE_PREFAB_FIRST - m_info SCR_UINotificationInfo "{620508C56085F3FC}" { - Name "#GME-Notification_PLACE_PREFAB_FIRST" - Icon "{2ABEFFC36C5EA842}UI/Textures/Notifications/Notification_Default_Failed.edds" - m_cNotificationColor WARNING - } - } SCR_NotificationPlayerTargetEditableEntity "{628CBCCF4C4BA4D1}" { m_NotificationKey GME_PLAYER_PICKED_UP_ITEM m_info SCR_UINotificationInfo "{628CBCCF461F8F6E}" { @@ -16,5 +8,13 @@ SCR_NotificationConfig { m_EditorSetPositionData AUTO_SET_POSITION_ONCE } } + GME_NotificationPrefabDisplayName "{620508C5276F3855}" { + m_NotificationKey GME_PLACE_PREFAB_FIRST + m_info SCR_UINotificationInfo "{620508C56085F3FC}" { + Name "#GME-Notification_PLACE_PREFAB_FIRST" + Icon "{2ABEFFC36C5EA842}UI/Textures/Notifications/Notification_Default_Failed.edds" + m_cNotificationColor WARNING + } + } } } \ No newline at end of file diff --git a/addons/GME/Language/GME_localization.cs_cz.conf b/addons/GME/Language/GME_localization.cs_cz.conf index adf8375..5766fcd 100644 --- a/addons/GME/Language/GME_localization.cs_cz.conf +++ b/addons/GME/Language/GME_localization.cs_cz.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teleportujte jednotku k jednomu z jejích spolubojovníci" "Teleportujte se ke spolubojovníci" "Poloměr dokončení" - "%1 m" "Všichni" "Jakýkoliv" "Velitel" @@ -81,12 +87,20 @@ StringTableRuntime { "Postawa" "Zalehnout" "Stát" + "%1 m" + "%1 km/h" "Viditelnost" "Bod trasy" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.de_de.conf b/addons/GME/Language/GME_localization.de_de.conf index 0249fe3..d422d77 100644 --- a/addons/GME/Language/GME_localization.de_de.conf +++ b/addons/GME/Language/GME_localization.de_de.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teleportiere die Einheit zu einem seiner Kameraden" "Zum Kameraden teleportieren" "Abschlussradius" - "%1 m" "Alle" "Irgendeiner" "Anführer" @@ -81,12 +87,20 @@ StringTableRuntime { "Haltung" "Hinlegen" "Aufstehen" + "%1 m" + "%1 km/h" "Sichtbarkeit" "Wegpunkt" + "KI" "Verstärkungen" "Modultyp" "Besatzung auswählen" + "Atmosphärischer Vorbeiflug eines Mi-9MT" + "Atmosphärischer Vorbeiflug eines UH-1H" + "Höhe" "Zurück und Löschen" + "Tempo" + "Startdistanz" "Bei LZ verbleiben" "Fahrzeugverhalten" "LZ" diff --git a/addons/GME/Language/GME_localization.en_us.conf b/addons/GME/Language/GME_localization.en_us.conf index cf15747..2467f2b 100644 --- a/addons/GME/Language/GME_localization.en_us.conf +++ b/addons/GME/Language/GME_localization.en_us.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teleport unit to one of its squadmates" "Teleport To Squadmate" "Completion radius" - "%1 m" "All" "Any" "Leader" @@ -81,12 +87,20 @@ StringTableRuntime { "Stance" "Prone" "Stand" + "%1 m" + "%1 km/h" "Visibility" "Waypoint" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.es_es.conf b/addons/GME/Language/GME_localization.es_es.conf index 230761e..faf4b8e 100644 --- a/addons/GME/Language/GME_localization.es_es.conf +++ b/addons/GME/Language/GME_localization.es_es.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Unidad de teletransporte a uno de sus compañeros de escuadrón" "Teletransportarse a compañero de escuadrón" "Radio de consecución" - "%1 m" "Todo" "Cualquiera" "Líder" @@ -81,12 +87,20 @@ StringTableRuntime { "Postura" "Tumbado" "De pie" + "%1 m" + "%1 km/h" "Visibilidad" "unto de referencia" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.fr_fr.conf b/addons/GME/Language/GME_localization.fr_fr.conf index 3742f13..48177d3 100644 --- a/addons/GME/Language/GME_localization.fr_fr.conf +++ b/addons/GME/Language/GME_localization.fr_fr.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Téléporter l'unité à l'un de ses coéquipiers" "Téléportation vers un coéquipier" "Radio de consecución" - "%1 m" "Tous" "Quelconque" "Chef" @@ -81,12 +87,20 @@ StringTableRuntime { "Position" "À plat ventre" "Debout" + "%1 m" + "%1 km/h" "Visibilité" "Point de passage" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.it_it.conf b/addons/GME/Language/GME_localization.it_it.conf index 9717aa8..bfa05b7 100644 --- a/addons/GME/Language/GME_localization.it_it.conf +++ b/addons/GME/Language/GME_localization.it_it.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teletrasporta l'unità a uno dei suoi compagni di squadra" "Teletrasporta al compagno di squadra" "Raggio di completamento" - "%1 m" "Tutti" "Qualsiasi" "Capo" @@ -81,12 +87,20 @@ StringTableRuntime { "Posizione" "Prono" "In piedi" + "%1 m" + "%1 km/h" "Visibilità" "Destinazione" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "Indietro ed elimina" + "Speed" + "Start distance" "Soggiorna a LZ" "Comportamento del veicolo" "LZ" diff --git a/addons/GME/Language/GME_localization.ja_jp.conf b/addons/GME/Language/GME_localization.ja_jp.conf index 373e16a..709b8cc 100644 --- a/addons/GME/Language/GME_localization.ja_jp.conf +++ b/addons/GME/Language/GME_localization.ja_jp.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "ユニットを分隊メンバーの一人にテレポートする" "分隊へテレポート" "完了範囲" - "%1 m" "すべて" "任意" "リーダー" @@ -81,12 +87,20 @@ StringTableRuntime { "体勢" "うつ伏せ" "立て" + "%1 m" + "%1 km/h" "可視性" "ウェイポイント" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB と削除" + "Speed" + "Start distance" "LZ で待機" "車両の挙動" "LZ" diff --git a/addons/GME/Language/GME_localization.ko_kr.conf b/addons/GME/Language/GME_localization.ko_kr.conf index 6edfb37..e3de4fb 100644 --- a/addons/GME/Language/GME_localization.ko_kr.conf +++ b/addons/GME/Language/GME_localization.ko_kr.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "유닛을 분대원 중 한 명에게 텔레포트합니다." "분대원에게 텔레포트" "완료 반경" - "%1 m" "전원" "누구나" "지휘관" @@ -81,12 +87,20 @@ StringTableRuntime { "자세" "엎드려 쏴" "선 자세" + "%1 m" + "%1 km/h" "가시거리" "경유지" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "귀환 후 삭제" + "Speed" + "Start distance" "LZ에 머물르기" "차량 행동" "LZ" diff --git a/addons/GME/Language/GME_localization.pl_pl.conf b/addons/GME/Language/GME_localization.pl_pl.conf index 63c5e8e..b41d746 100644 --- a/addons/GME/Language/GME_localization.pl_pl.conf +++ b/addons/GME/Language/GME_localization.pl_pl.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teleportuj jednostkę do jednego z członków jej drużyny" "Teleportuj się do członka drużyny" "Promień zaliczenia" - "%1 m" "Wszyscy" "Dowolne" "Dowódca" @@ -81,12 +87,20 @@ StringTableRuntime { "Postawa" "Leżąca" "Stojąca" + "%1 m" + "%1 km/h" "Widoczność" "unkt trasy" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "róc do bazy i despawnuj" + "Speed" + "Start distance" "Pozostań na LZ" "Pozostań na LZ" "LZ (Strefa lądowania)" diff --git a/addons/GME/Language/GME_localization.pt_br.conf b/addons/GME/Language/GME_localization.pt_br.conf index c0596aa..977946d 100644 --- a/addons/GME/Language/GME_localization.pt_br.conf +++ b/addons/GME/Language/GME_localization.pt_br.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teleport unit to one of its squadmates" "Teleport To Squadmate" "Raio de posicionamento" - "%1 m" "Todos" "Qualquer" "Líder" @@ -81,12 +87,20 @@ StringTableRuntime { "Postura" "Deitado" "Em pé" + "%1 m" + "%1 km/h" "Visibilidade" "Ponto de rota" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.ru_ru.conf b/addons/GME/Language/GME_localization.ru_ru.conf index 3474172..23310ae 100644 --- a/addons/GME/Language/GME_localization.ru_ru.conf +++ b/addons/GME/Language/GME_localization.ru_ru.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Телепортировать юнит к одному из его товарищей по отряду" "Телепортироваться к товарищу по отряду" "Радиус завершения" - "%1 m" "Все" "Любой" "Лидер" @@ -81,12 +87,20 @@ StringTableRuntime { "Стойка" "Лежа" "Стоять" + "%1 m" + "%1 km/h" "Видимость" "Точка маршрута" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.st b/addons/GME/Language/GME_localization.st index db10703..bfcab10 100644 --- a/addons/GME/Language/GME_localization.st +++ b/addons/GME/Language/GME_localization.st @@ -80,35 +80,6 @@ StringTable { ImageLink "" Hidden 0 } - CustomStringTableItem "{5D19597480C38375}" { - Id "GME-Editor_Attribute_CompletionRadius_ValueFormating" - Target_en_us "%1 m" - Target_en_us_edited "" - Target_fr_fr "%1 m" - Target_it_it "%1 m" - Target_de_de "%1 m" - Target_es_es "%1 m" - Target_cs_cz "%1 m" - Target_pl_pl "%1 m" - Target_ru_ru "%1 m" - Target_ja_jp "%1 m" - Target_ko_kr "%1 m" - Target_pt_br "%1 m" - Target_zh_cn "%1 米" - Comment "" - DevNote "" - Repro "" - ActorGender NONE - Terminology NONE - Status DEVELOPMENT_PENDING - NonTranslatable 0 - MaxLength 0 - Modified 1561942876 - Author "Kex" - LastChanged "crow" - ImageLink "" - Hidden 0 - } CustomStringTableItem "{5D19597480C3844A}" { Id "GME-Editor_Attribute_CompletionType_All_Name" Target_en_us "All" @@ -632,6 +603,55 @@ StringTable { ImageLink "" Hidden 0 } + CustomStringTableItem "{5D19597480C38375}" { + Id "GME-Editor_Attribute_ValueFormatting_Length" + Target_en_us "%1 m" + Target_en_us_edited "" + Target_fr_fr "%1 m" + Target_it_it "%1 m" + Target_de_de "%1 m" + Target_es_es "%1 m" + Target_cs_cz "%1 m" + Target_pl_pl "%1 m" + Target_ru_ru "%1 m" + Target_ja_jp "%1 m" + Target_ko_kr "%1 m" + Target_pt_br "%1 m" + Target_zh_cn "%1 米" + Target_uk_ua "%1 m" + Comment "" + DevNote "" + Repro "" + ActorGender NONE + Terminology NONE + Status DEVELOPMENT_PENDING + NonTranslatable 0 + MaxLength 0 + Modified 1656230612 + Author "Kexanone" + LastChanged "Kexanone" + ImageLink "" + Hidden 0 + } + CustomStringTableItem "{62071BC2FE856882}" { + Id "GME-Editor_Attribute_ValueFormatting_Speed" + Target_en_us "%1 km/h" + Target_fr_fr "%1 km/h" + Target_it_it "%1 km/h" + Target_de_de "%1 km/h" + Target_es_es "%1 km/h" + Target_cs_cz "%1 km/h" + Target_pl_pl "%1 km/h" + Target_ru_ru "%1 km/h" + Target_ja_jp "%1 km/h" + Target_ko_kr "%1 km/h" + Target_pt_br "%1 km/h" + Target_zh_cn "%1 km/h" + Target_uk_ua "%1 km/h" + Modified 1644635353 + Author "Kexanone" + LastChanged "Kexanone" + } CustomStringTableItem "{5D955C2079184639}" { Id "GME-Editor_Attribute_VisibilityToggle_Name" Target_en_us "Visibility" @@ -679,6 +699,14 @@ StringTable { ImageLink "" Hidden 0 } + CustomStringTableItem "{6207444BFA04A823}" { + Id "GME-Editor_ContentBrowser_Filter_AI_Name" + Target_en_us "AI" + Target_de_de "KI" + Modified 1644643579 + Author "Kexanone" + LastChanged "Kexanone" + } CustomStringTableItem "{62072CE78F00B469}" { Id "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" Target_en_us "Reinforcements" @@ -703,6 +731,30 @@ StringTable { Author "Kexanone" LastChanged "Kexanone" } + CustomStringTableItem "{61FF20CD7A430C94}" { + Id "GME-Modules_AmbientFlyby_Mi8MT_name" + Target_en_us "Ambient Mi-8MT Flyby" + Target_de_de "Atmosphärischer Vorbeiflug eines Mi-9MT" + Modified 1644113190 + Author "Kexanone" + LastChanged "Kexanone" + } + CustomStringTableItem "{61FF20CD461AC2BD}" { + Id "GME-Modules_AmbientFlyby_UH1H_name" + Target_en_us "Ambient UH-1H Flyby" + Target_de_de "Atmosphärischer Vorbeiflug eines UH-1H" + Modified 1644113187 + Author "Kexanone" + LastChanged "Kexanone" + } + CustomStringTableItem "{62071BC43A365B6C}" { + Id "GME-Modules_Attribute_Height_Name" + Target_en_us "Height" + Target_de_de "Höhe" + Modified 1644634787 + Author "Kexanone" + LastChanged "Kexanone" + } CustomStringTableItem "{62055062957C227C}" { Id "GME-Modules_Attribute_RTBAndDespawn_Name" Target_en_us "RTB and Despawn" @@ -716,6 +768,22 @@ StringTable { Author "Kexanone" LastChanged "Kexanone" } + CustomStringTableItem "{62071BC4205E761B}" { + Id "GME-Modules_Attribute_Speed_Name" + Target_en_us "Speed" + Target_de_de "Tempo" + Modified 1644635003 + Author "Kexanone" + LastChanged "Kexanone" + } + CustomStringTableItem "{62071BC42E178789}" { + Id "GME-Modules_Attribute_StartDistance_Name" + Target_en_us "Start distance" + Target_de_de "Startdistanz" + Modified 1644634991 + Author "Kexanone" + LastChanged "Kexanone" + } CustomStringTableItem "{620550636AF46B2D}" { Id "GME-Modules_Attribute_StayAtLZ_Name" Target_en_us "Stay at LZ" @@ -803,9 +871,9 @@ StringTable { Target_ko_kr "취소" Target_pt_br "Cancelar" Target_zh_cn "取消" - Modified 1575018579 + Modified 1655266293 Author "crow" - LastChanged "kexanone" + LastChanged "Kexanone" } CustomStringTableItem "{5DC552DA2D2CBC68}" { Id "GME-UI_Listbox_OnConfirm" diff --git a/addons/GME/Language/GME_localization.uk_ua.conf b/addons/GME/Language/GME_localization.uk_ua.conf index cf15747..2467f2b 100644 --- a/addons/GME/Language/GME_localization.uk_ua.conf +++ b/addons/GME/Language/GME_localization.uk_ua.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "Teleport unit to one of its squadmates" "Teleport To Squadmate" "Completion radius" - "%1 m" "All" "Any" "Leader" @@ -81,12 +87,20 @@ StringTableRuntime { "Stance" "Prone" "Stand" + "%1 m" + "%1 km/h" "Visibility" "Waypoint" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "RTB and Despawn" + "Speed" + "Start distance" "Stay at LZ" "Vehicle behaviour" "LZ" diff --git a/addons/GME/Language/GME_localization.zh_cn.conf b/addons/GME/Language/GME_localization.zh_cn.conf index 8364030..78a4469 100644 --- a/addons/GME/Language/GME_localization.zh_cn.conf +++ b/addons/GME/Language/GME_localization.zh_cn.conf @@ -5,7 +5,6 @@ StringTableRuntime { "GME-ActionList_TeleportToSquadmate_Description" "GME-ActionList_TeleportToSquadmate_Name" "GME-Editor_Attribute_CompletionRadius_Name" - "GME-Editor_Attribute_CompletionRadius_ValueFormating" "GME-Editor_Attribute_CompletionType_All_Name" "GME-Editor_Attribute_CompletionType_Any_Name" "GME-Editor_Attribute_CompletionType_Leader_Name" @@ -32,12 +31,20 @@ StringTableRuntime { "GME-Editor_Attribute_Stance_Name" "GME-Editor_Attribute_Stance_Prone_Name" "GME-Editor_Attribute_Stance_Stand_Name" + "GME-Editor_Attribute_ValueFormatting_Length" + "GME-Editor_Attribute_ValueFormatting_Speed" "GME-Editor_Attribute_VisibilityToggle_Name" "GME-Editor_AttributeCategory_Waypoint_Name" + "GME-Editor_ContentBrowser_Filter_AI_Name" "GME-Editor_ContentBrowser_Filter_REINFORCEMENTS_Name" "GME-Editor_ContentBrowser_FilterCategory_MODULETYPE_Name" "GME-Editor_ContentBrowser_Title_ChooseGarrison" + "GME-Modules_AmbientFlyby_Mi8MT_name" + "GME-Modules_AmbientFlyby_UH1H_name" + "GME-Modules_Attribute_Height_Name" "GME-Modules_Attribute_RTBAndDespawn_Name" + "GME-Modules_Attribute_Speed_Name" + "GME-Modules_Attribute_StartDistance_Name" "GME-Modules_Attribute_StayAtLZ_Name" "GME-Modules_Attribute_VehicleBehavior_Name" "GME-Modules_LZ_name" @@ -54,7 +61,6 @@ StringTableRuntime { "将单位传送至其一名队员处" "传送至队友" "完成半徑" - "%1 米" "全部" "任意" "隊長" @@ -81,12 +87,20 @@ StringTableRuntime { "戰鬥態勢" "臥倒" "站起" + "%1 米" + "%1 km/h" "可見度" "路点" + "AI" "Reinforcements" "Module Type" "Choose garrison" + "Ambient Mi-8MT Flyby" + "Ambient UH-1H Flyby" + "Height" "返回並刪除" + "Speed" + "Start distance" "留在LZ" "載具行為" "LZ" diff --git a/addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et b/addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et new file mode 100644 index 0000000..fde9a69 --- /dev/null +++ b/addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et @@ -0,0 +1,23 @@ +Vehicle : "{7BD282AF716ED639}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_armed.et" { + ID "5A7CEB06421662F8" + components { + GME_AmbientFlybyComponent "{61FED4E63BA86A6B}" { + } + SCR_BaseCompartmentManagerComponent "{20FB66C5DCB8DF72}" { + CompartmentSlots { + PilotCompartmentSlot PilotCompartment { + m_DefaultOccupantData SCR_DefaultOccupantData "{61FED4E63BA86A4A}" { + m_sDefaultOccupantPrefab "{A62FA97C4EC64F14}Prefabs/Characters/Factions/OPFOR/USSR_Army/Character_USSR_HeliPilot.et" + } + } + } + } + VehicleHelicopterSimulation "{51FAEE57F7DA270E}" { + Simulation Helicopter "{51FAED9EF37A2D29}" { + Engine HelicopterEngine "{51FAED9EF37A2D2B}" { + StartUpTime 0 + } + } + } + } +} \ No newline at end of file diff --git a/addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et.meta b/addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et.meta new file mode 100644 index 0000000..f283e74 --- /dev/null +++ b/addons/GME/Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{1AC8EBD00FF27447}Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et b/addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et new file mode 100644 index 0000000..a09c859 --- /dev/null +++ b/addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et @@ -0,0 +1,23 @@ +Vehicle : "{DDDD9B51F1234DF3}Prefabs/Vehicles/Helicopters/UH1H/UH1H_armed.et" { + ID "5DB688595BAB2FD7" + components { + GME_AmbientFlybyComponent "{61FED4E62D5FC9E2}" { + } + SCR_BaseCompartmentManagerComponent "{20FB66C5DCB8DF72}" { + CompartmentSlots { + PilotCompartmentSlot PilotCompartment { + m_DefaultOccupantData SCR_DefaultOccupantData "{61FED4E62D5FC9D6}" { + m_sDefaultOccupantPrefab "{42A502E3BB727CEB}Prefabs/Characters/Factions/BLUFOR/US_Army/Character_US_HeliPilot.et" + } + } + } + } + VehicleHelicopterSimulation "{51FAEE57F7DA270E}" { + Simulation Helicopter "{51FAED9EF37A2D29}" { + Engine HelicopterEngine "{51FAED9EF37A2D2B}" { + StartUpTime 0 + } + } + } + } +} \ No newline at end of file diff --git a/addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et.meta b/addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et.meta new file mode 100644 index 0000000..582ca47 --- /dev/null +++ b/addons/GME/Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{CBFBC34FB28A29DA}Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et new file mode 100644 index 0000000..fd9534a --- /dev/null +++ b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et @@ -0,0 +1,27 @@ +GME_Modules_AmbientFlyby : "{57C4079FD5B14D31}PrefabsEditable/Modules/E_GME_Modules_Base.et" { + ID "61FEF0AC6FC068E1" + components { + GME_Modules_EditableModuleComponent "{61FEF0AC6FC047BE}" { + m_UIInfo SCR_EditableEntityUIInfo "{61FEF0AC6FC047A8}" { + Icon "{BFBA42C85CB25019}UI/Textures/Editor/EditableEntities/Vehicles/EditableEntity_Vehicle_Helicopter.edds" + m_Image "{6C492D2DC9F2EF04}UI/Textures/Editor/ContentBrowser/ContentBrowser_Vehicle_Helicopter.edds" + m_aAuthoredLabels + { + 7004 + } + } + m_aInitActions { + GME_Modules_InitAction_EditAttributes "{62071BC22085279E}" { + } + } + } + SCR_PreviewEntityComponent "{61FEF54A09A195CE}" { + m_aEntries { + SCR_BasePreviewEntry "{61FEF54A01E97382}" { + m_Mesh "{A215E87110025E26}Assets/Modules/ModulePreviewArrow/ModulePreviewArrow.xob" + m_Shape MESH + } + } + } + } + m_bDeleteImmediately 0 +} \ No newline at end of file diff --git a/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et.meta b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et.meta new file mode 100644 index 0000000..64fafc3 --- /dev/null +++ b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientFlybyBase.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{7B675D73A2E19F7F}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientFlybyBase.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et new file mode 100644 index 0000000..26fadcb --- /dev/null +++ b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et @@ -0,0 +1,12 @@ +GME_Modules_AmbientFlyby : "{7B675D73A2E19F7F}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientFlybyBase.et" { + ID "61FEF0AC6FC068E1" + components { + GME_Modules_EditableModuleComponent "{61FEF0AC6FC047BE}" { + m_UIInfo SCR_EditableEntityUIInfo "{61FEF0AC6FC047A8}" { + Name "#GME-Modules_AmbientFlyby_Mi8MT_name" + m_sFaction "USSR" + } + } + } + m_sAmbientHeloPrefabName "{1AC8EBD00FF27447}Prefabs/Vehicles/Helicopters/Mi8MT/GME_Mi8MT_ambient.et" +} \ No newline at end of file diff --git a/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et.meta b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et.meta new file mode 100644 index 0000000..2f2be07 --- /dev/null +++ b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientMi8MTFlyby.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{D7381CF65B75B4D1}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientMi8MTFlyby.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et new file mode 100644 index 0000000..2190e12 --- /dev/null +++ b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et @@ -0,0 +1,12 @@ +GME_Modules_AmbientFlyby : "{7B675D73A2E19F7F}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientFlybyBase.et" { + ID "61FEF0AC6FC068E1" + components { + GME_Modules_EditableModuleComponent "{61FEF0AC6FC047BE}" { + m_UIInfo SCR_EditableEntityUIInfo "{61FEF0AC6FC047A8}" { + Name "#GME-Modules_AmbientFlyby_UH1H_name" + m_sFaction "US" + } + } + } + m_sAmbientHeloPrefabName "{CBFBC34FB28A29DA}Prefabs/Vehicles/Helicopters/UH1H/GME_UH1H_ambient.et" +} \ No newline at end of file diff --git a/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et.meta b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et.meta new file mode 100644 index 0000000..32bf692 --- /dev/null +++ b/addons/GME/PrefabsEditable/Modules/AI/E_GME_Modules_AmbientUH1HFlyby.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{6CC280CC94A055EA}PrefabsEditable/Modules/Ambient/E_GME_Modules_AmbientUH1HFlyby.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/GME/Scripts/Game/GME/Components/GME_AmbientFlybyComponent.c b/addons/GME/Scripts/Game/GME/Components/GME_AmbientFlybyComponent.c new file mode 100644 index 0000000..946d70d --- /dev/null +++ b/addons/GME/Scripts/Game/GME/Components/GME_AmbientFlybyComponent.c @@ -0,0 +1,188 @@ +//------------------------------------------------------------------------------------------------ +class GME_AmbientFlybyComponentClass : ScriptComponentClass +{ +} + +//------------------------------------------------------------------------------------------------ +class GME_AmbientFlybyComponent : ScriptComponent +{ + [Attribute(defvalue: "30", desc: "Speed in m/s")] + protected float m_fSpeed; + + [Attribute(defvalue: "6000", desc: "Distance from starting position for triggering despawn in meters")] + protected float m_fDespawnDistance; + + protected Physics m_Physics; + protected vector m_vVelocity; + protected vector m_vStartPos; + protected ref array m_aAgents = {}; + protected SCR_CharacterControllerComponent m_pPilotController; + protected ref array m_aRotorDamageManagers = {}; + + protected ref ScriptInvoker m_OnDespawn = new ScriptInvoker(); + + //------------------------------------------------------------------------------------------------ + override protected void OnPostInit(IEntity owner) + { + if (!GetGame().InPlayMode() || !Replication.IsServer()) + return; + + SetEventMask(owner, EntityEvent.SIMULATE); + m_Physics = owner.GetPhysics(); + m_Physics.SetActive(ActiveState.ACTIVE); + + vector transform[4]; + owner.GetWorldTransform(transform); + m_vStartPos = transform[3]; + m_vVelocity = m_fSpeed * transform[2]; + + GetGame().GetCallqueue().Call(DelayedInit, owner); + } + + //------------------------------------------------------------------------------------------------ + protected void DelayedInit(IEntity owner) + { + SCR_AIGroup crewGroup = GME_VehicleHelper.SpawnCrew(Vehicle.Cast(owner)); + crewGroup.GME_GetOnDoneSpawningMembers().Insert(OnCrewSpawned); + + HelicopterControllerComponent ctrl = HelicopterControllerComponent.Cast(owner.FindComponent(HelicopterControllerComponent)); + if (ctrl) + ctrl.StartEngine(); + + IEntity child = owner.GetChildren(); + while (child) + { + SCR_RotorDamageManagerComponent damageManager = SCR_RotorDamageManagerComponent.Cast(child.FindComponent(SCR_RotorDamageManagerComponent)); + if (damageManager) + { + damageManager.GetOnDamageStateChanged().Insert(OnRotorDamageStateChanged); + m_aRotorDamageManagers.Insert(damageManager); + } + + child = child.GetSibling(); + } + } + + //------------------------------------------------------------------------------------------------ + protected void OnCrewSpawned(SCR_AIGroup group) + { + group.GME_GetOnDoneSpawningMembers().Remove(OnCrewSpawned); + group.GetAgents(m_aAgents); + m_aAgents.Insert(group); + + foreach (AIAgent agent : m_aAgents) + { + agent.SetPermanentLOD(0); + } + + SCR_ChimeraCharacter pilot = SCR_ChimeraCharacter.Cast(m_aAgents[0].GetControlledEntity()); + if (!pilot) + return SCR_EntityHelper.DeleteEntityAndChildren(GetOwner()); + + m_pPilotController = SCR_CharacterControllerComponent.Cast(pilot.FindComponent(SCR_CharacterControllerComponent)); + if (!m_pPilotController) + return SCR_EntityHelper.DeleteEntityAndChildren(GetOwner()); + + m_pPilotController.m_OnLifeStateChanged.Insert(OnPilotLifeStateChanged); + } + + //------------------------------------------------------------------------------------------------ + override protected void EOnSimulate(IEntity owner, float timeSlice) + { + m_Physics.SetVelocity(m_vVelocity); + HandleDespawning(owner, timeSlice); + } + + protected const float DISTANCE_CHECK_TIMEOUT = 2; + protected float m_fDistanceCheckTimer = 0; + + //------------------------------------------------------------------------------------------------ + //! Despawns owner when it moved the despawn distance + protected void HandleDespawning(IEntity owner, float timeSlice) + { + m_fDistanceCheckTimer += timeSlice; + if (m_fDistanceCheckTimer < m_fDistanceCheckTimer) + return; + + m_fDistanceCheckTimer = 0; + + if (vector.DistanceXZ(m_vStartPos, owner.GetOrigin()) < m_fDespawnDistance) + return; + + SCR_EntityHelper.DeleteEntityAndChildren(owner); + } + + //------------------------------------------------------------------------------------------------ + //! Terminate simulation when the life state of the pilot changes + protected void OnPilotLifeStateChanged(ECharacterLifeState previousLifeState, ECharacterLifeState newLifeState) + { + TerminateSimulation(); + } + + //------------------------------------------------------------------------------------------------ + protected void OnRotorDamageStateChanged(EDamageState state) + { + if (state != EDamageState.DESTROYED) + return; + + TerminateSimulation(); + } + + //------------------------------------------------------------------------------------------------ + protected void TerminateSimulation() + { + foreach (AIAgent agent : m_aAgents) + { + if (agent) + agent.SetPermanentLOD(-1); + } + + ClearEventMask(GetOwner(), EntityEvent.SIMULATE); + HelicopterControllerComponent ctrl = HelicopterControllerComponent.Cast(GetOwner().FindComponent(HelicopterControllerComponent)); + ctrl.StopEngine(); + + if (m_pPilotController) + m_pPilotController.m_OnLifeStateChanged.Remove(OnPilotLifeStateChanged); + + foreach (SCR_RotorDamageManagerComponent damageManager : m_aRotorDamageManagers) + { + damageManager.GetOnDamageStateChanged().Remove(OnRotorDamageStateChanged); + } + } + + //------------------------------------------------------------------------------------------------ + void SetSpeed(float speed) + { + m_fSpeed = speed; + } + + //------------------------------------------------------------------------------------------------ + void SetDespawnDistance(float distance) + { + m_fDespawnDistance = distance; + } + + //------------------------------------------------------------------------------------------------ + void SetDirection(vector direction) + { + m_vVelocity = m_fSpeed * direction; + } + + //------------------------------------------------------------------------------------------------ + void SetStartPos(vector pos) + { + m_vStartPos = pos; + } + + //------------------------------------------------------------------------------------------------ + vector GetStartPos() + { + return m_vStartPos; + } + + //------------------------------------------------------------------------------------------------ + ScriptInvoker GetOnDespawn() + { + return m_OnDespawn; + } +} diff --git a/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyHeight.c b/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyHeight.c new file mode 100644 index 0000000..95ee4e2 --- /dev/null +++ b/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyHeight.c @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------------------------ +[BaseContainerProps(), SCR_BaseEditorAttributeCustomTitle()] +class GME_Modules_Attribute_FlybyHeight : SCR_BaseValueListEditorAttribute +{ + //------------------------------------------------------------------------------------------------ + override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager) + { + GME_Modules_EditableModuleComponent editableModuleComponent = GME_Modules_EditableModuleComponent.Cast(item); + if (!editableModuleComponent) + return null; + + GME_Modules_AmbientFlyby module = GME_Modules_AmbientFlyby.Cast(editableModuleComponent.GetOwner()); + if (!module) + return null; + + return SCR_BaseEditorAttributeVar.CreateFloat(module.GetHeight()); + } + + //------------------------------------------------------------------------------------------------ + override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID) + { + if (!var) + return; + + GME_Modules_EditableModuleComponent editableModuleComponent = GME_Modules_EditableModuleComponent.Cast(item); + if (!editableModuleComponent) + return; + + GME_Modules_AmbientFlyby module = GME_Modules_AmbientFlyby.Cast(editableModuleComponent.GetOwner()); + if (!module) + return; + + module.SetHeight(var.GetFloat()); + } +} diff --git a/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybySpeed.c b/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybySpeed.c new file mode 100644 index 0000000..063b931 --- /dev/null +++ b/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybySpeed.c @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------------------------ +[BaseContainerProps(), SCR_BaseEditorAttributeCustomTitle()] +class GME_Modules_Attribute_FlybySpeed : SCR_BaseValueListEditorAttribute +{ + //------------------------------------------------------------------------------------------------ + override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager) + { + GME_Modules_EditableModuleComponent editableModuleComponent = GME_Modules_EditableModuleComponent.Cast(item); + if (!editableModuleComponent) + return null; + + GME_Modules_AmbientFlyby module = GME_Modules_AmbientFlyby.Cast(editableModuleComponent.GetOwner()); + if (!module) + return null; + + return SCR_BaseEditorAttributeVar.CreateFloat(Physics.MS2KMH * module.GetSpeed()); + } + + //------------------------------------------------------------------------------------------------ + override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID) + { + if (!var) + return; + + GME_Modules_EditableModuleComponent editableModuleComponent = GME_Modules_EditableModuleComponent.Cast(item); + if (!editableModuleComponent) + return; + + GME_Modules_AmbientFlyby module = GME_Modules_AmbientFlyby.Cast(editableModuleComponent.GetOwner()); + if (!module) + return; + + module.SetSpeed(Physics.KMH2MS * var.GetFloat()); + } +} diff --git a/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyStartDistance.c b/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyStartDistance.c new file mode 100644 index 0000000..555395c --- /dev/null +++ b/addons/GME/Scripts/Game/GME/Editor/Containers/Attributes/Modules/GME_Modules_Attribute_FlybyStartDistance.c @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------------------------ +[BaseContainerProps(), SCR_BaseEditorAttributeCustomTitle()] +class GME_Modules_Attribute_FlybyStartDistance : SCR_BaseValueListEditorAttribute +{ + //------------------------------------------------------------------------------------------------ + override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager) + { + GME_Modules_EditableModuleComponent editableModuleComponent = GME_Modules_EditableModuleComponent.Cast(item); + if (!editableModuleComponent) + return null; + + GME_Modules_AmbientFlyby module = GME_Modules_AmbientFlyby.Cast(editableModuleComponent.GetOwner()); + if (!module) + return null; + + return SCR_BaseEditorAttributeVar.CreateFloat(module.GetStartDistance()); + } + + //------------------------------------------------------------------------------------------------ + override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID) + { + if (!var) + return; + + GME_Modules_EditableModuleComponent editableModuleComponent = GME_Modules_EditableModuleComponent.Cast(item); + if (!editableModuleComponent) + return; + + GME_Modules_AmbientFlyby module = GME_Modules_AmbientFlyby.Cast(editableModuleComponent.GetOwner()); + if (!module) + return; + + module.SetStartDistance(var.GetFloat()); + } +} diff --git a/addons/GME/Scripts/Game/GME/Editor/Enums/EEditableEntityLabel.c b/addons/GME/Scripts/Game/GME/Editor/Enums/EEditableEntityLabel.c index f757f86..976ec97 100644 --- a/addons/GME/Scripts/Game/GME/Editor/Enums/EEditableEntityLabel.c +++ b/addons/GME/Scripts/Game/GME/Editor/Enums/EEditableEntityLabel.c @@ -1,7 +1,8 @@ //------------------------------------------------------------------------------------------------ modded enum EEditableEntityLabel { - GME_MODULETYPE_REINFORCEMENTS = 7003 + GME_MODULETYPE_REINFORCEMENTS = 7003, + GME_MODULETYPE_AI = 7004 } //------------------------------------------------------------------------------------------------ diff --git a/addons/GME/Scripts/Game/GME/Editor/Modules/GME_Modules_AmbientFlyby.c b/addons/GME/Scripts/Game/GME/Editor/Modules/GME_Modules_AmbientFlyby.c new file mode 100644 index 0000000..ac462d8 --- /dev/null +++ b/addons/GME/Scripts/Game/GME/Editor/Modules/GME_Modules_AmbientFlyby.c @@ -0,0 +1,153 @@ +//------------------------------------------------------------------------------------------------ +class GME_Modules_AmbientFlybyClass : GME_Modules_BaseClass +{ +} + +//------------------------------------------------------------------------------------------------ +class GME_Modules_AmbientFlyby : GME_Modules_Base +{ + [Attribute(uiwidget: UIWidgets.ResourcePickerThumbnail, desc: "Prefab name for the ambient helicopter", params: "et")] + protected ResourceName m_sAmbientHeloPrefabName; + + [Attribute(defvalue: "50", desc: "Speed in m/s")] + protected float m_fSpeed; + + [Attribute(defvalue: "80", desc: "Flying height relative to terrain in meters")] + protected float m_fHeight; + + [Attribute(defvalue: "3000", desc: "Starting distance from player in meters")] + protected float m_fStartDistance; + + protected const float TERRAIN_Y_SCAN_STEP_SIZE = 100; + + protected Vehicle m_pAircraft; + protected GME_AmbientFlybyComponent m_pFlybyComponent; + + //------------------------------------------------------------------------------------------------ + void SetSpeed(float speed) + { + m_fSpeed = speed; + + if (m_pFlybyComponent) + m_pFlybyComponent.SetSpeed(speed); + } + + //------------------------------------------------------------------------------------------------ + float GetSpeed() + { + return m_fSpeed; + } + + //------------------------------------------------------------------------------------------------ + void SetHeight(float height) + { + m_fHeight = height; + + if (m_pFlybyComponent) + { + vector transform[4]; + GetWorldTransform(transform); + OnMoved(transform, transform); + } + } + + //------------------------------------------------------------------------------------------------ + float GetHeight() + { + return m_fHeight; + } + + //------------------------------------------------------------------------------------------------ + void SetStartDistance(float distance) + { + m_fStartDistance = distance; + + if (m_pFlybyComponent) + { + vector transform[4]; + GetWorldTransform(transform); + OnMoved(transform, transform); + } + } + + //------------------------------------------------------------------------------------------------ + float GetStartDistance() + { + return m_fStartDistance; + } + + //------------------------------------------------------------------------------------------------ + override void Run() + { + EntitySpawnParams params = new EntitySpawnParams(); + params.TransformMode = ETransformMode.WORLD; + GetWorldTransform(params.Transform); + ComputeInitialAircraftTransform(params.Transform, params.Transform); + + Resource res = Resource.Load(m_sAmbientHeloPrefabName); + if (!res.IsValid()) + return; + + m_pAircraft = Vehicle.Cast(GetGame().SpawnEntityPrefab(res, null, params)); + if (!m_pAircraft) + return; + + m_pFlybyComponent = GME_AmbientFlybyComponent.Cast(m_pAircraft.FindComponent(GME_AmbientFlybyComponent)); + if (!m_pFlybyComponent) + return; + + m_pFlybyComponent.SetSpeed(m_fSpeed); + m_pFlybyComponent.SetDespawnDistance(2 * m_fStartDistance); + m_pFlybyComponent.GetOnDespawn().Insert(OnAircraftDespawned); + + SCR_EditableEntityComponent editComponent = SCR_EditableEntityComponent.Cast(m_pAircraft.FindComponent(SCR_EditableEntityComponent)); + if (editComponent) + editComponent.GetOnDeleted().Insert(OnAircraftDespawned); + } + + //------------------------------------------------------------------------------------------------ + protected void ComputeInitialAircraftTransform(vector moduleTransform[4], out vector transform[4]) + { + transform = moduleTransform; + vector offset = m_fStartDistance * transform[2]; + transform[3] = transform[3] - offset; + Math3D.AnglesToMatrix(Vector(offset.ToYaw(), 0, 0), transform); + + float maxTerrainY = 0; + for (int i = 0; i < Math.Ceil(2 * m_fStartDistance / TERRAIN_Y_SCAN_STEP_SIZE); i++) + { + maxTerrainY = Math.Max(maxTerrainY, SCR_TerrainHelper.GetTerrainY(transform[3] + i * TERRAIN_Y_SCAN_STEP_SIZE * transform[2])); + } + + transform[3][1] = transform[3][1] + maxTerrainY + m_fHeight; + } + + //------------------------------------------------------------------------------------------------ + override void OnMoved(vector oldTransform[4], vector newTransform[4]) + { + if (!m_pFlybyComponent) + return; + + float progress = vector.DistanceXZ(m_pAircraft.GetOrigin(), m_pFlybyComponent.GetStartPos()); + + vector transform[4]; + ComputeInitialAircraftTransform(newTransform, transform); + m_pFlybyComponent.SetDirection(transform[2]); + m_pFlybyComponent.SetStartPos(transform[3]); + + transform[3] = transform[3] + progress * transform[2]; + m_pAircraft.SetWorldTransform(transform); + } + + //------------------------------------------------------------------------------------------------ + override void OnDelete() + { + SCR_EntityHelper.DeleteEntityAndChildren(m_pAircraft); + } + + //------------------------------------------------------------------------------------------------ + void OnAircraftDespawned(IEntity aircraft) + { + SCR_EntityHelper.DeleteEntityAndChildren(this); + } +}