Haste - Rapid Mesh Placement Mode

Increase your productivty with this new editor mode that lets you place meshes anywhere on the map with a single click. The meshes align with the surface they are placed on, so less time spent on the editor’s gizmo and more time saved

Source Code: GitHub - coderespawn/haste-plugin-ue4

Binaries: Download 1.1.3 (4.15 support, Windows)

If you use the binaries, just create a “Plugins” folder in your game’s root directory and drop in the Haste folder from the downloaded archive

Video of Haste in action
https://youtube.com/watch?v=LWFeHbgOB2o

Usage

Enter Haste Edit Mode by selecting the Haste tab in the editor

http://i.imgur.com/QfR5pNH.png

  1. Select one or more meshes from the content browser that you would like to place on the map

http://i.imgur.com/QZiyLC9.png

  1. Hover the mouse over the viewport and click to place the mesh

http://i.imgur.com/cpbft6Y.png

  1. Use the mouse wheel to rotate the mesh cursor
1 Like

Bro, you’re going into beast mode with these plugins! Excellent work! :smiley:

Talk about being productive…Wonderful job Ali.

@, @X.E.R.T. Thanks! :smiley:

I’ve open-sourced the plugin.

You can grab the code from here: GitHub - coderespawn/haste-plugin-ue4

Is this 4.8 compatible?

Should models be prepared with pivot point, like linking pivot point to specific vertex, or this plugin can handle models placement without preparation pivot in 3ds max or other app?

This looks like something that should be part of UE4. Why not make a pull request? Awesome stuff, I’ll be buying your DA for my next project.

Thanks! That’s a good point. I’ll perform some more clean up on this and submit for for review

@Wozner, I’ll update the plugin soon with some more features:

  • A 3D viewport that lets you define a pivot offset for any asset, so you can place it at a desired default transform
  • Grid Snapping
  • More stuff that you folks suggest

Will this be on marketplace?

This looks amazing! Any chance to turn this into plugin that us coding challenged could use?

this is so awesome, thanks for making this :smiley:

Great plugin thank you. For us it is important to have identifiable names within the world outliner of the editor so I have added the following line to the FedModeHaste::HandleClick function, thought it might be useful to others.



bool FEdModeHaste::HandleClick(FEditorViewportClient* InViewportClient, HHitProxy *HitProxy, const FViewportClick &Click)
{
	if (ActiveBrushMesh && !bMeshRotating) {
		AStaticMeshActor* MeshActor = GetWorld()->SpawnActor<AStaticMeshActor>(AStaticMeshActor::StaticClass());
		///
		/// @note [vaughan.sanders] Rename the display name of the new actor in the editor to 
		///	reflect the mesh that is being created from.
		///
		FActorLabelUtilities::SetActorLabelUnique(MeshActor, ActiveBrushMesh->GetName());
		///
		MeshActor->GetStaticMeshComponent()->StaticMesh = ActiveBrushMesh;
		MeshActor->ReregisterAllComponents();
		FTransform Transform(BrushRotation, BrushLocation, BrushScale);
		MeshActor->SetActorTransform(Transform);

		// Switch to another mesh from the list
		ResetBrushMesh();
	}

	return FEdMode::HandleClick(InViewportClient, HitProxy, Click);
}


@VorGhan Thank you for the suggestion. I’ve added your changes and updated the authors file with your name. Let me know if you need it customized

Also fixed breaking changes to make it work with 4.12

Added Settings window in the Haste Editor Mode’s tab. I’ll add configuration and other feature access here

When placing a mesh on the scene, you can now define rules on how they would be transformed.

Rules can be defined in blueprints by subclassing HasteTransformLogic and overriding the function TransformObject

I’ll post more info on this later

I’ve uploaded a binary build that works with 4.12 (tested with 4.12.2)

Download link in first post

You are the best!
This very cool idea, i recomend trying to everyone who spends time placing meshes in the environment.
Thanks!

I’ve added a flag to enable/disable mouse wheel rotation of meshes

Uploaded a new build 1.1.1. Download link is in the first post