Skip to content

Incorrect size calculation in RelativeSkeletalPositionSensor #402

@insooneelife

Description

@insooneelife

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;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions