Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
jhett12321 committed Dec 8, 2023
2 parents 46e5424 + f2bf18e commit 7eab864
Show file tree
Hide file tree
Showing 114 changed files with 1,759 additions and 528 deletions.
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1 +1 @@
NWNX_VERSION=b419e42
NWNX_VERSION=51162c5
91 changes: 91 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,97 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## 8193.35.2
https://github.com/nwn-dotnet/Anvil/compare/v8193.35.1...v8193.35.2

### Added
- Effect: Added `AreaOfEffect` overload with `PersistentVfxTableEntry` support.
- Effect: Added `Polymorph` overload with `PolymorphTableEntry` support.
- Location: Added `TileInfo` property.
- Events: Added `OnDispelMagicApply` event.
- NuiDrawList: Added `NuiDrawListItemType.Line` support.
- NuiDrawList: Added support for item order and render options.
- NuiDrawList: Added `ImageRegion` property.
- NuiImage: Added `ImageRegion` property.
- NuiImage: Added `WordWrap` property.
- Nui: Added `NuiToggles` widget.
- NuiElement: Added `DisabledTooltip`, `Encouraged` properties.
- NuiWindow: Added `AcceptsInput` property.
- CreatureLevelInfo: Added `AbilityGained` property.
- NwArea: Added `TileInfo` property.
- NwCreature: Added `RemainingSkillPoints` property.
- NwCreature: Added `BroadcastSkillRoll` method.
- NwCreature: Added `CalculateAbilityModifierFromScore` method.
- NwCreature: Added `GetArmorClassVersus` method.
- NwCreature: Added parameter to `RemoveFeat` to optionally remove the feat from the level stat list (for ELC).
- NwItem: Extended `AddItemProperty` to support additional behaviours for managing existing item properties.
- NwItem: Added `CompareItem` method.
- NwItem: Added `HasItemProperty` method.
- NwItem: Added `RemoveItemProperties` method.
- NwModule: Added `RefreshClientObjects` method.
- NwPlayer: Added `RefreshClientObject` method.
- NwPlayer: Added `RefreshPlayerClientObject` method.
- NwServer: Added `DebugMode`, `DebugCombat`, `DebugSaveThrows`, `DebugHitDie`, `DebugMoveSpeed` properties.
- NwGameTables: Added `PlaceableTypeTable`
- NwGameTables: Added `PolymorphTable`
- NwGameTables: Added `PortraitTable`
- NwGameTables: Added `PersistentEffectTable`
- PluginManager: Added support for specifying additional plugin directories with a new environment variable, `ADD_PLUGIN_PATHS`
- UnobservedTaskExceptionLogger: Added new service for logging and handling uncaught `async Task` exceptions.

### Package Updates
- NWNX: b419e42 -> 51162c5
- NWN.Core: 8193.35.6 -> 8193.35.21
- NWN.Native: 8193.34.6 -> 8193.35.9
- NLog: 5.1.4 -> 5.2.5

### Changed
- Effect: `Tag` property is now correctly marked as nullable.
- ItemProperty: `Tag` property is now correctly marked as nullable.
- OnClientConnect: `PlayerName`, `CDKey` properties are no longer nullable.
- CreatureLevelInfo: `Feats` property is now a mutable list.
- EncounterListEntry: `CreatureResRef` is now correctly marked as nullable.
- NwCreature: `DialogResRef` is now correctly marked as nullable.
- NwCreature: `TalentBest`, `TalentRandom` now returns the correct talent class type.
- NwDoor: `DialogResRef` is now correctly marked as nullable.
- NwGameObject: `PortraitId` now uses the 2da PortraitTableEntry type.
- NwPlaceable: `DialogResRef` is now correctly marked as nullable.
- NwBaseItem: `DefaultIcon` is now correctly marked as nullable.
- NwBaseItem: `DefaultModel` is now correctly marked as nullable.
- NwClass: `IconResRef`, `SpellTableColumn` properties are now correctly marked as nullable.
- NwClass: `PreReqTable` is now a nullable reference to a TwoDimArray wrapper of the associated class prereq table.
- NwDomain: `Icon` is now correctly marked as nullable.
- NwFeat: `IconResRef` is now correctly marked as nullable.
- NwRace: `DefaultCharacterDescription`, `Description`, `Name`, `PluralName` properties are now correctly marked as nullable.
- NwSkill: `IconResRef` is now correctly marked as nullable.
- NwSpell: `CastGroundVisual`, `CastHandVisual`, `CastHeadVisual`, `CastSound`, `ConjureGroundVisual`, `ConjureHandVisual`, `ConjureHeadVisual`, `ConjureSound`, `IconResRef`, `ImpactScript`, `ProjectileModel`, `ProjectileSound` properties are now correctly marked as nullable.
- NativeObjectExtensions: Moved to `Anvil.Native` to prevent missing method errors when using other extension overloads, and made public again.
- ArrayWrapper: Added additional error checking.
- EnforceLegalCharacterService: Added 8 multiclass support.
- ServerLogRedirectorService: Don't log empty or null messages.
- ScriptDispatchService: Remove redundant try/catch, optimization.
- AnvilCore: Merged `VirtualMachineFunctionHandler` into AnvilCore.
- AnvilCore: Use better performant unmanaged function pointers for handling low level events from NWNX.
- AnvilCore: Implement custom crash handler with managed stacktrace.

