Zak did you discussed other collision shapes and what is discussion result? Will it be added in short time, maybe next beta release?
Also, i have additional look when i suddenly found in one of udn answers that UE4 API with some code classes uploaded on FTP.
So, my new ideas are next: (will use Rama write style )
1. The best and the simplest way for all developers
Epic games add blueprintable function SetShape(shape), where shape is box, cylinder, sphere, pyramid maybe. And movement will use shape and extent. (also with rotation)
2. Also it is extend of 1. - CapsuleComponentName
Just to override CapsuleComponentName with UShapeComponent with shape you wish like:
PCIP.SetDefaultSubobjectClass(ACharacter::CapsuleComponentName
3. set UpdatedComponent
CharacterMovement->UpdatedComponent = CollisionBox;
or
CharacterMovement->SetUpdatedComponent(CollisionBox);
where CollisionBox is UShapeComponent subclass.
For now if you will try to set UpdatedComponent you will get:
[ ]LogCharacterMovement:Error: CharMoveComp owned by Default__SM_Enemy_Vehicle must update a capsule component
because:
void UCharacterMovementComponent::SetUpdatedComponent(UPrimitiveComponent* NewUpdatedComponent)
{
.......
// check that UpdatedComponent is a Capsule
if (Cast(NewUpdatedComponent) == NULL)
{
UE_LOG(LogCharacterMovement, Error, TEXT("%s owned by %s must update a capsule component"), *GetName(), *GetNameSafe(NewUpdatedComponent->GetOwner()));
return;
}
4. Try to write Custom movement component
Custom movement component sublcassed from UCharacterMovementComponent with other SetUpdatedComponent() or maybe some other functions which are virtual
But i do not know yet which functions needs to be changed.
I have overrided
SetUpdatedComponent()
and it still returns me capsule component after i set other my own.