Skip to content

Commit 9cf5ccd

Browse files
committed
get rid of the euler angles component #1
1 parent ec3d4ed commit 9cf5ccd

5 files changed

Lines changed: 72 additions & 152 deletions

File tree

source/Components/Anchor.cs

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ public struct Anchor : IEquatable<Anchor>
2121
public static readonly Anchor Right = new(new(1f, false), new(0.5f, false), new(0f, false), new(1f, false), new(0.5f, false), new(0f, false));
2222
public static readonly Anchor Default = default;
2323

24-
public value minX;
25-
public value minY;
26-
public value minZ;
27-
public value maxX;
28-
public value maxY;
29-
public value maxZ;
24+
public Number minX;
25+
public Number minY;
26+
public Number minZ;
27+
public Number maxX;
28+
public Number maxY;
29+
public Number maxZ;
3030

3131
#if NET
3232
/// <summary>
@@ -43,7 +43,7 @@ public Anchor()
4343
}
4444
#endif
4545

46-
public Anchor(value minX, value minY, value minZ, value maxX, value maxY, value maxZ)
46+
public Anchor(Number minX, Number minY, Number minZ, Number maxX, Number maxY, Number maxZ)
4747
{
4848
this.minX = minX;
4949
this.minY = minY;
@@ -78,15 +78,15 @@ public readonly override int GetHashCode()
7878
return !(left == right);
7979
}
8080

81-
public struct value : IEquatable<value>
81+
public struct Number : IEquatable<Number>
8282
{
8383
public const int NumberRange = 65536;
8484
public const int MaxNumberValue = 32768;
8585
public const float Precision = 0.00003051757f;
8686

8787
private int data;
8888

89-
public bool Absolute
89+
public bool IsAbsolute
9090
{
9191
readonly get
9292
{
@@ -106,7 +106,7 @@ readonly get
106106
}
107107
}
108108

109-
public float Number
109+
public float Value
110110
{
111111
readonly get
112112
{
@@ -116,7 +116,7 @@ readonly get
116116
}
117117
set
118118
{
119-
bool absolute = Absolute;
119+
bool absolute = IsAbsolute;
120120
int valueInt = (int)(value * NumberRange) >> 1;
121121
data = valueInt;
122122
if (absolute)
@@ -130,12 +130,12 @@ readonly get
130130
}
131131
}
132132

133-
public value(float number, bool fromEdge)
133+
public Number(float value, bool absolute)
134134
{
135-
ThrowIfOutOfRange(number);
135+
ThrowIfOutOfRange(value);
136136

137-
data = (int)(number * NumberRange) >> 1;
138-
if (fromEdge)
137+
data = (int)(value * NumberRange) >> 1;
138+
if (absolute)
139139
{
140140
data &= ~1;
141141
}
@@ -145,7 +145,7 @@ public value(float number, bool fromEdge)
145145
}
146146
}
147147

148-
public value(ReadOnlySpan<char> text)
148+
public Number(ReadOnlySpan<char> text)
149149
{
150150
bool negative = false;
151151
int index = 0;
@@ -199,14 +199,22 @@ public value(ReadOnlySpan<char> text)
199199
number = -number;
200200
}
201201

202-
Absolute = absolute;
203202
if (absolute)
204203
{
205-
Number = number;
204+
data &= ~1;
205+
}
206+
else
207+
{
208+
data |= 1;
209+
}
210+
211+
if (absolute)
212+
{
213+
Value = number;
206214
}
207215
else
208216
{
209-
Number = number / 100f;
217+
Value = number / 100f;
210218
}
211219
}
212220

@@ -219,8 +227,8 @@ public readonly override string ToString()
219227