### Deprecated
- `IPRacialType` - use `NwRace` instead.
- `HitEffect.SlayRace` - use `NwRace` overload instead.
- `ItemProperty.ACBonusVsRace` - use `NwRace` overload instead.
- `ItemProperty.AttackBonusVsRace` - use `NwRace` overload instead.
- `ItemProperty.DamageBonusVsRace` - use `NwRace` overload instead.
- `ItemProperty.EnhancementBonusVsRace` - use `NwRace` overload instead.
- `ItemProperty.LimitUseByRace` - use `NwRace` overload instead.
- `DamageData` properties - use GetDamageByType, SetDamageByType instead.

### Fixed
- EventService: Built-in game events subscribed in anvil will now preserve the event script identifier when calling the original script.
- ItemAppearance: Now correctly supports the extended appearance types added in 8193.35.
- NwArea: `GetTileInfo` now correctly returns the correct tile when specifying a tile coordinate.
- NwCreature: Fixed `ActionUseFeat` subFeat parameter not working.
- EnforceLegalCharacterService: Fixed an erroneous calculation when calculating ability scores with a level stat bonus.
- WeaponService: Fixed a rare server crash when calculating levels for a specific class.

## 8193.35.1
https://github.com/nwn-dotnet/Anvil/compare/v8193.35.0...v8193.35.1

Expand Down
6 changes: 3 additions & 3 deletions NWN.Anvil.TestRunner/NWN.Anvil.TestRunner.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.6.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="all" />
</ItemGroup>
Expand All @@ -69,8 +69,8 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="NWN.Core" Version="8193.35.6" PrivateAssets="compile" />
<PackageReference Include="NWN.Native" Version="8193.35.6" PrivateAssets="compile" />
<PackageReference Include="NWN.Core" Version="8193.35.21" PrivateAssets="compile" />
<PackageReference Include="NWN.Native" Version="8193.35.9" PrivateAssets="compile" />
</ItemGroup>

<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions NWN.Anvil.Tests/NWN.Anvil.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="NWN.Core" Version="8193.35.6" PrivateAssets="compile" />
<PackageReference Include="NWN.Native" Version="8193.35.6" PrivateAssets="compile" />
<PackageReference Include="NWN.Core" Version="8193.35.21" PrivateAssets="compile" />
<PackageReference Include="NWN.Native" Version="8193.35.9" PrivateAssets="compile" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Anvil.API;
using Anvil.Native;
using NUnit.Framework;
using NWN.Native.API;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Anvil.API;
using Anvil.Native;
using NUnit.Framework;
using NWN.Native.API;
using ItemProperty = Anvil.API.ItemProperty;
Expand Down
12 changes: 6 additions & 6 deletions NWN.Anvil.Tests/src/main/API/Nui/Widgets/NuiDrawListTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public void SerializeNuiDrawListArcReturnsValidJsonStructure()
Enabled = false,
};

Assert.That(JsonUtility.ToJson(drawListArc), Is.EqualTo(@"{""amax"":170.0,""amin"":90.0,""c"":{""x"":1.0,""y"":2.0},""radius"":2.0,""type"":3,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":true,""line_thickness"":1.0}"));
Assert.That(JsonUtility.ToJson(drawListArc), Is.EqualTo(@"{""amax"":170.0,""amin"":90.0,""c"":{""x"":1.0,""y"":2.0},""radius"":2.0,""type"":3,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":true,""line_thickness"":1.0,""order"":1,""render"":0}"));
}

[Test(Description = "Serializing a NuiDrawListCircle creates a valid JSON structure.")]
Expand All @@ -26,7 +26,7 @@ public void SerializeNuiDrawListCircleReturnsValidJsonStructure()
Enabled = false,
};

