feat: add decoded members for IPlacedComponent#191
Conversation
poirierlouis
commented
Nov 21, 2025
- types and offsets of lastPosition/position is sure but names is a best guess effort
- ChildBinding might contain Handle and/or WeakHandle, needs runtime check
- DynArray fits the memory but this might actually be a fixed-size array, needs runtime check
- types and offsets of lastPosition/position is sure but names is a best guess effort - ChildBinding might contain Handle and/or WeakHandle, needs runtime check - DynArray<ChildBinding> fits the memory but this might actually be a fixed-size array, needs runtime check
| WorldTransform localTransform; // C0 | ||
| WorldTransform worldTransform; // E0 | ||
| uint8_t unkE0[0x120 - 0x100]; // 100 | ||
| Vector4 lastPosition; // 100 |
There was a problem hiding this comment.
What would lastPosition mean in this context? Can the component move itself?
There was a problem hiding this comment.
position should be equal to worldTransform, but with different precision due to float / FixedPoint conversion.
lastPosition seems to be a tick/frame in the past regarding position.
There was a problem hiding this comment.
Just my though: currentPosition / previousPosition seems more understandable then position / lastPosition
There was a problem hiding this comment.
Thanks, I wasn't sure about the naming. I'll change it when I'll have another go with RedMemoryDump to record "frames" at a faster tick rate and confirm handle type.
There was a problem hiding this comment.
It seems odd that position is stored twice. For non moving, non animated entity the transform and both positions are always the same?
There was a problem hiding this comment.
Hum, I'll check those.
But Vector4 values clearly shows valid coordinates and seems a tick behind.
There was a problem hiding this comment.
IIRC working on RHT, I've seen a lot of zeroes there for visual components. Which component type are you testing right now?
There was a problem hiding this comment.
TransformComponent from a gamePuppet.
There was a problem hiding this comment.
I checked the constructor of IPlacedComponent (hash 3069184773).
It contains:
[this + 0x100] = 7F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF
[this + 0x110] = FF7FFFFFFF7FFFFFFF7FFFFFFF7FFFFF
So it gives us:
Vector4 previousPosition = Vector4(NaN, NaN, NaN, NaN);
Vector4 currentPosition = Vector4(NaN, NaN, NaN, NaN);