-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Labels
Description
Hello guys
I found a weird code in RelativeSkeletalPositionSensor.cpp
//code
void URelativeSkeletalPositionSensor::TickSensorComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) {
float* FloatBuffer = static_cast<float*>(Buffer);
for (int i = 0; i < Bones.Num(); i++) {
FQuat BoneQ = SkeletalMeshComponent->GetBoneQuaternion(Bones[i], EBoneSpaces::WorldSpace);
FQuat ParentQ = SkeletalMeshComponent->GetBoneQuaternion(ParentBones[i], EBoneSpaces::WorldSpace);
FQuat Quat = ParentQ.Inverse() * BoneQ;
FloatBuffer[4 * i] = Quat.X;
FloatBuffer[4 * i + 1] = Quat.Y;
FloatBuffer[4 * i + 2] = Quat.Z;
FloatBuffer[4 * i + 3] = Quat.W;
}
}
int URelativeSkeletalPositionSensor::GetNumItems() {
return this->Bones.Num();
}
at the code, TickSensorComponent()
~
FloatBuffer[4 * i] = Quat.X;
FloatBuffer[4 * i + 1] = Quat.Y;
FloatBuffer[4 * i + 2] = Quat.Z;
FloatBuffer[4 * i + 3] = Quat.W;
~
they are accessing array index up to BoneNum*4,
but in the code, GetNumItems()
it just returns Bone.Num().
Shouldn't this code be changed like this?
int URelativeSkeletalPositionSensor::GetNumItems() {
return this->Bones.Num() * 4;
}