void FSpriteEditorViewportClient::InternalActivateNewMode(ESpriteEditorMode::Type NewMode) { CurrentMode = NewMode; Viewport->InvalidateHitProxy(); UPaperSprite* Sprite = GetSpriteBeingEdited(); FSpriteGeometryEditMode* GeometryEditMode = ModeTools->GetActiveModeTyped<FSpriteGeometryEditMode>(FSpriteGeometryEditMode::EM_SpriteGeometry); check(GeometryEditMode); // Note: This has side effects (clearing the selection set, ensuring the geometry is correct if the sprite being edited changed, etc...). // Do not skip even if the mode is not really changing. GeometryEditMode->SetGeometryBeingEdited(nullptr, /*bAllowCircles=*/ false, /*bAllowSubtractivePolygons=*/ false); switch (CurrentMode) { case ESpriteEditorMode::ViewMode: break; case ESpriteEditorMode::EditSourceRegionMode: UpdateRelatedSpritesList(); break; case ESpriteEditorMode::EditCollisionMode: GeometryEditMode->SetGeometryColors(SpriteEditingConstants::CollisionShapeColor, FLinearColor::White); if (Sprite != nullptr) { GeometryEditMode->SetGeometryBeingEdited(&(Sprite->CollisionGeometry), /*bAllowCircles=*/ true, /*bAllowSubtractivePolygons=*/ false); } break; case ESpriteEditorMode::EditRenderingGeomMode: GeometryEditMode->SetGeometryColors(SpriteEditingConstants::RenderShapeColor, SpriteEditingConstants::SubtractiveRenderShapeColor); if (Sprite != nullptr) { GeometryEditMode->SetGeometryBeingEdited(&(Sprite->RenderGeometry), /*bAllowCircles=*/ false, /*bAllowSubtractivePolygons=*/ true); } break; } }
void FSingleTileEditorViewportClient::ActivateEditMode(TSharedPtr<FUICommandList> InCommandList) { // Activate the sprite geometry edit mode //@TODO: ModeTools->SetToolkitHost(SpriteEditorPtr.Pin()->GetToolkitHost()); ModeTools->SetDefaultMode(FSpriteGeometryEditMode::EM_SpriteGeometry); ModeTools->ActivateDefaultMode(); ModeTools->SetWidgetMode(FWidget::WM_Translate); FSpriteGeometryEditMode* GeometryEditMode = ModeTools->GetActiveModeTyped<FSpriteGeometryEditMode>(FSpriteGeometryEditMode::EM_SpriteGeometry); check(GeometryEditMode); GeometryEditMode->SetEditorContext(this); GeometryEditMode->BindCommands(InCommandList /*SpriteEditorViewportPtr.Pin()->GetCommandList()*/); const FLinearColor CollisionShapeColor(0.0f, 0.7f, 1.0f, 1.0f); //@TODO: Duplicated constant from SpriteEditingConstants GeometryEditMode->SetGeometryColors(CollisionShapeColor, FLinearColor::White); }