220228
public readonly int ToString(Span<char> destination)
221229
{
222-
bool isRelative = Absolute;
223-
float number = Number;
230+
bool isRelative = IsAbsolute;
231+
float number = Value;
224232
int length = 0;
225233
if (isRelative)
226234
{
@@ -241,10 +249,10 @@ public readonly int ToString(Span<char> destination)
241249

242250
public readonly override bool Equals(object? obj)
243251
{
244-
return obj is value value && Equals(value);
252+
return obj is Number value && Equals(value);
245253
}
246254

247-
public readonly bool Equals(value other)
255+
public readonly bool Equals(Number other)
248256
{
249257
return data == other.data;
250258
}
@@ -254,27 +262,27 @@ public readonly override int GetHashCode()
254262
return data.GetHashCode();
255263
}
256264

257-
public static bool operator ==(value left, value right)
265+
public static bool operator ==(Number left, Number right)
258266
{
259267
return left.Equals(right);
260268
}
261269

262-
public static bool operator !=(value left, value right)
270+
public static bool operator !=(Number left, Number right)
263271
{
264272
return !(left == right);
265273
}
266274

267-
public static implicit operator float(value value)
275+
public static implicit operator float(Number value)
268276
{
269-
return value.Number;
277+
return value.Value;
270278
}
271279

272-
public static implicit operator value(ReadOnlySpan<char> text)
280+
public static implicit operator Number(ReadOnlySpan<char> text)
273281
{
274282
return new(text);
275283
}
276284

277-
public static implicit operator value(string text)
285+
public static implicit operator Number(string text)
278286
{
279287
return new(text.AsSpan());
280288
}

source/Components/EulerAngles.cs

Lines changed: 0 additions & 67 deletions
This file was deleted.

source/Transform.cs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,9 @@ public readonly ref Quaternion LocalRotation
4343
}
4444
}
4545

46-
public readonly ref Vector3 EulerAngles
47-
{
48-
get
49-
{
50-
ref EulerAngles component = ref TryGetComponent<EulerAngles>(out bool contains);
51-
if (!contains)
52-
{
53-
component = ref AddComponent<EulerAngles>();
54-
component = Components.EulerAngles.Default;
55-
}
56-
57-
return ref component.value;
58-
}
59-
}
60-
46+
/// <summary>
47+
/// The anchor of this entity relative to the parent entity.
48+
/// </summary>
6149
public readonly ref Anchor Anchor
6250
{
6351
get
@@ -73,6 +61,9 @@ public readonly ref Anchor Anchor
7361
}
7462
}
7563

