diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 324650aa653..b40b084a2f2 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -21,7 +21,7 @@ [assembly: AssemblyVersion("0.6.4.0")] -[assembly: AssemblyInformationalVersion("-rc1")] +[assembly: AssemblyInformationalVersion("")] // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/simulation_parameters/common/credits.json b/simulation_parameters/common/credits.json index eac1b994c27..dd84501c9e0 100644 --- a/simulation_parameters/common/credits.json +++ b/simulation_parameters/common/credits.json @@ -20,11 +20,11 @@ "Lead": true }, { - "Person": "Kasterisk", + "Person": "Kashnox", "Lead": false }, { - "Person": "Kemikal", + "Person": "Kasterisk", "Lead": false }, { @@ -46,6 +46,14 @@ { "Person": "ottoblep", "Lead": false + }, + { + "Person": "Thim", + "Lead": false + }, + { + "Person": "Titan", + "Lead": false } ], "Theory Team": [ @@ -229,6 +237,10 @@ "Person": "jjonj", "Lead": true }, + { + "Person": "Kemikal", + "Lead": false + }, { "Person": "klay2000", "Lead": false @@ -317,10 +329,6 @@ "Person": "TheHungryBandito", "Lead": false }, - { - "Person": "Thim", - "Lead": false - }, { "Person": "Treviisolion", "Lead": false @@ -843,17 +851,20 @@ "fgdfgfthgr-fox", "Undibundi", "ShadowMoon", - "Jan", + "Xzihnago", "Pascal Smit", + "Jan", "Anelle Lisetter Viktoria Rodin", "Nie", "TomDev03", - "icedjuro", "Nozt", "Rob Schnautz", + "Shigasaa", "Matej Mace\u00E1\u0161ik", + "Sentry Primis", "Maksymilian Adamski", "LordZemiakus", + "Teashrock", "Gr0vey", "robby driesen", "Telegina Alexandra", @@ -863,32 +874,31 @@ "0nmyhead", "Bruno Agostinho", "Pikamochzo", - "Sentry Primis", "LibreHacker", "cesco", "\u041C\u0438\u0445\u0430\u043B\u044B\u0447", "monkey", "\u0160imon Rajno\u0161ek", + "Retha", "EzraZebra", - "Teashrock", "Maximilian", "Yannick Alain Francois Miranda", "Maxonovien", "Rune Vercauteren", "Mauboussin Lucas", "Pajo\u0161", - "S1m0n5-him-self", + "Guno haozheum", "Sebastian Quintanilla", "AlexPlay", "Nicholas Stephens", "Sur3", "Vojt\u011Bch John", - "Guno haozheum", "Jesper Welagen", "Kasterisk", "Tanner Adkins", "Iv\u00E1n Sviser Lisiuk", "Shek the Tablespoon", + "Irmantas", "Tibor \u0160\u0165astn\u00FD", "84634E1A607A", "Vladislav Kuznetsov", @@ -896,7 +906,6 @@ "Ji\u0159\u00ED NnN", "Daniel Soohan Park", "ender-titan138a53491ef214b90", - "Shigasaa", "Lorenzo Fagnani", "Sergio Albornoz", "Joah van der Maaden", @@ -919,6 +928,7 @@ "ALostGreenpeper", "Rub\u00E9n", "draconiano", + "Koala Dourado", "SegaiDFC", "Aarni J\u00E4rvel\u00E4inen", "MrTunaPizza", @@ -940,9 +950,10 @@ "Ramon M\u00FCller Rodrigues", "Mihailo Radovanovi\u0107", "zalonorg", + "Markus Forsberg", "Vladimir Didenko", "EldarAlpha42", - "Markus Forsberg", + "Camilo Rauh", "Nemilato", "takko", "Alexia Diana Cojocaru", @@ -955,30 +966,34 @@ "Aleksei Andreyevich Vasilev", "Liam Hallberg", "FrisKisDr", + "Adeline Brauer", "Azuriem", "Ivan Bratovi\u0107", "Nojus", "stoptakingusernames", + "Vedertesu", "J\u0119drzej Kawa", "Span Staans", "Generatoror", "Tim Gloess", "Artem", "Igmc4", - "Vedertesu", "Severin Aurelian Koloman August Ludvig Girtelschmid", "Sofia Souza Dias Silva", "\u0410\u043B\u0435\u043A\u0441\u0430\u043D\u0434\u0440", "Aquos Goatington", "eun4786", + "Mahbeer Alam Sarker", "Rizky Pramudya", "\u041E\u0441\u043C\u0430\u043D \u0425\u0430\u043A\u0438\u043C\u043E\u0432", "C\u00E9sar", + "Kristijan Miracevski", "mykocalico", "Nathaniel Balderramas", "Alex Ges", "Alice K\u00F6nig", "the80hz", + "Will S", "yasst", "Zhou Shiyao", "\u00C1ngel Montero Lamas", @@ -986,8 +1001,10 @@ "Andrew", "Archargelod", "DarkMasterOne", + "FTVerweij", "Lukas Kusy", "Nunez2196", + "HOT CAT", "Steve Manfort", "Uwe Haertel", "yacinedz1234", @@ -997,9 +1014,8 @@ "Seliece Nijman", "das-makama", "Fabien Espanol", - "FTVerweij", + "Sergey", "Fredy Ivan Sucari Callohuanca", - "HOT CAT", "Martin \u010Eur\u00EDk", "Allstreamer", "Gotor", @@ -1016,6 +1032,7 @@ "Juansinmiedo", "magicTimon", "Albert Saltarin", + "Bi2Nb9O3", "Csap\u00F3 B\u00E1lint", "jiijhihih ijijijjiji", "Francisco Javier Busto Toca", @@ -1030,8 +1047,10 @@ "Janusz Krawczyk", "luan holzhauzen", "Peter Kleber", + "Yaromir", "angelbisector", "Michael Mattheis", + "Zero Cool", "1n48yg", "Anderson Smith", "Lorenzo Mambretti", @@ -1040,12 +1059,14 @@ "Ribi2110", "Yehoslav Rudenco", "\u003CVenom\u003E", + "Giulio Pacetti", "josem019", "Magnus Norling Svane", "Miko\u0142aj Rick", "Alex Larbi\u00E8re", "Alexander Gulyuta", "blackjacksike", + "Daniel Heslop", "helabasa", "JeongJinwoo", "Marco Cirelli", @@ -1062,6 +1083,7 @@ "Matteo Pertegato", "Quincy Holzapfel", "Shizome", + "Tim Kuppens", "Troler", "DJOWO", "IchMagSchokolade", @@ -1073,13 +1095,16 @@ "Andr\u00E9 Pousette", "ben001109", "coltonium", + "Ebi Sadeghi", "Elias Branting", + "Lan_feng", + "LordKena", + "Marc Theriault", "Shen Xi", "txs1234", "Tyra Gr\u00FCmpel", "VojtaHumpl", "Casper Sj\u00F6berg", - "Ebi Sadeghi", "Juuso Vahala", "Raphael Franzen", "Ahmet Erim Y\u00FCzba\u015F\u0131gil", @@ -1090,6 +1115,7 @@ "Jessy Amelie Nishimura Lara", "lucio carvalho almeida", "Maxim", + "Meri\u00E7 Sevin\u00E7", "Mieszko Polak", "NiceFlowey", "Patrick Bolde", @@ -1104,15 +1130,17 @@ "Jan Wemmel", "JeffVanelle", "Johnn Doe", + "Leon Takahashi", "\u0141ukasz Wydra", "Martin Matul\u00EDk", "Misco Jhones", "Peter Gervai", "Phillip Ganzow", + "RolandAckerl", "RyZa", "tomato747", - "Zero Cool", "Enzo Delaye", + "GalaxyDragon", "Giacomo Volta", "intothi", "Jung SungWon", @@ -1122,8 +1150,7 @@ "Pedro Alexande Sim\u00F5es Gomes", "Rodrigo Tavares", "RotzRoffl", - "Sergey", - "Sora", + "sadenar", "Steven N\u00F6renberg", "Szymon Ignaczak", "Timoth\u00E9e Gazeau", @@ -1132,6 +1159,7 @@ ], "Patrons": { "VIPPatrons": [ + "24Percent", "Aidan Collins", "Anatoliy Zhurilo", "Antonio", @@ -1139,108 +1167,100 @@ "Doomlightning", "Dylan bumgardner", "E V", - "EagleSoldier", "Emily Wideman", - "Grape", + "Glow Dragon", + "Hannes Bonet", "invalidVulture", "Johnny Nunez", "Josh Nygaard", "Kevin McGinn", "Lordiii", - "Luzurper", "Michael Dillinger", "Oliver Lugg", "Pasi Hyyryl\u00E4inen", "Pirate Speedboost", "Rastro", "Rikard Neckarski", - "Rubarb600", "Shroomski", "terrasnover", "thommy", "toss boy", "Toxic Panther", - "Varaldar", "Vhensakien Reineo", "Wolfgang Hutton" ], "DevBuildPatrons": [ "Aazon", - "Aleix", - "Alex Ruiz", "Anthony Popa", "Arbinator", "Arthur B", "Atmos Quake", "Axium", - "Beastboy812", "Ben Cundick", "Ben Wilmer", + "Benure Carmin", "BreadStick_23", "Chaotic_Stupid", "Chiori", "Christian Rankin", "ColdGuy", "Colt_44_magnum", - "Corvus", - "Cowit", "CyrusPlayz", "Daniel Pleske", - "Daniel Sanche", "Daniel Selig", "Doot Yourself", - "doritito", "Emery Gregurich", "Emil Mannby", "Evan", "Evan Giotis", - "Flora Oliveira", + "Falcon", "fraang", - "Gal Mashiach", "George Anderson", + "Gerg\u0151 Moln\u00E1r", "Hannah Hendrikx", - "HyperionSkunk", + "Hinterland Seer", "Insane Fox", "Izu", - "Jacob Broida", "Jason", "John Ivar Flatmo", "Joseph Marin", - "Joshua Walker", "Jr Stivers", "Kaleb Todd", - "Kavokan", "Kcrazy", "Kitrana", - "Leam_m", "LeandroLuiz2210", + "Liam Colbert", "liam lindeen", - "Mansfield Sharpe", + "Luzurper", + "Lynksy Lyon", + "Maksym Zholobak", "Martin Hassel\u00F8", "Mathijs Van Dijck", "Matthew Redden", "McGoose", "Michael Tedeschi", "minimumviablegame", - "Mouthwash", "Nathaniel Dovin Smith", "Nathaniel Ingram", "Neon", - "Niklas Jonsson", + "NightshadeVampire", + "NNAC", "No thanks", "Olorotitan Lambeosaurini", + "One2nice", + "pain_in_the_bex", "ParrotGryphon", - "Pen Vandiver", "Pipe", "Poskmyst ?", "Radbeh yousefi", "Roel Smith", + "Russel J. Robinson", "scungoid", "SDM", "ShadowStorm", "silentium_noxe", "Sp00kyrex", - "Tobias Threlfall-Holmes", + "SpaceE P_e", "Ultrax", "Violet Rose Hill", "WorldChampion", @@ -1248,54 +1268,55 @@ "Yannik Hesse" ], "SupporterPatrons": [ + "Adam Jenkins", "Adam Smith", "Adrian Dalen", "Aiden John Napier", + "Alex Ruiz", "Alex Saalberg", "andrew james morris", "AquartistJames", "arkevolvedserver", "Aurelijus M", "Avalance", + "BeeMorpho", "Billy Rock Mitchell", "Branting", "Bryce Tippe", "Chad Tester", "Chiara", - "clypeus productions", "D Stephen McIntyre", "Dan Cohen", "danbirdy", "Daniel Mills", - "Double", - "drishta", + "Eduardo Luz", + "edward hannigan", "Elias Blank", "Eugene Socha", "Evan T. Smith", - "Frankie", "Friedrich", "Futur Planet", "Gaboris", "Gnowos", "Gravy", - "Guillermo Lozano", "Ian Fischnaller", "Inconspicuous old man and mime", - "Jacob Evans-Mcbride", + "Jailor", "JAN Sandwich", + "Jasmin Sartison", "Jirzetta", "John Michael Gacek", "JustAnotherBeing", - "kayzayai", "Kerbalmaster", - "KPsyChoPath", "Kyle Eric Duran", "Lukas Kubicek .", "Manuel Hubl", "Marvin", "Michael Foley", "Mikael", + "mkaic", "Mo Ro", + "Moss", "nathan tucker", "Nick Shupe", "Niles Rogoff", @@ -1303,23 +1324,22 @@ "Perasha", "Radovan Zapletal", "RadRadishRadiator", - "RubenS", "Sarah derp", "Schmidtstone", "Shiuzan", - "Snoogie", "SteveJobless", + "Strafe", "T3chKn1ght", - "thatguyoverthere", "TheAGN", "TheRoeler", - "turoni", "Ula247", "\u00D9w\u00DA_JKLsansUndertale", + "Varaldar", "Vengarth", "Victor", "William Cedervall", - "xal1977" + "xal1977", + "Yanik" ] } } diff --git a/simulation_parameters/common/patch_notes.yml b/simulation_parameters/common/patch_notes.yml index 7a3b2d7e638..50d19a76565 100644 --- a/simulation_parameters/common/patch_notes.yml +++ b/simulation_parameters/common/patch_notes.yml @@ -165,3 +165,86 @@ - Updated a code checking library we use - Added support for Godot GUI tab names to be translated - Updated translations + +0.6.4: + IntroductionText: | + This release focused on the massive refactoring of the gameplay code to an ECS architecture and a different physics engine. That took up the vast majority of the time, and there's still probably new bugs caused by those changes in this release. Still some potential performance improvements couldn't be finished in time, but will be looked at in the future to hopefully get even a bit more performance than these good performance gains. There were a few new features developed by contributors for this release. + ReleaseLink: https://github.com/Revolutionary-Games/Thrive/releases/tag/v0.6.4 + PatchNotes: + - Refactored the entire microbe gameplay code to use an Entity Component System (ECS) architecture and a different physics engine (Jolt). This took up the vast majority of the time spent on this release. As a result of this many things in the game will feel slightly different and there will definitely be new bugs that have slipped past us. We will attempt to quickly fix any new bugs introduced with this change. + - The game performance is now 20-100% better than before thanks to the ECS and physics rework (different benchmark parts have different improvements, and different gameplay conditions also have different performance gains) + - Improved auto-evo performance by about 50% + - Added a native C++ library for Thrive that has the physics engine integration for now but we can in the future move computation heavy parts of the game there that might benefit performance + - Added two new context specific microbe tracks that can play instead of the normal microbe ambiance when in those specific patch types + - Added Thriveopedia pages for each of the organelles currently in the game + - "Fixed 2 very often reported multicellular crashes: InvalidOperationException: Sequence contains no matching element and ArgumentException: OrganelleTemplate can't be placed at this location" + - When low performance is detected in the menu the game will now prompt the player to disable the 3D menu backgrounds + - Improved the visuals of the organism statistics panel and added / updated related tooltip icons as well + - Chemoreceptor can now be upgraded to detect cells of a certain species + - Added vacuole upgrade to specialize it for a certain compound. Specialized vacuole stores double the normal amount of the specialized compound but provides no storage for other compounds. + - The pilus now applies damage based on the physics penetration amount instead of always a fixed value. Faster collisions result now in more physical damage. + - The pilus can now be upgraded to an injectisome to switch the damage to be toxic (instead of physical) and also to apply the full damage no matter how light the hit is + - Microbes now use the physics engine to turn which should result in reduced rotation related bugs or slight issues + - Microbe physics shapes are now a single convex body which performs better and it much more closely matches the visual size of the membrane + - Microbe colony physics shape is now a single combined body. This should fix rare bugs with pili detaching or toxins hitting self when firing them. + - Multicellular colonies now use absolute positioning of members set by the editor. This isn't perfect (leaves gaps) but the problem with cells growing at the wrong positions randomly should be gone now. + - Membrane data generation now happens in a background thread to reduce stuttering happening while cells spawn + - Added a tutorial for negative ATP balance + - The AI will now most of the time not try to engulf something it cannot digest + - The AI will now remember what it was doing before a save thanks to the component data being easier to load fully intact + - Added 3D panorama backgrounds for various patch types for the late multicellular underwater part. These were completed a while ago but were never accessible in game until now. + - There's now a basic page name search in the Thriveopedia + - Improved initial compound handling for multicellular colonies + - There's now a tutorial for the become multicellular button as many players seemed to not realize it was a button + - Duplicating a cell type now selects it in the early multicellular editor + - Becoming multicellular now has a timeline entry for permanent record when it happened + - Added early multicellular freebuild mode + - Organelle chunks that are dropped now stop playing animations (for example flagellum swim animation) + - Fixed the most often reported crash, which was likely due to Godot integration with Bullet physics, by switching physics engines + - Fixed subshape out of range errors from physics also thanks to entirely redoing the gameplay physics + - Fixed the osmoregulation editor tooltips not updating based on the difficulty and current membrane + - Fixed the AI shooting too early at a target it wasn't pointing at yet due to rotation no longer being almost instant + - Fixed bug with glucose reduction showing up sometimes as NaN + - Fixed the global timeline not showing populations correctly + - Fixed a bug with incorrect resulting MP in early multicellular from incorrectly calculated actions on separate cell types + - Fixed saving bug with ObjectDisposedException with HostileEngulfer + - Fixed an exploit with deleting and duplicating cell types giving infinite MP + - Fixed a crash when double clicking on organelle move + - Fixed organelle popup menu not being tall enough with certain languages selected + - Fixed symmetry trying to place multiple unique organelles + - Fixed a crash when loading a save while load was already in progress (the new load is now prevented until the previous save/load operation completes) + - Fixed the auto-evo exploring tool map not panning to show the selected patch initially + - Fixed keyboard navigation in input options + - Added one more fix (the 4th) now against accidental cannibalism (when turning multicellular) + - Added multithreading to microbe growth, made easier thanks to the ECS architecture + - Improved externally positioned organelles to use much less CPU time + - Various disposed object exceptions should no longer be possible to happen with the gameplay no longer using Godot Nodes to implement it + - Player cell related change callbacks now use invoke to trigger to reduce the chance of a rare bug triggering with them + - Failure to delete a save should now give a popup warning about the error + - Art gallery slideshow now works for models as well as images + - Added a new separate icon for oxytoxisome to no longer use the toxin vacuole icon + - Added a new icon for osmoregulation + - Photostudio is now slightly faster at creating images of cells + - Switched the early multicellular editor to use images of cells instead of cell objects for showing the body plan. This improves the performance a ton when there were large body plans being edited. + - Tweaked the colour of the editor confirm button warning badge to make it more consistent with the other GUI + - Fixed some situations where the editor confirm button warning got stuck on + - Added new cheat in the microbe cheat menu to control the current time of day + - Improved the handling of creating organelle upgrade actions / changes in the editor + - The GUI no longer grabs focus during intro video to reduce chance of accidentally interacting with the menu while the video is playing + - Fixed art gallery filter categories not reacting to language change + - Species colour not applying to all organelles problem should now be fixed due to the component architecture where all organelles should read the consistent colour values that are copied + - Organelle graphics are now slightly more colourful and pop out against the membrane more + - Some microbe colony related corner cases are no longer relevant, but there's undoubtedly new bugs still left to fix with the newly redone system + - "Steam: fixed username display not reacting to language change" + - "Steam: fixed bug with displaying library licenses" + - Split microbe HUD to its own scene to have better organization of the microbe stage + - Moved enzyme descriptions to our JSON files to no longer have hardcoded descriptions in the code per enzyme type + - Improved internal organelle position code to use read only data references when the data should not be modified. Same improvement was also made to some simulation parmeters data that was also returned as modifiable objects. + - Git submodule info (current commits) is now included when packaging the game + - Created a system to distribute precompiled native libraries for Thrive to more easily setup the new version for partial development + - Updated code checking tools version + - Updated YamlDotNet from 13.1.1 to 13.7.1 + - Updated Microsoft.CodeAnalysis.CSharp from 4.6.0 to 4.7.0 + - Updated AngleSharp from 1.0.6 to 1.0.7 + - "Added new languages: Bengalian, Belarussian, and Macedonian" + - Updated translations diff --git a/simulation_parameters/common/translations_info.json b/simulation_parameters/common/translations_info.json index b685475dda9..c00442ae721 100644 --- a/simulation_parameters/common/translations_info.json +++ b/simulation_parameters/common/translations_info.json @@ -1,54 +1,54 @@ { "TranslationProgress": { - "af": 0.005910800644814616, - "ar": 0.022568511552928532, - "be": 0.0053734551316496505, - "bg": 0.7495969908651263, - "bn": 0.016657710908113917, - "ca": 0.6217087587318646, - "cs": 0.6931757119828049, - "da": 0.0032240730789897904, - "de": 0.7254164427727029, - "el": 0.011284255776464266, + "af": 0.005904455179817499, + "ar": 0.02254428341384863, + "be": 0.005367686527106817, + "bg": 0.748792270531401, + "bn": 0.016639828234031134, + "ca": 0.6210413311862587, + "cs": 0.6924315619967794, + "da": 0.00322061191626409, + "de": 0.7246376811594203, + "el": 0.011272141706924315, "en": 1, - "eo": 0.24717893605588392, - "es": 0.7173562600752283, - "es_AR": 0.13917248790972594, - "et": 0.5249865663621709, - "fi": 0.46534121440085974, - "fr": 0.7850617947340139, + "eo": 0.24691358024691357, + "es": 0.71658615136876, + "es_AR": 0.13902308105206657, + "et": 0.524422973698336, + "fi": 0.46537842190016104, + "fr": 0.784219001610306, "frm": 0, - "he": 0.6835034927458356, - "hr": 0.027941966684578184, - "hu": 0.5464803868887694, - "id": 0.3922622246104245, - "it": 0.647501343363783, + "he": 0.6827697262479872, + "hr": 0.027911969940955447, + "hu": 0.5458937198067633, + "id": 0.39184111647879766, + "it": 0.6505636070853462, "ka": 0, - "ko": 0.28855454056958624, - "la": 0.03277807630306287, + "ko": 0.2882447665056361, + "la": 0.03274288781535158, "lb_LU": 0, - "lt": 0.19881783987103707, - "lv": 0.2477162815690489, - "mk": 0.010746910263299301, - "nb_NO": 0.039763567974207416, - "nl": 0.8527673293927995, - "nl_BE": 0.45943041375604515, - "pl": 0.7345513164965073, - "pt_BR": 0.7748522299838796, - "pt_PT": 0.5110155830198818, - "ro": 0.02095647501343364, - "ru": 0.908651262761956, - "si_LK": 0.0032240730789897904, - "sk": 0.4572810317033853, - "sr_Cyrl": 0.2262224610424503, - "sr_Latn": 0.17141321869962386, - "sv": 0.3981730252552391, - "th_TH": 0.2015045674368619, - "tok": 0.02955400322407308, - "tr": 0.8860827512090274, - "uk": 0.8495432563138098, + "lt": 0.19860440150295222, + "lv": 0.24745034889962425, + "mk": 0.010735373054213635, + "nb_NO": 0.03972088030059045, + "nl": 0.8518518518518519, + "nl_BE": 0.45893719806763283, + "pl": 0.7337627482555019, + "pt_BR": 0.8255501878690285, + "pt_PT": 0.5104669887278583, + "ro": 0.020933977455716585, + "ru": 0.9076757917337628, + "si_LK": 0.00322061191626409, + "sk": 0.4567901234567901, + "sr_Cyrl": 0.225979602791197, + "sr_Latn": 0.17122920021470747, + "sv": 0.3977455716586151, + "th_TH": 0.20128824476650564, + "tok": 0.029522275899087493, + "tr": 0.9044551798174987, + "uk": 0.8556092324208266, "vi": 0, - "zh_CN": 0.8801719505642128, - "zh_TW": 0.6550241805480924 + "zh_CN": 0.8792270531400966, + "zh_TW": 1 } } diff --git a/src/engine/SettingValue.cs b/src/engine/SettingValue.cs index 33eb5318a72..e4ffd673195 100644 --- a/src/engine/SettingValue.cs +++ b/src/engine/SettingValue.cs @@ -110,7 +110,13 @@ public bool Equals(SettingValue obj) if (value is not string && value is IEnumerable genericEnumerable) { var enumerator1 = genericEnumerable.GetEnumerator(); + + // Not disposing the enumerators gives a warning. So this is now done like this to dispose the enumerators + // if they are disposable. + using var dispose1 = enumerator1 as IDisposable; + var enumerator2 = ((IEnumerable)obj.Value!).GetEnumerator(); + using var dispose2 = enumerator2 as IDisposable; while (enumerator1.MoveNext()) { diff --git a/src/general/base_stage/HexEditorComponentBase.cs b/src/general/base_stage/HexEditorComponentBase.cs index d2de438dedf..49985e24971 100644 --- a/src/general/base_stage/HexEditorComponentBase.cs +++ b/src/general/base_stage/HexEditorComponentBase.cs @@ -7,10 +7,9 @@ /// /// Editor component that specializes in hex-based stuff editing /// -public abstract class - HexEditorComponentBase : - EditorComponentWithActionsBase, - ISaveLoadedTracked, IChildPropertiesLoadCallback +public abstract class HexEditorComponentBase : + EditorComponentWithActionsBase, + ISaveLoadedTracked, IChildPropertiesLoadCallback where TEditor : class, IHexEditor, IEditorWithActions where TCombinedAction : CombinedEditorAction where TAction : EditorAction