MoveComponent ETeleportType

I’m making it so that the player can pick up objects within the scene, and the current way I’ve implemented this is by teleporting the object in front of where the player is looking, however collision with the world becomes irrelevant and you can put objects inside the walls / throw them outside of the scene ( collision with other actors and the player is still generated, just not the “world” ). I’m trying to use MoveComponent instead of just setting the position of the actor, as from what I can gather it takes into account collisions. I cannot find any useful documentation on the required arguments ( mainly the ETeleportType and EMoveComponentFlags ), and it’s really frustrating. I keep finding that everywhere I go there is plenty of documentation for all the blueprint (stuff), but limited documentation for users just using C++.

Any help would be appreciated, thanks in advance.

What exactly do you mean with "collision with other actors and the player is still generated, just not the ‘world’ "? Actors are part of the (game)world?

Other than that I’ve found the source code itself to be the best (and most up-to-date) documentation for C++. It may be a tedious process to find all the relevant pieces but once you do and the more you do it the easier it gets.

The first thing to note here is that most (if not all) Add/Set Location/Rotation/Transform etc. functions use MoveComponent internally (e.g. USceneComponent::SetWorldLocationAndRotation eventually calls USceneComponent::SetRelativeLocationAndRotation which calls MoveComponent which calls MoveComponentImpl which actually implements the movement). Now if you’re moving just plain scene components (or scene components NOT derived from UPrimitiveComponent that don’t override MoveComponentImpl) RelativeLocation/Rotation is computed and assigned, then the ComponentToWorld is updated.
Collision only comes into play with UPrimitiveComponent::MoveComponentImpl and only if bSweep is true. Collision must also be enabled and the distance of the delta must be > 0 (actually it must be > FMath::Square(4.f*KINDA_SMALL_NUMBER)). If the distance is 0 the component will only try to rotate. Once all of these checks have been passed, the component performs a ComponentSweepMulti and then process any hit results.