void SStaticMeshEditorViewport::Construct(const FArguments& InArgs) { StaticMeshEditorPtr = InArgs._StaticMeshEditor; StaticMesh = InArgs._ObjectToEdit; CurrentViewMode = VMI_Lit; SEditorViewport::Construct( SEditorViewport::FArguments() ); PreviewMeshComponent = ConstructObject<UStaticMeshComponent>( UStaticMeshComponent::StaticClass(), GetTransientPackage(), NAME_None, RF_Transient ); SetPreviewMesh(StaticMesh); ViewportOverlay->AddSlot() .VAlign(VAlign_Top) .HAlign(HAlign_Left) .Padding(10) [ SAssignNew(OverlayTextVerticalBox, SVerticalBox) ]; FCoreUObjectDelegates::OnObjectPropertyChanged.AddRaw(this, &SStaticMeshEditorViewport::OnObjectPropertyChanged); }
void SDestructibleMeshEditorViewport::Construct(const FArguments& InArgs) { DestructibleMeshEditorPtr = InArgs._DestructibleMeshEditor; CurrentViewMode = VMI_Lit; SEditorViewport::Construct(SEditorViewport::FArguments()); PreviewComponent = NewObject<UDestructibleComponent>(GetTransientPackage(), NAME_None, RF_Transient ); SetPreviewMesh(InArgs._ObjectToEdit); EditorViewportClient->BindCommands(); PreviewDepth = 0; ExplodeAmount = 0.1f; }
void SStaticMeshEditorViewport::Construct(const FArguments& InArgs) { StaticMeshEditorPtr = InArgs._StaticMeshEditor; StaticMesh = InArgs._ObjectToEdit; CurrentViewMode = VMI_Lit; SEditorViewport::Construct( SEditorViewport::FArguments() ); PreviewMeshComponent = ConstructObject<UStaticMeshComponent>( UStaticMeshComponent::StaticClass(), GetTransientPackage(), NAME_None, RF_Transient ); SetPreviewMesh(StaticMesh); FCoreDelegates::OnObjectPropertyChanged.Add( FCoreDelegates::FOnObjectPropertyChanged::FDelegate::CreateRaw(this, &SStaticMeshEditorViewport::OnObjectPropertyChanged) ); }
FStaticMeshEditorViewportClient::FStaticMeshEditorViewportClient(TWeakPtr<IStaticMeshEditor> InStaticMeshEditor, TWeakPtr<SStaticMeshEditorViewport> InStaticMeshEditorViewport, FPreviewScene& InPreviewScene, UStaticMesh* InPreviewStaticMesh, UStaticMeshComponent* InPreviewStaticMeshComponent) : FEditorViewportClient(GLevelEditorModeTools(), &InPreviewScene) , StaticMeshEditorPtr(InStaticMeshEditor) , StaticMeshEditorViewportPtr(InStaticMeshEditorViewport) { SimplygonLogo = LoadObject<UTexture2D>(NULL, TEXT("/Engine/EditorResources/SimplygonLogo.SimplygonLogo"), NULL, LOAD_None, NULL); // Setup defaults for the common draw helper. DrawHelper.bDrawPivot = false; DrawHelper.bDrawWorldBox = false; DrawHelper.bDrawKillZ = false; DrawHelper.bDrawGrid = true; DrawHelper.GridColorAxis = FColor(160,160,160); DrawHelper.GridColorMajor = FColor(144,144,144); DrawHelper.GridColorMinor = FColor(128,128,128); DrawHelper.PerspectiveGridSize = GridSize; DrawHelper.NumCells = DrawHelper.PerspectiveGridSize / (CellSize * 2); SetViewMode(VMI_Lit); WidgetMode = FWidget::WM_None; EngineShowFlags.DisableAdvancedFeatures(); EngineShowFlags.SetSnap(0); EngineShowFlags.CompositeEditorPrimitives = true; OverrideNearClipPlane(1.0f); bUsingOrbitCamera = true; bShowCollision = true; bShowSockets = true; bDrawUVs = false; bDrawNormals = false; bDrawTangents = false; bDrawBinormals = false; bShowPivot = false; bDrawAdditionalData = true; bManipulating = false; SetPreviewMesh(InPreviewStaticMesh, InPreviewStaticMeshComponent); }
USkeletalMesh* UAnimationAsset::GetPreviewMesh() { USkeletalMesh* PreviewMesh = PreviewSkeletalMesh.Get(); if(!PreviewMesh) { // if preview mesh isn't loaded, see if we have set FStringAssetReference PreviewMeshStringRef = PreviewSkeletalMesh.ToStringReference(); // load it since now is the time to load if(!PreviewMeshStringRef.ToString().IsEmpty()) { PreviewMesh = Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), NULL, *PreviewMeshStringRef.ToString(), NULL, LOAD_None, NULL)); // if somehow skeleton changes, just nullify it. if (PreviewMesh && PreviewMesh->Skeleton != Skeleton) { PreviewMesh = NULL; SetPreviewMesh(NULL); } } } return PreviewMesh; }
USkeletalMesh* USkeleton::GetPreviewMesh(bool bFindIfNotSet) { USkeletalMesh* PreviewMesh = PreviewSkeletalMesh.Get(); if(!PreviewMesh) { // if preview mesh isn't loaded, see if we have set FStringAssetReference PreviewMeshStringRef = PreviewSkeletalMesh.ToStringReference(); // load it since now is the time to load if (!PreviewMeshStringRef.ToString().IsEmpty()) { PreviewMesh = Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), NULL, *PreviewMeshStringRef.ToString(), NULL, LOAD_None, NULL)); } // if not existing, and if bFindIfNotExisting is true, then try find one if (!PreviewMesh && bFindIfNotSet) { FARFilter Filter; Filter.ClassNames.Add(USkeletalMesh::StaticClass()->GetFName()); FString SkeletonString = FAssetData(this).GetExportTextName(); Filter.TagsAndValues.Add(GET_MEMBER_NAME_CHECKED(USkeletalMesh, Skeleton), SkeletonString); TArray<FAssetData> AssetList; FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry")); AssetRegistryModule.Get().GetAssets(Filter, AssetList); if(AssetList.Num() > 0) { SetPreviewMesh( Cast<USkeletalMesh>(AssetList[0].GetAsset()), false ); // update PreviewMesh PreviewMesh = PreviewSkeletalMesh.Get(); } } } return PreviewMesh; }