Assert.That(JsonUtility.ToJson(drawListCircle), Is.EqualTo(@"{""rect"":{""h"":4.0,""w"":3.0,""x"":1.0,""y"":2.0},""type"":2,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":true,""line_thickness"":1.0}"));
Assert.That(JsonUtility.ToJson(drawListCircle), Is.EqualTo(@"{""rect"":{""h"":4.0,""w"":3.0,""x"":1.0,""y"":2.0},""type"":2,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":true,""line_thickness"":1.0,""order"":1,""render"":0}"));
}

[Test(Description = "Serializing a NuiDrawListCurve creates a valid JSON structure.")]
Expand All @@ -37,7 +37,7 @@ public void SerializeNuiDrawListCurveReturnsValidJsonStructure()
Enabled = false,
};

Assert.That(JsonUtility.ToJson(drawListCurve), Is.EqualTo(@"{""ctrl0"":{""x"":9.5,""y"":3.0},""ctrl1"":{""x"":22.0,""y"":11.3},""a"":{""x"":10.0,""y"":5.0},""b"":{""x"":6.0,""y"":2.0},""type"":1,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":false,""line_thickness"":1.0}"));
Assert.That(JsonUtility.ToJson(drawListCurve), Is.EqualTo(@"{""ctrl0"":{""x"":9.5,""y"":3.0},""ctrl1"":{""x"":22.0,""y"":11.3},""a"":{""x"":10.0,""y"":5.0},""b"":{""x"":6.0,""y"":2.0},""type"":1,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":false,""line_thickness"":1.0,""order"":1,""render"":0}"));
}

[Test(Description = "Serializing a NuiDrawListImage creates a valid JSON structure.")]
Expand All @@ -48,7 +48,7 @@ public void SerializeNuiDrawListImageReturnsValidJsonStructure()
Enabled = false,
};

Assert.That(JsonUtility.ToJson(drawListImage), Is.EqualTo(@"{""image_aspect"":3,""image_halign"":1,""rect"":{""h"":4.0,""w"":3.0,""x"":1.0,""y"":2.0},""image"":""test_img"",""type"":5,""image_valign"":1,""color"":null,""enabled"":false,""fill"":null,""line_thickness"":null}"));
Assert.That(JsonUtility.ToJson(drawListImage), Is.EqualTo(@"{""image_aspect"":3,""image_halign"":1,""rect"":{""h"":4.0,""w"":3.0,""x"":1.0,""y"":2.0},""image"":""test_img"",""type"":5,""image_valign"":1,""color"":null,""enabled"":false,""fill"":null,""line_thickness"":null,""order"":1,""render"":0}"));
}

[Test(Description = "Serializing a NuiDrawListPolyLine creates a valid JSON structure.")]
Expand All @@ -59,7 +59,7 @@ public void SerializeNuiDrawListPolyLineReturnsValidJsonStructure()
Enabled = false,
};

Assert.That(JsonUtility.ToJson(drawListPolyLine), Is.EqualTo(@"{""points"":[2.0,4.0,6.0,11.0],""type"":0,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":true,""line_thickness"":2.0}"));
Assert.That(JsonUtility.ToJson(drawListPolyLine), Is.EqualTo(@"{""points"":[2.0,4.0,6.0,11.0],""type"":0,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":true,""line_thickness"":2.0,""order"":1,""render"":0}"));
}

[Test(Description = "Serializing a NuiDrawListText creates a valid JSON structure.")]
Expand All @@ -70,7 +70,7 @@ public void SerializeNuiDrawListTextReturnsValidJsonStructure()
Enabled = false,
};