64+
/// <summary>
65+
/// The pivot of this entity relative to the parent entity.
66+
/// </summary>
7667
public readonly ref Pivot Pivot
7768
{
7869
get

tests/AnchorTypeTests.cs

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,56 +8,56 @@ public class AnchorTypeTests
88
[Test]
99
public void CheckAnchorDataType()
1010
{
11-
Anchor.value left = new(0.92123f, true);
12-
Assert.That(left.Absolute, Is.True);
13-
Assert.That(left.Number, Is.EqualTo(0.92123f).Within(0.1f));
11+
Anchor.Number left = new(0.92123f, true);
12+
Assert.That(left.IsAbsolute, Is.True);
13+
Assert.That(left.Value, Is.EqualTo(0.92123f).Within(0.1f));
1414

15-
Anchor.value right = new(456f, false);
16-
Assert.That(right.Absolute, Is.False);
17-
Assert.That(right.Number, Is.EqualTo(456f).Within(0.1f));
15+
Anchor.Number right = new(456f, false);
16+
Assert.That(right.IsAbsolute, Is.False);
17+
Assert.That(right.Value, Is.EqualTo(456f).Within(0.1f));
1818

1919
Assert.That(left, Is.Not.EqualTo(right));
20-
Anchor.value up = new(0.5f, true);
20+
Anchor.Number up = new(0.5f, true);
2121
Assert.That(up, Is.Not.EqualTo(left));
22-
Assert.That(up.Absolute, Is.True);
23-
Assert.That(up.Number, Is.EqualTo(0.5f).Within(0.1f));
22+
Assert.That(up.IsAbsolute, Is.True);
23+
Assert.That(up.Value, Is.EqualTo(0.5f).Within(0.1f));
2424

25-
Anchor.value down = new(-3.1412f, false);
25+
Anchor.Number down = new(-3.1412f, false);
2626
Assert.That(down, Is.Not.EqualTo(right));
27-
Assert.That(down.Absolute, Is.False);
28-
Assert.That(down.Number, Is.EqualTo(-3.1412f).Within(0.1f));
27+
Assert.That(down.IsAbsolute, Is.False);
28+
Assert.That(down.Value, Is.EqualTo(-3.1412f).Within(0.1f));
2929

3030
using RandomGenerator rng = new();
3131
for (uint i = 0; i < 1024; i++)
3232
{
3333
float number = rng.NextFloat(-1000f, 1000f);
3434
bool isNormalized = rng.NextBool();
35-
Anchor.value value = new(number, isNormalized);
36-
value.Number *= 2;
37-
value.Absolute = !value.Absolute;
38-
Assert.That(value.Number, Is.EqualTo(number * 2).Within(0.1f));
39-
Assert.That(value.Absolute, Is.EqualTo(!isNormalized));
35+
Anchor.Number value = new(number, isNormalized);
36+
value.Value *= 2;
37+
value.IsAbsolute = !value.IsAbsolute;
38+
Assert.That(value.Value, Is.EqualTo(number * 2).Within(0.1f));
39+
Assert.That(value.IsAbsolute, Is.EqualTo(!isNormalized));
4040
}
4141
}
4242

4343
[Test]
4444
public void BuildAnchorValuesFromText()
4545
{
46-
Anchor.value a = "0.5f";
47-
Assert.That(a.Number, Is.EqualTo(0.5f).Within(0.001f));
48-
Assert.That(a.Absolute, Is.True);
46+
Anchor.Number a = "0.5f";
47+
Assert.That(a.Value, Is.EqualTo(0.5f).Within(0.001f));
48+
Assert.That(a.IsAbsolute, Is.True);
4949

50-
Anchor.value b = "50%";
51-
Assert.That(b.Number, Is.EqualTo(0.5f).Within(0.001f));
52-
Assert.That(b.Absolute, Is.False);
50+
Anchor.Number b = "50%";
51+
Assert.That(b.Value, Is.EqualTo(0.5f).Within(0.001f));
52+
Assert.That(b.IsAbsolute, Is.False);
5353

54-
Anchor.value c = "-25%";
55-
Assert.That(c.Number, Is.EqualTo(-0.25f).Within(0.001f));
56-
Assert.That(c.Absolute, Is.False);
54+
Anchor.Number c = "-25%";
55+
Assert.That(c.Value, Is.EqualTo(-0.25f).Within(0.001f));
56+
Assert.That(c.IsAbsolute, Is.False);
5757

58-
Anchor.value d = "0";
59-
Assert.That(d.Number, Is.EqualTo(0f).Within(0.001f));
60-
Assert.That(d.Absolute, Is.True);
58+
Anchor.Number d = "0";
59+
Assert.That(d.Value, Is.EqualTo(0f).Within(0.001f));
60+
Assert.That(d.IsAbsolute, Is.True);
6161
}
6262
}
6363
}

tests/LocalToWorldTests.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -158,17 +158,5 @@ public void LocalPositionFromWorld()
158158
Assert.That(desiredLocalPosition.Y, Is.EqualTo(-0.6666f).Within(0.1f));
159159
Assert.That(desiredLocalPosition.Z, Is.EqualTo(-1f).Within(0.1f));
160160
}
161-
162-
[Test]
163-
public void ConvertEulerToRotation()
164-
{
165-
EulerAngles euler = EulerAngles.CreateFromDegrees(0f, 90f, 0f);
166-
Quaternion a = Quaternion.CreateFromYawPitchRoll(euler.value.Y, euler.value.X, euler.value.Z);
167-
Quaternion b = euler.AsQuaternion();
168-
Assert.That(a.X, Is.EqualTo(b.X).Within(0.001f));
169-
Assert.That(a.Y, Is.EqualTo(b.Y).Within(0.001f));
170-
Assert.That(a.Z, Is.EqualTo(b.Z).Within(0.001f));
171-
Assert.That(a.W, Is.EqualTo(b.W).Within(0.001f));
172-
}
173161
}
174162
}

0 commit comments

Comments
 (0)