"Angles struct fields are lowercase"
- Camera or rotation math silently produces wrong values — compiles fine, no error, but the angle is off or zero.
- You grep the codebase for
.Pitch/.Yaw/.Rolland find hits, so you use that casing on yourAnglesvariable — it compiles but gives garbage.
The Angles struct's own fields are lowercase: .pitch, .yaw, .roll. Similarly, Vector3 fields are .x, .y, .z.
Grepping a project for capitalized .Pitch / .Yaw / .Roll returns hits — but those belong to unrelated component properties like CitizenAnimationHelper.Pitch (the animation rig's float properties), not the Angles struct itself. The casing looks plausible, the code compiles (different type, different property), but the value is wrong.
Always use lowercase for struct fields:
Angles angle = new Angles();
angle.pitch = 45f; // correct
angle.yaw = 90f; // correct
angle.roll = 0f; // correct
Vector3 pos = new Vector3();
pos.x = 100f; // correct
pos.y = 200f; // correctConfirm casing against a usage of the SPECIFIC type you're touching, not the first case-matching hit in a repo grep. Engine install references:
Angles: seeaddons/menu/Code/AvatarEditor/AvatarEditManager.Camera.cs—_angle.yaw,_angle.pitch,_angle.rollVector3: see any project's movement code —heading.x,heading.y
This is a silent wrong-value bug, not a compile error — C# resolves the capitalized form against whatever property happens to match on the expression's type context. If you're lucky it fails to compile; if you're unlucky it resolves to a different member (an animation helper's .Pitch vs the struct's .pitch) and the math is just quietly wrong. Confirming against a same-type usage eliminates the ambiguity.