diff --git a/sources/assets/Stride.Core.Assets.CompilerApp/BundlePacker.cs b/sources/assets/Stride.Core.Assets.CompilerApp/BundlePacker.cs index 885a4f7e35..a7d6bd4ea5 100644 --- a/sources/assets/Stride.Core.Assets.CompilerApp/BundlePacker.cs +++ b/sources/assets/Stride.Core.Assets.CompilerApp/BundlePacker.cs @@ -140,8 +140,7 @@ public void Build(Logger logger, PackageSession packageSession, Package rootPack // IndexMap foreach (var asset in dep.DependencyIndexMap.Concat(dep.IndexMap)) { - if (!bundle.DependencyIndexMap.ContainsKey(asset.Key)) - bundle.DependencyIndexMap.Add(asset.Key, asset.Value); + bundle.DependencyIndexMap.TryAdd(asset.Key, asset.Value); } } diff --git a/sources/assets/Stride.Core.Assets.Quantum/AssetQuantumRegistry.cs b/sources/assets/Stride.Core.Assets.Quantum/AssetQuantumRegistry.cs index a420fd4ba8..2e5ce99d4f 100644 --- a/sources/assets/Stride.Core.Assets.Quantum/AssetQuantumRegistry.cs +++ b/sources/assets/Stride.Core.Assets.Quantum/AssetQuantumRegistry.cs @@ -26,10 +26,8 @@ public static void RegisterAssembly(Assembly assembly) if (type.GetConstructor(AssetPropertyNodeGraphConstructorSignature) is null) throw new InvalidOperationException($"The type {type.Name} does not have a public constructor matching the expected signature: ({string.Join(", ", (IEnumerable)AssetPropertyNodeGraphConstructorSignature)})"); - if (NodeGraphTypes.ContainsKey(attribute.AssetType)) + if (!NodeGraphTypes.TryAdd(attribute.AssetType, type)) throw new ArgumentException($"The type {attribute.AssetType.Name} already has an associated property node graph type."); - - NodeGraphTypes.Add(attribute.AssetType, type); } if (typeof(AssetPropertyGraphDefinition).IsAssignableFrom(type)) diff --git a/sources/engine/Stride.Input/InputManager.cs b/sources/engine/Stride.Input/InputManager.cs index b8d1936394..2702b608ca 100644 --- a/sources/engine/Stride.Input/InputManager.cs +++ b/sources/engine/Stride.Input/InputManager.cs @@ -783,11 +783,9 @@ private void InputDevicesOnCollectionChanged(IInputSource source, TrackingCollec private void OnInputDeviceAdded(IInputSource source, IInputDevice device) { devices.Add(device); - if (devicesById.ContainsKey(device.Id)) + if (!devicesById.TryAdd(device.Id, device)) throw new InvalidOperationException($"Device with Id {device.Id}({device.Name}) already registered to {devicesById[device.Id].Name}"); - devicesById.Add(device.Id, device); - if (device is IKeyboardDevice) { RegisterKeyboard((IKeyboardDevice)device); diff --git a/sources/engine/Stride.Input/InputSourceBase.cs b/sources/engine/Stride.Input/InputSourceBase.cs index c7cc35cda9..9c520b3851 100644 --- a/sources/engine/Stride.Input/InputSourceBase.cs +++ b/sources/engine/Stride.Input/InputSourceBase.cs @@ -58,10 +58,8 @@ protected void RegisterDevice(IInputDevice device) /// The device protected void UnregisterDevice(IInputDevice device) { - if (!Devices.ContainsKey(device.Id)) + if (!Devices.Remove(device.Id)) throw new InvalidOperationException($"Input device with Id {device.Id} was not registered"); - - Devices.Remove(device.Id); } } -} \ No newline at end of file +} diff --git a/sources/engine/Stride.Input/KeyboardDeviceBase.cs b/sources/engine/Stride.Input/KeyboardDeviceBase.cs index 82d9701f7f..eb65e8b54d 100644 --- a/sources/engine/Stride.Input/KeyboardDeviceBase.cs +++ b/sources/engine/Stride.Input/KeyboardDeviceBase.cs @@ -88,10 +88,9 @@ public void HandleKeyDown(Keys key) public void HandleKeyUp(Keys key) { // Prevent duplicate up events - if (!KeyRepeats.ContainsKey(key)) + if (!KeyRepeats.Remove(key)) return; - KeyRepeats.Remove(key); downKeys.Remove(key); var keyEvent = InputEventPool.GetOrCreate(this); keyEvent.IsDown = false; @@ -100,4 +99,4 @@ public void HandleKeyUp(Keys key) Events.Add(keyEvent); } } -} \ No newline at end of file +} diff --git a/sources/engine/Stride.SpriteStudio.Offline/SpriteStudioAnimationAssetCompiler.cs b/sources/engine/Stride.SpriteStudio.Offline/SpriteStudioAnimationAssetCompiler.cs index 7c01e38c9d..5b3dd99d59 100644 --- a/sources/engine/Stride.SpriteStudio.Offline/SpriteStudioAnimationAssetCompiler.cs +++ b/sources/engine/Stride.SpriteStudio.Offline/SpriteStudioAnimationAssetCompiler.cs @@ -83,13 +83,13 @@ protected override Task DoCommandOverride(ICommandContext commandC var keyPrefix = $"[SpriteStudioComponent.Key].Nodes[{nodeIndex}]"; - if (data.Data.ContainsKey("POSX")) + if (data.Data.TryGetValue("POSX", out List> posX)) { var posxCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Position)}.{nameof(Vector2.X)}", posxCurve); - posxCurve.InterpolationType = data.Data["POSX"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + posxCurve.InterpolationType = posX.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["POSX"]) + foreach (var nodeData in posX) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = float.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -97,13 +97,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("POSY")) + if (data.Data.TryGetValue("POSY", out List> posY)) { var posyCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Position)}.{nameof(Vector2.Y)}", posyCurve); - posyCurve.InterpolationType = data.Data["POSY"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + posyCurve.InterpolationType = posY.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["POSY"]) + foreach (var nodeData in posY) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = float.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -111,13 +111,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("ROTZ")) + if (data.Data.TryGetValue("ROTZ", out List> rotZ)) { var anglCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.RotationZ)}", anglCurve); - anglCurve.InterpolationType = data.Data["ROTZ"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + anglCurve.InterpolationType = rotZ.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["ROTZ"]) + foreach (var nodeData in rotZ) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = MathUtil.DegreesToRadians(float.Parse(nodeData["value"], CultureInfo.InvariantCulture)); @@ -125,13 +125,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("PRIO")) + if (data.Data.TryGetValue("PRIO", out List> prio)) { var prioCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Priority)}", prioCurve); prioCurve.InterpolationType = AnimationCurveInterpolationType.Constant; - foreach (var nodeData in data.Data["PRIO"]) + foreach (var nodeData in prio) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = int.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -139,13 +139,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("SCLX")) + if (data.Data.TryGetValue("SCLX", out List> sclX)) { var scaxCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Scale)}.{nameof(Vector2.X)}", scaxCurve); - scaxCurve.InterpolationType = data.Data["SCLX"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + scaxCurve.InterpolationType = sclX.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["SCLX"]) + foreach (var nodeData in sclX) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = float.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -153,13 +153,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("SCLY")) + if (data.Data.TryGetValue("SCLY", out List> sclY)) { var scayCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Scale)}.{nameof(Vector2.Y)}", scayCurve); - scayCurve.InterpolationType = data.Data["SCLY"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + scayCurve.InterpolationType = sclY.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["SCLY"]) + foreach (var nodeData in sclY) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = float.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -167,13 +167,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("ALPH")) + if (data.Data.TryGetValue("ALPH", out List> alph)) { var tranCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Transparency)}", tranCurve); - tranCurve.InterpolationType = data.Data["ALPH"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + tranCurve.InterpolationType = alph.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["ALPH"]) + foreach (var nodeData in alph) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = float.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -181,13 +181,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("HIDE")) + if (data.Data.TryGetValue("HIDE", out List> hide)) { var hideCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.Hide)}", hideCurve); hideCurve.InterpolationType = AnimationCurveInterpolationType.Constant; - foreach (var nodeData in data.Data["HIDE"]) + foreach (var nodeData in hide) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = int.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -195,13 +195,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("FLPH")) + if (data.Data.TryGetValue("FLPH", out List> flph)) { var flphCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.HFlipped)}", flphCurve); flphCurve.InterpolationType = AnimationCurveInterpolationType.Constant; - foreach (var nodeData in data.Data["FLPH"]) + foreach (var nodeData in flph) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = int.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -209,13 +209,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("FLPV")) + if (data.Data.TryGetValue("FLPV", out List> flpv)) { var flpvCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.VFlipped)}", flpvCurve); flpvCurve.InterpolationType = AnimationCurveInterpolationType.Constant; - foreach (var nodeData in data.Data["FLPV"]) + foreach (var nodeData in flpv) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = int.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -223,13 +223,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("CELL")) + if (data.Data.TryGetValue("CELL", out List> cell)) { var cellCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.SpriteId)}", cellCurve); cellCurve.InterpolationType = AnimationCurveInterpolationType.Constant; - foreach (var nodeData in data.Data["CELL"]) + foreach (var nodeData in cell) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = int.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -237,13 +237,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("COLV")) + if (data.Data.TryGetValue("COLV", out List> colv)) { var colvCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.BlendColor)}", colvCurve); colvCurve.InterpolationType = AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["COLV"]) + foreach (var nodeData in colv) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var color = new Color4(Color.FromBgra(int.Parse(nodeData["value"], CultureInfo.InvariantCulture))); @@ -252,13 +252,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("COLB")) + if (data.Data.TryGetValue("COLB", out List> colb)) { var colbCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.BlendType)}", colbCurve); colbCurve.InterpolationType = AnimationCurveInterpolationType.Constant; - foreach (var nodeData in data.Data["COLB"]) + foreach (var nodeData in colb) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = int.Parse(nodeData["value"], CultureInfo.InvariantCulture); @@ -266,13 +266,13 @@ protected override Task DoCommandOverride(ICommandContext commandC } } - if (data.Data.ContainsKey("COLF")) + if (data.Data.TryGetValue("COLF", out List> colf)) { var colfCurve = new AnimationCurve(); animation.AddCurve($"{keyPrefix}.{nameof(SpriteStudioNodeState.BlendFactor)}", colfCurve); - colfCurve.InterpolationType = data.Data["COLF"].Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; + colfCurve.InterpolationType = colf.Any(x => x["curve"] != "linear") ? AnimationCurveInterpolationType.Cubic : AnimationCurveInterpolationType.Linear; - foreach (var nodeData in data.Data["COLF"]) + foreach (var nodeData in colf) { var time = CompressedTimeSpan.FromSeconds((1.0 / anim.Fps) * int.Parse(nodeData["time"], CultureInfo.InvariantCulture)); var value = float.Parse(nodeData["value"], CultureInfo.InvariantCulture); diff --git a/sources/engine/Stride.UI/UIElement.Events.cs b/sources/engine/Stride.UI/UIElement.Events.cs index 6a806e6694..fd1172a21b 100644 --- a/sources/engine/Stride.UI/UIElement.Events.cs +++ b/sources/engine/Stride.UI/UIElement.Events.cs @@ -199,10 +199,10 @@ public void AddHandler(RoutedEvent routedEvent, EventHandler handler, b if (routedEvent == null) throw new ArgumentNullException(nameof(routedEvent)); if (handler == null) throw new ArgumentNullException(nameof(handler)); - if (!eventsToHandlers.ContainsKey(routedEvent)) - eventsToHandlers[routedEvent] = new List(); + if (!eventsToHandlers.TryGetValue(routedEvent, out List handlerInfos)) + eventsToHandlers[routedEvent] = handlerInfos = new List(); - eventsToHandlers[routedEvent].Add(new RoutedEventHandlerInfo(handler, handledEventsToo)); + handlerInfos.Add(new RoutedEventHandlerInfo(handler, handledEventsToo)); } /// @@ -216,10 +216,10 @@ public void RemoveHandler(RoutedEvent routedEvent, EventHandler handler if (routedEvent == null) throw new ArgumentNullException(nameof(routedEvent)); if (handler == null) throw new ArgumentNullException(nameof(handler)); - if (!eventsToHandlers.ContainsKey(routedEvent)) + if (!eventsToHandlers.TryGetValue(routedEvent, out List handlerInfos)) return; - eventsToHandlers[routedEvent].Remove(new RoutedEventHandlerInfo(handler)); + handlerInfos.Remove(new RoutedEventHandlerInfo(handler)); } private readonly Dictionary> eventsToHandlers = new Dictionary>(); diff --git a/sources/tools/Stride.Core.ProjectTemplating/ProjectTemplate.cs b/sources/tools/Stride.Core.ProjectTemplating/ProjectTemplate.cs index f78ace272a..0d3e603cb1 100644 --- a/sources/tools/Stride.Core.ProjectTemplating/ProjectTemplate.cs +++ b/sources/tools/Stride.Core.ProjectTemplating/ProjectTemplate.cs @@ -182,9 +182,9 @@ public void Generate(string outputDirectory, string projectName, Guid projectGui object oldPlatform = null; if (fileItem.CurrentPlatform != null) { - if (expandoOptionsAsDictionary.ContainsKey(nameof(fileItem.CurrentPlatform))) + if (expandoOptionsAsDictionary.TryGetValue(nameof(fileItem.CurrentPlatform), out object currentPlatform)) { - oldPlatform = expandoOptionsAsDictionary[nameof(fileItem.CurrentPlatform)]; + oldPlatform = currentPlatform; } expandoOptionsAsDictionary[nameof(fileItem.CurrentPlatform)] = fileItem.CurrentPlatform; } diff --git a/sources/tools/Stride.FreeImage/FreeImageWrapper.cs b/sources/tools/Stride.FreeImage/FreeImageWrapper.cs index 8fdabfd055..bf31937ad8 100644 --- a/sources/tools/Stride.FreeImage/FreeImageWrapper.cs +++ b/sources/tools/Stride.FreeImage/FreeImageWrapper.cs @@ -3827,10 +3827,7 @@ public static bool FindNextMetadata(FIMETADATA mdhandle, out MetadataTag tag) /// The handle to close. public static void FindCloseMetadata(FIMETADATA mdhandle) { - if (metaDataSearchHandler.ContainsKey(mdhandle)) - { - metaDataSearchHandler.Remove(mdhandle); - } + metaDataSearchHandler.Remove(mdhandle); FindCloseMetadata_(mdhandle); }