Skip to content

Commit 741f9aa

Browse files
authored
Pulling some additional fixes from 10310 for 2.8 (#10588)
* Create .editorconfig * Remove alloc * foreach can alloc * Add Conditional("UNITY_EDITOR") to editor debug utilities * Use ENABLE_WINMD_SUPPORT * Iterating a dictionary's values allocs... * Use yield return instead of allocating a new list every call * Cache the if statement end result
1 parent ce987fe commit 741f9aa

File tree

8 files changed

+248
-38
lines changed

8 files changed

+248
-38
lines changed

.editorconfig

Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
# Remove the line below if you want to inherit .editorconfig settings from higher directories
2+
root = true
3+
4+
# C# files
5+
[*.cs]
6+
7+
#### Core EditorConfig Options ####
8+
9+
# Indentation and spacing
10+
indent_size = 4
11+
indent_style = space
12+
tab_width = 4
13+
trim_trailing_whitespace = true
14+
15+
# New line preferences
16+
insert_final_newline = true
17+
18+
#### .NET Coding Conventions ####
19+
20+
# Organize usings
21+
dotnet_separate_import_directive_groups = false
22+
dotnet_sort_system_directives_first = false
23+
file_header_template = unset
24+
25+
# this. and Me. preferences
26+
dotnet_style_qualification_for_event = false:silent
27+
dotnet_style_qualification_for_field = false:silent
28+
dotnet_style_qualification_for_method = false:silent
29+
dotnet_style_qualification_for_property = false:silent
30+
31+
# Language keywords vs BCL types preferences
32+
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
33+
dotnet_style_predefined_type_for_member_access = true:silent
34+
35+
# Parentheses preferences
36+
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
37+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
38+
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
39+
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
40+
41+
# Modifier preferences
42+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
43+
44+
# Expression-level preferences
45+
dotnet_style_coalesce_expression = true:suggestion
46+
dotnet_style_collection_initializer = true:suggestion
47+
dotnet_style_explicit_tuple_names = true:suggestion
48+
dotnet_style_null_propagation = true:suggestion
49+
dotnet_style_object_initializer = true:suggestion
50+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
51+
dotnet_style_prefer_auto_properties = true:silent
52+
dotnet_style_prefer_compound_assignment = true:suggestion
53+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
54+
dotnet_style_prefer_conditional_expression_over_return = true:silent
55+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
56+
dotnet_style_prefer_inferred_tuple_names = true:suggestion
57+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
58+
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
59+
dotnet_style_prefer_simplified_interpolation = true:suggestion
60+
61+
# Field preferences
62+
dotnet_style_readonly_field = true:suggestion
63+
64+
# Parameter preferences
65+
dotnet_code_quality_unused_parameters = all:suggestion
66+
67+
# Suppression preferences
68+
dotnet_remove_unnecessary_suppression_exclusions = none
69+
70+
#### C# Coding Conventions ####
71+
72+
# var preferences
73+
csharp_style_var_elsewhere = false:silent
74+
csharp_style_var_for_built_in_types = false:silent
75+
csharp_style_var_when_type_is_apparent = false:silent
76+
77+
# Expression-bodied members
78+
csharp_style_expression_bodied_accessors = true:silent
79+
csharp_style_expression_bodied_constructors = false:silent
80+
csharp_style_expression_bodied_indexers = true:silent
81+
csharp_style_expression_bodied_lambdas = true:silent
82+
csharp_style_expression_bodied_local_functions = false:silent
83+
csharp_style_expression_bodied_methods = false:silent
84+
csharp_style_expression_bodied_operators = false:silent
85+
csharp_style_expression_bodied_properties = true:silent
86+
87+
# Pattern matching preferences
88+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
89+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
90+
csharp_style_prefer_not_pattern = true:suggestion
91+
csharp_style_prefer_pattern_matching = true:silent
92+
csharp_style_prefer_switch_expression = true:suggestion
93+
94+
# Null-checking preferences
95+
csharp_style_conditional_delegate_call = true:suggestion
96+
97+
# Modifier preferences
98+
csharp_prefer_static_local_function = true:suggestion
99+
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent
100+
101+
# Code-block preferences
102+
csharp_prefer_braces = true:silent
103+
csharp_prefer_simple_using_statement = true:suggestion
104+
105+
# Expression-level preferences
106+
csharp_prefer_simple_default_expression = true:suggestion
107+
csharp_style_deconstructed_variable_declaration = true:suggestion
108+
csharp_style_inlined_variable_declaration = true:suggestion
109+
csharp_style_pattern_local_over_anonymous_function = true:suggestion
110+
csharp_style_prefer_index_operator = true:suggestion
111+
csharp_style_prefer_range_operator = true:suggestion
112+
csharp_style_throw_expression = true:suggestion
113+
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
114+
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
115+
116+
# 'using' directive preferences
117+
csharp_using_directive_placement = inside_namespace:silent
118+
119+
#### C# Formatting Rules ####
120+
121+
# New line preferences
122+
csharp_new_line_before_catch = true
123+
csharp_new_line_before_else = true
124+
csharp_new_line_before_finally = true
125+
csharp_new_line_before_members_in_anonymous_types = true
126+
csharp_new_line_before_members_in_object_initializers = true
127+
csharp_new_line_before_open_brace = all
128+
csharp_new_line_between_query_expression_clauses = true
129+
130+
# Indentation preferences
131+
csharp_indent_block_contents = true
132+
csharp_indent_braces = false
133+
csharp_indent_case_contents = true
134+
csharp_indent_case_contents_when_block = true
135+
csharp_indent_labels = one_less_than_current
136+
csharp_indent_switch_labels = true
137+
138+
# Space preferences
139+
csharp_space_after_cast = false
140+
csharp_space_after_colon_in_inheritance_clause = true
141+
csharp_space_after_comma = true
142+
csharp_space_after_dot = false
143+
csharp_space_after_keywords_in_control_flow_statements = true
144+
csharp_space_after_semicolon_in_for_statement = true
145+
csharp_space_around_binary_operators = before_and_after
146+
csharp_space_around_declaration_statements = false
147+
csharp_space_before_colon_in_inheritance_clause = true
148+
csharp_space_before_comma = false
149+
csharp_space_before_dot = false
150+
csharp_space_before_open_square_brackets = false
151+
csharp_space_before_semicolon_in_for_statement = false
152+
csharp_space_between_empty_square_brackets = false
153+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
154+
csharp_space_between_method_call_name_and_opening_parenthesis = false
155+
csharp_space_between_method_call_parameter_list_parentheses = false
156+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
157+
csharp_space_between_method_declaration_name_and_open_parenthesis = false
158+
csharp_space_between_method_declaration_parameter_list_parentheses = false
159+
csharp_space_between_parentheses = false
160+
csharp_space_between_square_brackets = false
161+
162+
# Wrapping preferences
163+
csharp_preserve_single_line_blocks = true
164+
csharp_preserve_single_line_statements = true
165+
166+
#### Naming styles ####
167+
168+
# Naming rules
169+
170+
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
171+
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
172+
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
173+
174+
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
175+
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
176+
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
177+
178+
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
179+
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
180+
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
181+
182+
# Symbol specifications
183+
184+
dotnet_naming_symbols.interface.applicable_kinds = interface
185+
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
186+
dotnet_naming_symbols.interface.required_modifiers =
187+
188+
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
189+
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
190+
dotnet_naming_symbols.types.required_modifiers =
191+
192+
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
193+
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
194+
dotnet_naming_symbols.non_field_members.required_modifiers =
195+
196+
# Naming styles
197+
198+
dotnet_naming_style.pascal_case.required_prefix =
199+
dotnet_naming_style.pascal_case.required_suffix =
200+
dotnet_naming_style.pascal_case.word_separator =
201+
dotnet_naming_style.pascal_case.capitalization = pascal_case
202+
203+
dotnet_naming_style.begins_with_i.required_prefix = I
204+
dotnet_naming_style.begins_with_i.required_suffix =
205+
dotnet_naming_style.begins_with_i.word_separator =
206+
dotnet_naming_style.begins_with_i.capitalization = pascal_case

Assets/MRTK/Core/Attributes/SystemTypeAttribute.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public abstract class SystemTypeAttribute : PropertyAttribute
2828
public bool AllowAbstract { get; protected set; } = false;
2929

3030
/// <summary>
31-
///
31+
/// Constructor.
3232
/// </summary>
3333
/// <param name="type">Initializes a new instance of the <see cref="SystemTypeAttribute"/> class.</param>
3434
/// <param name="grouping">Gets or sets grouping of selectable classes. Defaults to <see cref="Utilities.TypeGrouping.ByNamespaceFlat"/> unless explicitly specified.</param>
@@ -39,7 +39,10 @@ protected SystemTypeAttribute(Type type, TypeGrouping grouping = TypeGrouping.By
3939
#else
4040
bool isValid = type.IsClass || type.IsInterface || type.IsValueType && !type.IsEnum;
4141
#endif // WINDOWS_UWP && !ENABLE_IL2CPP
42-
Debug.Assert(isValid, $"Invalid Type {type} in attribute.");
42+
if (!isValid)
43+
{
44+
Debug.Assert(isValid, $"Invalid Type {type} in attribute.");
45+
}
4346
Grouping = grouping;
4447
}
4548

@@ -60,4 +63,4 @@ public virtual bool IsConstraintSatisfied(Type type)
6063
#endif // WINDOWS_UWP && !ENABLE_IL2CPP
6164
}
6265
}
63-
}
66+
}