Assert.That(JsonUtility.ToJson(drawListText), Is.EqualTo(@"{""rect"":{""h"":8.0,""w"":7.0,""x"":5.0,""y"":6.0},""text"":""Test string"",""type"":4,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":null,""line_thickness"":null}"));
Assert.That(JsonUtility.ToJson(drawListText), Is.EqualTo(@"{""rect"":{""h"":8.0,""w"":7.0,""x"":5.0,""y"":6.0},""text"":""Test string"",""type"":4,""color"":{""a"":255,""b"":170,""g"":170,""r"":255},""enabled"":false,""fill"":null,""line_thickness"":null,""order"":1,""render"":0}"));
}
}
}
58 changes: 58 additions & 0 deletions NWN.Anvil.Tests/src/main/API/Objects/NwItemTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,64 @@ public void CloneItemWithoutTagOriginalTagIsCopied(string itemResRef)
Assert.That(clone.Tag, Is.EqualTo(item.Tag), "Cloned item's tag did not match the original item's.");
}

[Test(Description = "Serializing an item's appearance preserves the item appearance data.")]
[TestCase(StandardResRef.Item.nw_cloth027)]
[TestCase(StandardResRef.Item.x2_it_adaplate)]
[TestCase(StandardResRef.Item.x0_maarcl037)]
[TestCase(StandardResRef.Item.x0_armhe014)]
[TestCase(StandardResRef.Item.nw_it_crewps019)]
[TestCase(StandardResRef.Item.nw_crewphdfcl)]
[TestCase(StandardResRef.Item.x1_it_mbook001)]
[TestCase(StandardResRef.Item.x2_it_mbelt001)]
[TestCase(StandardResRef.Item.nw_it_mboots002)]
[TestCase(StandardResRef.Item.nw_it_mbracer002)]
[TestCase(StandardResRef.Item.x0_maarcl039)]
[TestCase(StandardResRef.Item.x1_it_mglove001)]
[TestCase(StandardResRef.Item.x2_it_cmat_adam)]
[TestCase(StandardResRef.Item.x2_it_dyec00)]
[TestCase(StandardResRef.Item.x2_it_amt_feath)]
[TestCase(StandardResRef.Item.nw_it_gem013)]
[TestCase(StandardResRef.Item.x2_is_drose)]
[TestCase(StandardResRef.Item.nw_it_mneck032)]
[TestCase(StandardResRef.Item.nw_it_mring025)]
[TestCase(StandardResRef.Item.x2_it_trap001)]
[TestCase(StandardResRef.Item.nw_it_medkit003)]
[TestCase(StandardResRef.Item.x0_it_mmedmisc03)]
[TestCase(StandardResRef.Item.x0_it_mthnmisc11)]
[TestCase(StandardResRef.Item.nw_it_mpotion003)]
[TestCase(StandardResRef.Item.x2_it_spdvscr103)]
[TestCase(StandardResRef.Item.nw_hen_bod3qt)]
[TestCase(StandardResRef.Item.nw_wammar002)]
[TestCase(StandardResRef.Item.nw_wammbo001)]
[TestCase(StandardResRef.Item.nw_wammbu008)]
[TestCase(StandardResRef.Item.nw_waxmgr009)]
[TestCase(StandardResRef.Item.nw_wswmbs004)]
[TestCase(StandardResRef.Item.nw_wswmdg004)]
[TestCase(StandardResRef.Item.nw_wmgwn011)]
[TestCase(StandardResRef.Item.nw_wbwmsh005)]
[TestCase(StandardResRef.Item.x1_wmgrenade005)]
[TestCase(StandardResRef.Item.nw_wthmsh003)]
public void SerializeItemAppearancePreservesAppearance(string itemResRef)
{
Location startLocation = NwModule.Instance.StartingLocation;
NwItem? item = NwItem.Create(itemResRef, startLocation);

Assert.That(item, Is.Not.Null, $"Item {itemResRef} was null after creation.");
Assert.That(item!.IsValid, Is.True, $"Item {itemResRef} was invalid after creation.");

createdTestObjects.Add(item);

string appearance = item.Appearance.Serialize();

Assert.That(appearance.Length == 328, "Serialized length does not match expected value of 328.");

ushort model = item.Appearance.GetSimpleModel();

item.Appearance.Deserialize(appearance);

Assert.That(item.Appearance.GetSimpleModel(), Is.EqualTo(model));
}

