void SStaticMeshEditorViewport::OnObjectPropertyChanged(UObject* ObjectBeingModified) { if ( !ensure(ObjectBeingModified) ) { return; } if( PreviewMeshComponent ) { bool bShouldUpdatePreviewSocketMeshes = (ObjectBeingModified == PreviewMeshComponent->StaticMesh); if( !bShouldUpdatePreviewSocketMeshes ) { const int32 SocketCount = PreviewMeshComponent->StaticMesh->Sockets.Num(); for( int32 i = 0; i < SocketCount; ++i ) { if( ObjectBeingModified == PreviewMeshComponent->StaticMesh->Sockets[i] ) { bShouldUpdatePreviewSocketMeshes = true; break; } } } if( bShouldUpdatePreviewSocketMeshes ) { UpdatePreviewSocketMeshes(); RefreshViewport(); } } }
void SMaterialEditorViewport::OnSetPreviewMeshFromSelection() { bool bFoundPreviewMesh = false; FEditorDelegates::LoadSelectedAssetsIfNeeded.Broadcast(); UMaterialInterface* MaterialInterface = MaterialEditorPtr.Pin()->GetMaterialInterface(); // Look for a selected asset that can be converted to a mesh component for (FSelectionIterator SelectionIt(*GEditor->GetSelectedObjects()); SelectionIt && !bFoundPreviewMesh; ++SelectionIt) { UObject* TestAsset = *SelectionIt; if (TestAsset->IsAsset()) { if (TSubclassOf<UActorComponent> ComponentClass = FComponentAssetBrokerage::GetPrimaryComponentForAsset(TestAsset->GetClass())) { if (ComponentClass->IsChildOf(UMeshComponent::StaticClass())) { if (USkeletalMesh* SkeletalMesh = Cast<USkeletalMesh>(TestAsset)) { // Special case handling for skeletal meshes, sets the material to be usable with them if (MaterialInterface->GetMaterial()) { bool bNeedsRecompile = false; MaterialInterface->GetMaterial()->SetMaterialUsage(bNeedsRecompile, MATUSAGE_SkeletalMesh); } } SetPreviewAsset(TestAsset); MaterialInterface->PreviewMesh = TestAsset->GetPathName(); bFoundPreviewMesh = true; } } } } if (bFoundPreviewMesh) { FMaterialEditor::UpdateThumbnailInfoPreviewMesh(MaterialInterface); MaterialInterface->MarkPackageDirty(); RefreshViewport(); } else { FSuppressableWarningDialog::FSetupInfo Info(NSLOCTEXT("UnrealEd", "Warning_NoPreviewMeshFound_Message", "You need to select a mesh-based asset in the content browser to preview it."), NSLOCTEXT("UnrealEd", "Warning_NoPreviewMeshFound", "Warning: No Preview Mesh Found"), "Warning_NoPreviewMeshFound"); Info.ConfirmText = NSLOCTEXT("UnrealEd", "Warning_NoPreviewMeshFound_Confirm", "Continue"); FSuppressableWarningDialog NoPreviewMeshWarning( Info ); NoPreviewMeshWarning.ShowModal(); } }
void SDestructibleMeshEditorViewport::SetExplodeAmount(float InExplodeAmount) { float NewExplodeAmount = 0.0f; if (InExplodeAmount >= 0.0f) { NewExplodeAmount = InExplodeAmount; } if (NewExplodeAmount != ExplodeAmount) { ExplodeAmount = NewExplodeAmount; RefreshViewport(); } }
void SPaperExtractSpritesViewport::Construct(const FArguments& InArgs, UTexture2D* InTexture, const TArray<FPaperExtractedSprite>& ExtractedSprites, const UPaperExtractSpritesSettings* Settings, SPaperExtractSpritesDialog* InDialog) { TexturePtr = InTexture; Dialog = InDialog; TypedViewportClient = MakeShareable(new FPaperExtractSpritesViewportClient(InTexture, ExtractedSprites, Settings)); SPaperEditorViewport::Construct( SPaperEditorViewport::FArguments(), TypedViewportClient.ToSharedRef()); // Make sure we get input instead of the viewport stealing it ViewportWidget->SetVisibility(EVisibility::HitTestInvisible); RefreshViewport(); }
void SMaterialEditorViewport::OnSetPreviewPrimitive(EThumbnailPrimType PrimType) { if (SceneViewport.IsValid()) { UStaticMesh* Primitive = nullptr; switch (PrimType) { case TPT_Cylinder: Primitive = GUnrealEd->GetThumbnailManager()->EditorCylinder; break; case TPT_Sphere: Primitive = GUnrealEd->GetThumbnailManager()->EditorSphere; break; case TPT_Plane: Primitive = GUnrealEd->GetThumbnailManager()->EditorPlane; break; case TPT_Cube: Primitive = GUnrealEd->GetThumbnailManager()->EditorCube; break; } if (Primitive != nullptr) { SetPreviewAsset(Primitive); RefreshViewport(); } } }
void SDestructibleMeshEditorViewport::SetPreviewDepth(uint32 InPreviewDepth) { uint32 DepthCount = 0; #if WITH_APEX if (DestructibleMesh != NULL && DestructibleMesh->ApexDestructibleAsset != NULL) { DepthCount = DestructibleMesh->ApexDestructibleAsset->getDepthCount(); } #endif // WITH_APEX uint32 NewPreviewDepth = 0; if (DepthCount > 0) { NewPreviewDepth = FMath::Clamp(InPreviewDepth, (uint32)0, DepthCount-1); } if (NewPreviewDepth != PreviewDepth) { PreviewDepth = NewPreviewDepth; RefreshViewport(); } }
void SMaterialEditorViewport::TogglePreviewBackground() { bShowBackground = !bShowBackground; // @todo DB: Set the background mesh for the preview viewport. RefreshViewport(); }
void SMaterialEditorViewport::TogglePreviewGrid() { bShowGrid = !bShowGrid; EditorViewportClient->SetShowGrid(bShowGrid); RefreshViewport(); }
void SNiagaraEffectEditorViewport::TogglePreviewBackground() { bShowBackground = !bShowBackground; // @todo DB: Set the background mesh for the preview viewport. RefreshViewport(); }
void SNiagaraEffectEditorViewport::TogglePreviewGrid() { bShowGrid = !bShowGrid; EditorViewportClient->SetShowGrid(bShowGrid); RefreshViewport(); }