Assets/MRTK/Core/Services/BaseEventSystem.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,7 @@ public virtual void HandleEvent<T>(BaseEventData eventData, ExecuteEvents.EventF
9999
}
100100

101101
// Send events to all handlers registered via RegisterHandler API.
102-
List<EventHandlerEntry> handlers;
103-
if (EventHandlersByType.TryGetValue(typeof(T), out handlers))
102+
if (EventHandlersByType.TryGetValue(typeof(T), out List<EventHandlerEntry> handlers))
104103
{
105104
for (int i = handlers.Count - 1; i >= 0; i--)
106105
{
@@ -126,10 +125,19 @@ public virtual void HandleEvent<T>(BaseEventData eventData, ExecuteEvents.EventF
126125

127126
eventExecutionDepth--;
128127

129-
if (eventExecutionDepth == 0 && (postponedActions.Count > 0 || postponedObjectActions.Count > 0))
128+
if (eventExecutionDepth == 0)
130129
{
131-
foreach (var handler in postponedActions)
130+
int postponedActionsCount = postponedActions.Count;
131+
int postponedObjectActionsCount = postponedObjectActions.Count;
132+
133+
if (postponedActionsCount <= 0 && postponedObjectActionsCount <= 0)
134+
{
135+
return;
136+
}
137+
138+
for (int i = 0; i < postponedActionsCount; i++)
132139
{
140+
Tuple<Action, Type, IEventSystemHandler> handler = postponedActions[i];
133141
if (handler.Item1 == Action.Add)
134142
{
135143
AddHandlerToMap(handler.Item2, handler.Item3);
@@ -140,8 +148,9 @@ public virtual void HandleEvent<T>(BaseEventData eventData, ExecuteEvents.EventF
140148
}
141149
}
142150

143-
foreach (var obj in postponedObjectActions)
151+
for (int i = 0; i < postponedObjectActionsCount; i++)
144152
{
153+
Tuple<Action, GameObject> obj = postponedObjectActions[i];
145154
if (obj.Item1 == Action.Add)
146155
{
147156
// Can call it here, because guaranteed that eventExecutionDepth is 0

Assets/MRTK/Core/Utilities/DebugUtilities.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ public static void LogVerboseFormat(string message, params object[] args)
170170
/// <summary>
171171
/// Draws a point in the Scene window.
172172
/// </summary>
173+
[System.Diagnostics.Conditional("UNITY_EDITOR")]
173174
public static void DrawPoint(Vector3 point, Color color, float size = 0.05f)
174175
{
175176
DrawPoint(point, Quaternion.identity, color, size);
@@ -178,6 +179,7 @@ public static void DrawPoint(Vector3 point, Color color, float size = 0.05f)
178179
/// <summary>
179180
/// Draws a point with a rotation in the Scene window.
180181
/// </summary>
182+
[System.Diagnostics.Conditional("UNITY_EDITOR")]
181183
public static void DrawPoint(Vector3 point, Quaternion rotation, Color color, float size = 0.05f)
182184
{
183185
Vector3[] axes = { rotation * Vector3.up, rotation * Vector3.right, rotation * Vector3.forward };
@@ -193,10 +195,11 @@ public static void DrawPoint(Vector3 point, Quaternion rotation, Color color, fl
193195
/// <summary>
194196
/// Draws the minimum and maximum points of the given bounds
195197
/// </summary>
198+
[System.Diagnostics.Conditional("UNITY_EDITOR")]
196199
public static void DrawBounds(Bounds bounds, Color minColor, Color maxColor)
197200
{
198201
DrawPoint(bounds.min, minColor);
199202
DrawPoint(bounds.max, maxColor);
200203
}
201204
}
202-
}
205+
}

Assets/MRTK/Core/Utilities/Gltf/Serialization/GltfUtility.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using System.Threading.Tasks;
1111
using UnityEngine;
1212

13-
#if WINDOWS_UWP
13+
#if ENABLE_WINMD_SUPPORT
1414
using Windows.Storage;
1515
using Windows.Storage.Streams;
1616
#else
@@ -71,7 +71,7 @@ public static async Task<GltfObject> ImportGltfObjectFromPathAsync(string uri)
7171
{
7272
byte[] glbData;
7373

74-
#if WINDOWS_UWP
74+
#if ENABLE_WINMD_SUPPORT
7575
if (useBackgroundThread)
7676
{
7777
try

Assets/MRTK/Examples/Demos/UX/BoundingBox/Scripts/BoundingBoxExampleTest.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using Microsoft.MixedReality.Toolkit.Input;
55
using Microsoft.MixedReality.Toolkit.UI;
6-
using Microsoft.MixedReality.Toolkit.Utilities;
76
using System.Collections;
87
using System.Text;
98
using TMPro;
@@ -224,11 +223,6 @@ private IEnumerator Sequence()
224223

225224
SetStatus("Done!");
226225
}
227-
private void DebugDrawObjectBounds(Bounds bounds)
228-
{
229-
DebugUtilities.DrawPoint(bounds.min, Color.magenta);
230-
DebugUtilities.DrawPoint(bounds.max, Color.yellow);
231-
}
232226

233227
private IEnumerator WaitForSpeechCommand()
234228
{
@@ -247,4 +241,4 @@ public void OnSpeechKeywordRecognized(SpeechEventData eventData)
247241
}
248242
}
249243
}
250-
}
244+
}

Assets/MRTK/Examples/Demos/UX/BoundsControl/Scripts/BoundsControlRuntimeExample.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using Microsoft.MixedReality.Toolkit.UI;
66
using Microsoft.MixedReality.Toolkit.UI.BoundsControl;
77
using Microsoft.MixedReality.Toolkit.UI.BoundsControlTypes;
8-
using Microsoft.MixedReality.Toolkit.Utilities;
98
using System.Collections;
109
using System.Text;
1110
using TMPro;
@@ -227,11 +226,6 @@ private IEnumerator Sequence()
227226

228227
SetStatus("Done!");
229228
}
230-
private void DebugDrawObjectBounds(Bounds bounds)
231-
{
232-
DebugUtilities.DrawPoint(bounds.min, Color.magenta);
233-
DebugUtilities.DrawPoint(bounds.max, Color.yellow);
234-
}
235229

236230
private IEnumerator WaitForSpeechCommand()
237231
{
@@ -250,4 +244,4 @@ public void OnSpeechKeywordRecognized(SpeechEventData eventData)
250244
}
251245
}
252246
}
253-
}
247+
}

0 commit comments

Comments
 (0)