FSingleTileEditorViewportClient::FSingleTileEditorViewportClient(UPaperTileSet* InTileSet) : TileSet(InTileSet) , TileBeingEditedIndex(INDEX_NONE) , bManipulating(false) , bManipulationDirtiedSomething(false) , bShowStats(false) , ScopedTransaction(nullptr) { //@TODO: Should be able to set this to false eventually SetRealtime(true); // The tile map editor fully supports mode tools and isn't doing any incompatible stuff with the Widget Widget->SetUsesEditorModeTools(ModeTools); DrawHelper.bDrawGrid = GetDefault<UTileSetEditorSettings>()->bShowGridByDefault; DrawHelper.bDrawPivot = false; PreviewScene = &OwnedPreviewScene; ((FAssetEditorModeManager*)ModeTools)->SetPreviewScene(PreviewScene); EngineShowFlags.DisableAdvancedFeatures(); EngineShowFlags.SetCompositeEditorPrimitives(true); // Create a render component for the tile preview PreviewTileSpriteComponent = NewObject<UPaperSpriteComponent>(); FStringAssetReference DefaultTranslucentMaterialName("/Paper2D/TranslucentUnlitSpriteMaterial.TranslucentUnlitSpriteMaterial"); UMaterialInterface* TranslucentMaterial = Cast<UMaterialInterface>(DefaultTranslucentMaterialName.TryLoad()); PreviewTileSpriteComponent->SetMaterial(0, TranslucentMaterial); PreviewScene->AddComponent(PreviewTileSpriteComponent, FTransform::Identity); }
FCreatureAnimStoreEditorViewportClient::FCreatureAnimStoreEditorViewportClient(const TWeakPtr<class SEditorViewport>& InEditorViewportWidget /*= nullptr*/, UCreatureAnimationClipsStore* EditingAnimStore) :FEditorViewportClient(nullptr, &OwnerScene, InEditorViewportWidget) , EditingStore(EditingAnimStore) { PreviewScene = &OwnerScene; ((FAssetEditorModeManager*)ModeTools)->SetPreviewScene(PreviewScene); DrawHelper.bDrawGrid = true; DrawHelper.bDrawPivot = true; /*SetViewLocation(FVector(0, 30, 0)); SetLookAtLocation(FVector(0, -30, 0));*/ SetRealtime(true); //向PreviewScene添加Component EditingCreatureMesh = NewObject<UCreatureMeshComponent>(); //设置CreatureMesh组件 SetUpEditingCreatureMesh(); PreviewScene->AddComponent(EditingCreatureMesh, FTransform::Identity); EditingCreatureMesh->SetRelativeRotation(FRotator(0, 90, 0)); //设置Camera SetUpCamera(); if (EditingStore->ClipList.Num()!=0) { //默认播放第一个Clip EditingCreatureMesh->SetBluePrintActiveCollectionClip_Name(EditingStore->ClipList[0].ClipName); } }
FSpriteEditorViewportClient::FSpriteEditorViewportClient(TWeakPtr<FSpriteEditor> InSpriteEditor, TWeakPtr<class SEditorViewport> InSpriteEditorViewportPtr) : CurrentMode(ESpriteEditorMode::ViewMode) , SpriteEditorPtr(InSpriteEditor) , SpriteEditorViewportPtr(InSpriteEditorViewportPtr) { check(SpriteEditorPtr.IsValid() && SpriteEditorViewportPtr.IsValid()); // The tile map editor fully supports mode tools and isn't doing any incompatible stuff with the Widget Widget->SetUsesEditorModeTools(ModeTools); PreviewScene = &OwnedPreviewScene; ((FAssetEditorModeManager*)ModeTools)->SetPreviewScene(PreviewScene); SetRealtime(true); bManipulating = false; bManipulationDirtiedSomething = false; ScopedTransaction = nullptr; bShowSourceTexture = false; bShowSockets = true; bShowPivot = true; bShowRelatedSprites = true; bShowNamesForSprites = true; DrawHelper.bDrawGrid = GetDefault<USpriteEditorSettings>()->bShowGridByDefault; EngineShowFlags.DisableAdvancedFeatures(); EngineShowFlags.CompositeEditorPrimitives = true; // Create a render component for the sprite being edited { RenderSpriteComponent = NewObject<UPaperSpriteComponent>(); UPaperSprite* Sprite = GetSpriteBeingEdited(); RenderSpriteComponent->SetSprite(Sprite); PreviewScene->AddComponent(RenderSpriteComponent, FTransform::Identity); } // Create a sprite and render component for the source texture view { UPaperSprite* DummySprite = NewObject<UPaperSprite>(); DummySprite->SpriteCollisionDomain = ESpriteCollisionMode::None; DummySprite->PivotMode = ESpritePivotMode::Bottom_Left; DummySprite->CollisionGeometry.GeometryType = ESpritePolygonMode::SourceBoundingBox; DummySprite->RenderGeometry.GeometryType = ESpritePolygonMode::SourceBoundingBox; SourceTextureViewComponent = NewObject<UPaperSpriteComponent>(); SourceTextureViewComponent->SetSprite(DummySprite); UpdateSourceTextureSpriteFromSprite(GetSpriteBeingEdited()); // Nudge the source texture view back a bit so it doesn't occlude sprites const FTransform Transform(-1.0f * PaperAxisZ); SourceTextureViewComponent->bVisible = false; PreviewScene->AddComponent(SourceTextureViewComponent, Transform); } }
void FSCSEditorViewportClient::ToggleRealtimePreview() { SetRealtime(!IsRealtime()); Invalidate(); }
FPhATEdPreviewViewportClient::FPhATEdPreviewViewportClient(TWeakPtr<FPhAT> InPhAT, TSharedPtr<FPhATSharedData> Data, const TSharedRef<SPhATPreviewViewport>& InPhATPreviewViewport) : FEditorViewportClient(nullptr, &Data->PreviewScene, StaticCastSharedRef<SEditorViewport>(InPhATPreviewViewport)) , PhATPtr(InPhAT) , SharedData(Data) , MinPrimSize(0.5f) , PhAT_TranslateSpeed(0.25f) , PhAT_RotateSpeed(1.0 * (PI / 180.0)) , PhAT_LightRotSpeed(0.22f) , SimGrabCheckDistance(5000.0f) , SimHoldDistanceChangeDelta(20.0f) , SimMinHoldDistance(10.0f) , SimGrabMoveSpeed(1.0f) { check(PhATPtr.IsValid()); ModeTools->SetWidgetMode(FWidget::EWidgetMode::WM_Translate); ModeTools->SetCoordSystem(COORD_Local); bAllowedToMoveCamera = true; // Setup defaults for the common draw helper. DrawHelper.bDrawPivot = false; DrawHelper.bDrawWorldBox = false; DrawHelper.bDrawKillZ = false; DrawHelper.GridColorAxis = FColor(80,80,80); DrawHelper.GridColorMajor = FColor(72,72,72); DrawHelper.GridColorMinor = FColor(64,64,64); DrawHelper.PerspectiveGridSize = 32767; PhATFont = GEngine->GetSmallFont(); check(PhATFont); EngineShowFlags.DisableAdvancedFeatures(); EngineShowFlags.SetSeparateTranslucency(true); EngineShowFlags.SetCompositeEditorPrimitives(true); // Get actors asset collision bounding box, and move actor so its not intersection the floor plane at Z = 0. FBox CollBox = SharedData->PhysicsAsset->CalcAABB(SharedData->EditorSkelComp, SharedData->EditorSkelComp->ComponentToWorld); FVector SkelCompLocation = FVector(0, 0, -CollBox.Min.Z + SharedData->EditorSimOptions->FloorGap); SharedData->EditorSkelComp->SetAbsolute(true, true, true); SharedData->EditorSkelComp->SetRelativeLocation(SkelCompLocation); SharedData->ResetTM = SharedData->EditorSkelComp->GetComponentToWorld(); // Get new bounding box and set view based on that. CollBox = SharedData->PhysicsAsset->CalcAABB(SharedData->EditorSkelComp, SharedData->EditorSkelComp->ComponentToWorld); FVector CollBoxExtent = CollBox.GetExtent(); // Take into account internal mesh translation/rotation/scaling etc. FTransform LocalToWorld = SharedData->EditorSkelComp->ComponentToWorld; FSphere WorldSphere = SharedData->EditorSkelMesh->GetImportedBounds().GetSphere().TransformBy(LocalToWorld); CollBoxExtent = CollBox.GetExtent(); if (CollBoxExtent.X > CollBoxExtent.Y) { SetViewLocation( FVector(WorldSphere.Center.X, WorldSphere.Center.Y - 1.5*WorldSphere.W, WorldSphere.Center.Z) ); SetViewRotation( EditorViewportDefs::DefaultPerspectiveViewRotation ); } else { SetViewLocation( FVector(WorldSphere.Center.X - 1.5*WorldSphere.W, WorldSphere.Center.Y, WorldSphere.Center.Z) ); SetViewRotation( FRotator::ZeroRotator ); } SetViewLocationForOrbiting(FVector::ZeroVector); SetViewModes(VMI_Lit, VMI_Lit); SetCameraSpeedSetting(3); bUsingOrbitCamera = true; if (!FPhAT::IsPIERunning()) { SetRealtime(true); } }