[TearDown]
public void CleanupTestObjects()
{
Expand Down
24 changes: 10 additions & 14 deletions NWN.Anvil.Tests/src/main/API/TwoDimArray/TwoDimArrayTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System;
using System.Collections.Generic;
using Anvil.API;
using Anvil.Services;
Expand Down Expand Up @@ -30,7 +29,7 @@ 1 Test1 ""Test 1"" 0x1 1.0f
ResourceManager.WriteTempResource(resourceName, StringHelper.Encoding.GetBytes(twoDimArray));
createdTempResources.Add(resourceName);

TwoDimArray array = NwGameTables.GetTable(resourceName);
TwoDimArray array = NwGameTables.GetTable(resourceName)!;

Assert.That(array.RowCount, Is.EqualTo(3));
Assert.That(array.ColumnCount, Is.EqualTo(4));
Expand All @@ -50,44 +49,41 @@ 1 Test1 ""Test 1"" 0x1 1.0f
[Test(Description = "An invalid 2da ResRef throws an exception.")]
public void Invalid2daThrowsException()
{
Assert.That(() =>
{
TwoDimArray _ = NwGameTables.GetTable("invalidtest");
}, Throws.Exception.TypeOf<ArgumentException>());
Assert.That(NwGameTables.GetTable("invalidtest"), Is.Null);
}

[Test(Description = "2da arrays are equal if they reference the same pointer.")]
public void Same2daIsConsideredEqual()
{
TwoDimArray array1 = NwGameTables.GetTable("appearance.2da");
TwoDimArray array2 = NwGameTables.GetTable("appearance.2da");
TwoDimArray? array1 = NwGameTables.GetTable("appearance.2da");
TwoDimArray? array2 = NwGameTables.GetTable("appearance.2da");

Assert.That(array1, Is.EqualTo(array2));
}

[Test(Description = "2da arrays are equal if they reference the same pointer.")]
public void Same2daGenericIsConsideredEqual()
{
TwoDimArray<AppearanceTableEntry> array1 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");
TwoDimArray<AppearanceTableEntry> array2 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");
TwoDimArray<AppearanceTableEntry>? array1 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");
TwoDimArray<AppearanceTableEntry>? array2 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");

Assert.That(array1, Is.EqualTo(array2));
}

[Test(Description = "2da arrays are equal if they reference the same pointer.")]
public void Same2daMixedIsConsideredEqual()
{
TwoDimArray array1 = NwGameTables.GetTable("appearance.2da");
TwoDimArray<AppearanceTableEntry> array2 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");
TwoDimArray? array1 = NwGameTables.GetTable("appearance.2da");
TwoDimArray<AppearanceTableEntry>? array2 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");

Assert.That(array1, Is.EqualTo(array2));
}

[Test(Description = "2da arrays are not equal if they do not reference the same pointer.")]
public void Different2daAreNotConsideredEqual()
{
TwoDimArray array1 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");
TwoDimArray array2 = NwGameTables.GetTable<EnvironmentPreset>("environment.2da");
TwoDimArray? array1 = NwGameTables.GetTable<AppearanceTableEntry>("appearance.2da");
TwoDimArray? array2 = NwGameTables.GetTable<EnvironmentPreset>("environment.2da");

Assert.That(array1, Is.Not.EqualTo(array2));
}
Expand Down
6 changes: 3 additions & 3 deletions NWN.Anvil/NWN.Anvil.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@
<ItemGroup>
<PackageReference Include="LightInject" Version="6.6.4" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.1.4" />
<PackageReference Include="NLog" Version="5.2.5" />
<PackageReference Include="Paket.Core" Version="7.2.1" PrivateAssets="all" />
<PackageReference Include="NWN.Core" Version="8193.35.6" PrivateAssets="compile" />
<PackageReference Include="NWN.Native" Version="8193.35.6" PrivateAssets="compile" />
<PackageReference Include="NWN.Core" Version="8193.35.21" PrivateAssets="compile" />
<PackageReference Include="NWN.Native" Version="8193.35.9" PrivateAssets="compile" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="all" />
</ItemGroup>

Expand Down
1 change: 1 addition & 0 deletions NWN.Anvil/NWN.Anvil.csproj.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Capi_005Cvariable_005Cinternal/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Capi_005Cvariable_005Cobjectstorage/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Capi_005Cvariable_005Cobjectstorage_005Cpersistent/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Cnative_005Cextensions/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Cnative_005Cfunctions/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Cplugins_005Cpaket/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=src_005Cmain_005Cservices_005Capi/@EntryIndexedValue">True</s:Boolean>
Expand Down
Loading

0 comments on commit 7eab864

Please sign in to comment.