diff --git a/.editorconfig b/.editorconfig
index 84110c55d..40d18e834 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,6 +1,223 @@
-[*.cs]
+root = true
-# CA1712: Do not prefix enum values with type name
-dotnet_diagnostic.CA1712.severity = none
+[*]
+charset = utf-8
+indent_style = space
-vc_generate_documentation_comments = xml
\ No newline at end of file
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+indent_size = 2
+
+[*.yml]
+indent_size = 2
+
+[*.cs]
+# Newline options
+csharp_new_line_before_open_brace = all
+csharp_new_line_before_else = true
+csharp_new_line_before_catch = true
+csharp_new_line_before_finally = true
+csharp_new_line_before_members_in_object_initializers = true
+csharp_new_line_before_members_in_anonymous_types = true
+csharp_new_line_between_query_expression_clauses = true
+
+# Indentation options
+csharp_indent_case_contents = true
+csharp_indent_switch_labels = true
+csharp_indent_labels = one_less_than_current
+csharp_indent_block_contents = true
+csharp_indent_braces = false
+csharp_indent_case_contents_when_block = false
+
+# Organize using directives
+dotnet_sort_system_directives_first = true
+dotnet_separate_import_directive_groups = false
+
+# Code block preferences
+csharp_prefer_braces = true:suggestion
+
+# Modifier preferences
+csharp_preferred_modifier_order = public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:suggestion
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
+dotnet_style_readonly_field = true:suggestion
+
+# Implicit and explicit types
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+csharp_style_var_elsewhere = true:suggestion
+
+# Language keywords instead of framework type names for type references
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+
+# Unnecessary code rules
+dotnet_code_quality_unused_parameters = all:suggestion
+
+# This." and "Me." qualifiers
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+
+# Parentheses preferences
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggestion
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggestion
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion
+
+# Expression-bodied members
+csharp_style_expression_bodied_methods = true:suggestion
+csharp_style_expression_bodied_constructors = false:suggestion
+csharp_style_expression_bodied_operators = true:suggestion
+csharp_style_expression_bodied_properties = true:suggestion
+csharp_style_expression_bodied_indexers = true:suggestion
+csharp_style_expression_bodied_accessors = true:suggestion
+csharp_style_expression_bodied_lambdas = true:suggestion
+csharp_style_expression_bodied_local_functions = when_on_single_line:suggestion
+
+# Expression-level preferences
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_auto_properties = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+dotnet_style_prefer_compound_assignment = true:suggestion
+dotnet_style_prefer_simplified_interpolation = true:suggestion
+dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
+csharp_prefer_simple_default_expression = true:suggestion
+csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
+
+# "Null" checking preferences
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+csharp_style_throw_expression = true:suggestion
+csharp_style_conditional_delegate_call = true:suggestion
+
+# Pattern matching
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+
+# Inlined variable declarations
+csharp_style_inlined_variable_declaration = true:suggestion
+
+# Unused value preferences
+csharp_style_unused_value_expression_statement_preference = discard_variable:silent
+csharp_style_unused_value_assignment_preference = discard_variable:silent
+
+# Index and range preferences
+csharp_style_prefer_index_operator = true:suggestion
+csharp_style_prefer_range_operator = true:suggestion
+
+# Miscellaneous preferences
+csharp_style_deconstructed_variable_declaration = true:suggestion
+csharp_style_pattern_local_over_anonymous_function = true:suggestion
+csharp_using_directive_placement = outside_namespace:suggestion
+csharp_prefer_static_local_function = true:suggestion
+csharp_prefer_simple_using_statement = true:suggestion
+csharp_style_prefer_switch_expression = true:suggestion
+csharp_style_prefer_pattern_matching = true:suggestion
+csharp_style_prefer_not_pattern = true:suggestion
+
+# Wrap options
+csharp_preserve_single_line_statements = false
+csharp_preserve_single_line_blocks = true
+
+# Spacing options
+csharp_space_after_cast = false
+csharp_space_after_keywords_in_control_flow_statements = true
+csharp_space_between_parentheses = true
+csharp_space_before_colon_in_inheritance_clause = true
+csharp_space_after_colon_in_inheritance_clause = true
+csharp_space_around_binary_operators = before_and_after
+csharp_space_between_method_declaration_parameter_list_parentheses = false
+csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
+csharp_space_between_method_declaration_name_and_open_parenthesis = false
+csharp_space_between_method_call_parameter_list_parentheses = false
+csharp_space_between_method_call_empty_parameter_list_parentheses = false
+csharp_space_between_method_call_name_and_opening_parenthesis = false
+csharp_space_after_comma = true
+csharp_space_before_comma = false
+csharp_space_after_dot = false
+csharp_space_before_dot = false
+csharp_space_after_semicolon_in_for_statement = true
+csharp_space_before_semicolon_in_for_statement = false
+csharp_space_around_declaration_statements = false
+csharp_space_before_open_square_brackets = false
+csharp_space_between_empty_square_brackets = false
+csharp_space_between_square_brackets = false
+
+# Types should be PascalCase.
+dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.types_should_be_pascal_case.symbols = types
+dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
+
+# Non-field members should be PascalCase.
+dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
+dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
+
+# Interfaces must have "I" prefix.
+dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
+dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
+dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
+
+# Static fields should have s_ prefix.
+dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
+dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
+dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix
+
+# Public fields should be PascalCase.
+dotnet_naming_rule.public_fields_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.public_fields_should_be_camel_case.symbols = public_fields
+dotnet_naming_rule.public_fields_should_be_camel_case.style = pascal_case
+
+# Private, internal and protected fields should be _camelCase.
+dotnet_naming_rule.private_internal_protected_fields_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.private_internal_protected_fields_should_be_camel_case.symbols = private_internal_protected_fields
+dotnet_naming_rule.private_internal_protected_fields_should_be_camel_case.style = camel_case_underscore
+
+# Parameters must be camelCase.
+dotnet_naming_rule.parameters_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.parameters_should_be_camel_case.symbols = parameters
+dotnet_naming_rule.parameters_should_be_camel_case.style = camel_case
+
+# Symbol specifications
+dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
+dotnet_naming_symbols.types.applicable_accessibilities = *
+
+dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
+dotnet_naming_symbols.non_field_members.applicable_accessibilities = *
+
+dotnet_naming_symbols.interface.applicable_kinds = interface
+dotnet_naming_symbols.interface.applicable_accessibilities = *
+
+dotnet_naming_symbols.static_fields.applicable_kinds = field
+dotnet_naming_symbols.static_fields.required_modifiers = static
+dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
+
+dotnet_naming_symbols.public_fields.applicable_kinds = field
+dotnet_naming_symbols.public_fields.applicable_accessibilities = public
+
+dotnet_naming_symbols.private_internal_protected_fields.applicable_kinds = field
+dotnet_naming_symbols.private_internal_protected_fields.applicable_accessibilities = private, internal, protected, private_protected, protected_internal
+
+dotnet_naming_symbols.parameters.applicable_kinds = parameter
+
+# Naming styles
+dotnet_naming_style.camel_case.capitalization = camel_case
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+
+dotnet_naming_style.begins_with_i.required_prefix = I
+dotnet_naming_style.begins_with_i.capitalization = pascal_case
+
+dotnet_naming_style.static_prefix.required_prefix = s_
+dotnet_naming_style.static_prefix.capitalization = camel_case
+
+dotnet_naming_style.camel_case_underscore.required_prefix = _
+dotnet_naming_style.camel_case_underscore.capitalization = camel_case
diff --git a/CR2WTests/CR2WTests.csproj b/CR2WTests/CR2WTests.csproj
index 7c220bab8..3a0171d11 100644
--- a/CR2WTests/CR2WTests.csproj
+++ b/CR2WTests/CR2WTests.csproj
@@ -58,7 +58,6 @@
-
diff --git a/WolvenKit.Render/WolvenKit.Render.csproj b/WolvenKit.Render/WolvenKit.Render.csproj
index fbafac23f..652c82415 100644
--- a/WolvenKit.Render/WolvenKit.Render.csproj
+++ b/WolvenKit.Render/WolvenKit.Render.csproj
@@ -153,7 +153,6 @@
-
diff --git a/WolvenKit.sln b/WolvenKit.sln
index 8e8963965..61308181f 100644
--- a/WolvenKit.sln
+++ b/WolvenKit.sln
@@ -1,12 +1,11 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29509.3
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32210.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit", "WolvenKit\WolvenKit.csproj", "{12FD792B-EC76-4969-8B42-9671025D5108}"
ProjectSection(ProjectDependencies) = postProject
{DCBBE807-CD6E-493E-8C04-DB976A1591EA} = {DCBBE807-CD6E-493E-8C04-DB976A1591EA}
- {8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7} = {8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7}
{9C026DA7-481D-43C6-8C18-635D69FDB423} = {9C026DA7-481D-43C6-8C18-635D69FDB423}
EndProjectSection
EndProject
@@ -20,11 +19,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.W3Speech", "Wolve
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.Save", "WolvenKit.Save\WolvenKit.Save.csproj", "{9C026DA7-481D-43C6-8C18-635D69FDB423}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.Render", "WolvenKit.Render\WolvenKit.Render.csproj", "{8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7}"
- ProjectSection(ProjectDependencies) = postProject
- {4F6EF8E3-F26F-49DB-867D-FD10FB083B0D} = {4F6EF8E3-F26F-49DB-867D-FD10FB083B0D}
- EndProjectSection
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.Scaleform", "WolvenKit.Scaleform\WolvenKit.Scaleform.csproj", "{031DD6DA-B643-4C2A-A30D-A2E2212724C2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.Cache", "WolvenKit.Cache\WolvenKit.Cache.csproj", "{17CF5901-6E1F-467F-AFE0-3CC04DC9688A}"
@@ -58,13 +52,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.Console", "Wolven
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WolvenKit.App", "WolvenKit.App\WolvenKit.App.csproj", "{6C5EE693-7F88-4259-90D5-9B247E61A15A}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IrrlichtLime", "WolvenKit.IrrlichtLime\IrrlichtLime.vcxproj", "{4F6EF8E3-F26F-49DB-867D-FD10FB083B0D}"
- ProjectSection(ProjectDependencies) = postProject
- {DD5C43CB-34A8-409B-9010-5A5A52787552} = {DD5C43CB-34A8-409B-9010-5A5A52787552}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Irrlicht", "WolvenKit.Irrlicht\Irrlicht15.0.vcxproj", "{DD5C43CB-34A8-409B-9010-5A5A52787552}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -95,10 +82,6 @@ Global
{9C026DA7-481D-43C6-8C18-635D69FDB423}.Debug|x64.Build.0 = Debug|Any CPU
{9C026DA7-481D-43C6-8C18-635D69FDB423}.Release|x64.ActiveCfg = Release|x64
{9C026DA7-481D-43C6-8C18-635D69FDB423}.Release|x64.Build.0 = Release|x64
- {8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7}.Debug|x64.Build.0 = Debug|Any CPU
- {8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7}.Release|x64.ActiveCfg = Release|x64
- {8BE56F4F-3B98-4BD8-8052-2B5E630AF3D7}.Release|x64.Build.0 = Release|x64
{031DD6DA-B643-4C2A-A30D-A2E2212724C2}.Debug|x64.ActiveCfg = Debug|Any CPU
{031DD6DA-B643-4C2A-A30D-A2E2212724C2}.Debug|x64.Build.0 = Debug|Any CPU
{031DD6DA-B643-4C2A-A30D-A2E2212724C2}.Release|x64.ActiveCfg = Release|x64
@@ -139,14 +122,6 @@ Global
{6C5EE693-7F88-4259-90D5-9B247E61A15A}.Debug|x64.Build.0 = Debug|Any CPU
{6C5EE693-7F88-4259-90D5-9B247E61A15A}.Release|x64.ActiveCfg = Release|x64
{6C5EE693-7F88-4259-90D5-9B247E61A15A}.Release|x64.Build.0 = Release|x64
- {4F6EF8E3-F26F-49DB-867D-FD10FB083B0D}.Debug|x64.ActiveCfg = Debug|x64
- {4F6EF8E3-F26F-49DB-867D-FD10FB083B0D}.Debug|x64.Build.0 = Debug|x64
- {4F6EF8E3-F26F-49DB-867D-FD10FB083B0D}.Release|x64.ActiveCfg = Release|x64
- {4F6EF8E3-F26F-49DB-867D-FD10FB083B0D}.Release|x64.Build.0 = Release|x64
- {DD5C43CB-34A8-409B-9010-5A5A52787552}.Debug|x64.ActiveCfg = Debug|x64
- {DD5C43CB-34A8-409B-9010-5A5A52787552}.Debug|x64.Build.0 = Debug|x64
- {DD5C43CB-34A8-409B-9010-5A5A52787552}.Release|x64.ActiveCfg = Release|x64
- {DD5C43CB-34A8-409B-9010-5A5A52787552}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/WolvenKit/Forms/MVVM/frmCR2WDocument.cs b/WolvenKit/Forms/MVVM/frmCR2WDocument.cs
index ce3db53fb..9b63f1ca1 100644
--- a/WolvenKit/Forms/MVVM/frmCR2WDocument.cs
+++ b/WolvenKit/Forms/MVVM/frmCR2WDocument.cs
@@ -40,7 +40,9 @@ public partial class frmCR2WDocument : DockContent, IThemedContent, IWolvenkitVi
private frmChunkFlowDiagram flowDiagram;
private frmJournalEditor JournalEditor;
private frmImagePreview ImageViewer;
+#if !USE_RENDER
private Render.frmRender RenderViewer;
+#endif
private CR2WFile File => (CR2WFile)vm.File;
@@ -561,7 +563,7 @@ public void PostLoadFile(string filename = "", bool openrenderer = false)
MockKernel.Get().Window.PauseMonitoring();
WccHelper.AddAllImports(filename, true, false);
MockKernel.Get().Window.ResumeMonitoring();
-
+#if !USE_RENDER
this.RenderViewer = new Render.frmRender
{
LoadDocument = LoadDocumentAndGetFile,
@@ -570,6 +572,7 @@ public void PostLoadFile(string filename = "", bool openrenderer = false)
renderHelper = new Render.RenderHelper(MainController.Get().ActiveMod, MainController.Get().Logger)
};
this.RenderViewer.Show(this.FormPanel, DockState.Document);
+#endif
}
catch (Exception ex)
{
@@ -616,7 +619,7 @@ public void PostLoadFile(string filename = "", bool openrenderer = false)
stopwatch.Stop();
MainController.LogString(output.ToString(), Logtype.Important);
- #endregion
+#endregion
CR2WFile LoadDocumentAndGetFile(string path)
{
diff --git a/WolvenKit/Forms/MVVM/frmMain.cs b/WolvenKit/Forms/MVVM/frmMain.cs
index 157cd09f2..5bff45dea 100644
--- a/WolvenKit/Forms/MVVM/frmMain.cs
+++ b/WolvenKit/Forms/MVVM/frmMain.cs
@@ -1,4 +1,4 @@
-using AutoUpdaterDotNET;
+using AutoUpdaterDotNET;
using Dfust.Hotkeys;
using Microsoft.VisualBasic.FileIO;
using SharpPresence;
@@ -38,7 +38,9 @@ namespace WolvenKit
using Extensions;
using Forms;
using Microsoft.WindowsAPICodePack.Dialogs;
+#if !USE_RENDER
using Render;
+#endif
using Scaleform;
using System.Globalization;
using WolvenKit.CR2W.Reflection;
@@ -49,7 +51,7 @@ public partial class frmMain : Form
{
private const string BaseTitle = "Wolven kit";
- #region Fields
+#region Fields
private readonly MainViewModel vm;
private frmProgress ProgressForm { get; set; }
@@ -69,9 +71,9 @@ public partial class frmMain : Form
private WolvenKit.Common.Services.LoggerService Logger { get; set; }
private static string Version => FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;
- #endregion
+#endregion
- #region Properties
+#region Properties
private W3Mod ActiveMod
{
get => MainController.Get().ActiveMod;
@@ -82,9 +84,9 @@ private W3Mod ActiveMod
}
}
- #endregion
+#endregion
- #region Constructor
+#region Constructor
public frmMain()
{
vm = MockKernel.Get().GetMainViewModel();
@@ -131,9 +133,9 @@ public frmMain()
this.toolStripDropDownButtonGit.Paint += toolStripDropDownButtonGit_Paint;
}
- #endregion
+#endregion
- #region Methods
+#region Methods
///
/// Opens a document in the background
///
@@ -295,7 +297,7 @@ public void OpenMod(string file = "")
}
var old = XDocument.Load(file);
- #region Upgrade from w3edit
+#region Upgrade from w3edit
try
{
if (old.Descendants("InstallAsDLC").Any())
@@ -343,7 +345,7 @@ public void OpenMod(string file = "")
{
MessageBox.Show("Failed to upgrade the project!\n" + ex, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
- #endregion
+#endregion
@@ -363,7 +365,7 @@ public void OpenMod(string file = "")
Logger.LogString("\"" + ActiveMod.Name + "\" loaded successfully!\n", Common.Services.Logtype.Success);
MainController.Get().ProjectStatus = EProjectStatus.Ready;
- #region upgrade from older mod projects
+#region upgrade from older mod projects
if (!old.Descendants("Version").Any() || (old.Descendants("Version").Any()
&& int.TryParse(old.Descendants("Version").First().Value, out int version)
&& version < 0.62))
@@ -400,7 +402,7 @@ public void OpenMod(string file = "")
}
- #endregion
+#endregion
// Hash all filepaths
var relativepaths = ActiveMod.ModFiles
@@ -447,9 +449,9 @@ void MoveFiles(EBundleType oldtype, EProjectFolders newtype, bool isDlc = false)
}
}
}
- #endregion
+#endregion
- #region UI Methods
+#region UI Methods
public DockPanel GetDockPanel() => dockPanel;
///
/// Closes all the "file documents", resets modexplorer and clears the output.
@@ -596,7 +598,7 @@ private void ApplyCustomTheme()
}
}
- #region UI formborderstyle none
+#region UI formborderstyle none
private const long WS_SYSMENU = 0x00080000L;
private const long WS_BORDER = 0x00800000L;
@@ -786,10 +788,10 @@ private void UpdateTitle()
}
}
- #endregion
- #endregion
+#endregion
+#endregion
- #region BackGroundWorker
+#region BackGroundWorker
Func