Custom Asset Editors Part 3: Implementing a full dialog tree including quests!

  Рет қаралды 973

kirby561

kirby561

Күн бұрын

Пікірлер: 18
@SirKaizoku
@SirKaizoku Ай бұрын
This was a great watch, the longer the better , definetly filling a void for this info online , thanks a lot for the effort.
@LazyTube
@LazyTube Ай бұрын
I keep checking you channel to see if there is a new video, thank you man for the knowledge it doesn't seem like there is any in-depth tutorial on how to make stuff like this. keep up the good work and thanks again
@haithammahmoud6825
@haithammahmoud6825 Ай бұрын
SAME i hope he make more tutorials like this
@TheGabmeisterX
@TheGabmeisterX 27 күн бұрын
Just found your channel. This is awesome! Keep it up.
@microbprod
@microbprod Ай бұрын
I was so happy when saw the video in my recommendations. I wanna create an editor for my dialog system a long time ago, but there is too little an information on the internet about this. Big thanks that you did this hard, but very helpfull guidance! And I have a question. Will this code work in UE4?
@kirby561
@kirby561 Ай бұрын
Thanks for watching. I believe it will work in UE4 as well although I haven't tried it so there may be some differences you'll run in to. All the major graph/node/pin/property editor classes exist at least.
@zod6594
@zod6594 29 күн бұрын
Amazing, keep the tutorials going!
@TheDannyMcGee
@TheDannyMcGee 10 күн бұрын
Thanks for this! There's so little information out there on custom asset editors and you've gone to an incredible amount of depth in this series. Do you have any insight on how to integrate a custom Preview Scene? Most of the built-in classes I've looked at are using the Persona toolkit, but that seems like the wrong choice for my particular use case. Would appreciate a point in the right direction if you happen to have come across any useful info in your research!
@kirby561
@kirby561 9 күн бұрын
Thanks. Do you mean like the viewport tab in the Blueprint editor? I've gotten a few questions about this and I may do a video on it in the future. Probably won't be the next one though.
@TheDannyMcGee
@TheDannyMcGee 9 күн бұрын
​@@kirby561 Yep, that's what I'm thinking about! Here's what I've found since writing that comment: - The static mesh, material, Niagara, and Chaos cloth asset editors are using the AdvancedPreviewScene module, which looks like a fairly labor-intensive solution with a lot of moving parts, though definitely a step above starting from scratch - Skeletal mesh and related asset editors (skeleton, physics asset, Control Rig, etc.) are using Persona. This is a much more "out of the box" solution but also looks more opinionated and less flexible - not sure if it supports anything other than skeletal meshes. Persona itself looks like a wrapper around AdvancedPreviewScene - The core Blueprint editor doesn't show up in the list of AdvancedPreviewScene referencers (and it's the only one that doesn't have a "Preview Scene Settings" tab in the editor), so I assume it's doing something completely custom. I'm afraid to investigate this one any further, tbh 😂
@kirby561
@kirby561 9 күн бұрын
@@TheDannyMcGee lmao well thanks for the info!
@aprivatechannel1152
@aprivatechannel1152 11 күн бұрын
Any support for hotkeys? Like del to delete a node, ctrl+c and ctrl+v, etc.. Also, how can I update a tab? For example updating the properties of the CustomAsset from on tab, or through the graph system, to show it's results on the other tab.
@kirby561
@kirby561 11 күн бұрын
For "Generic Commands" like delete/undo/redo/etc, you can map actions to them in your editor during initialization. There's a built in class FGenericCommands in GenericCommands.h that has these actions already defined. The base class of FWorkflowCentricApplication is FBaseToolkit that has an FUICommandList called ToolkitCommands. Add commands you want to handle to this list during initialization using: ToolkitCommands->MapAction(FGenericCommands::Get().Delete, FExecuteAction::CreateSP(this, &FBlueprintEditor::DeleteGraphAction), FCanExecuteAction::CreateSP(this, &FBlueprintEditor::CanDeleteGraphAction) ); The above will call DeleteGraphAction when delete is pressed. If you want to add new actions you can make a class extending TCommands, override RegisterCommands, and declare your new commands with the UI_COMMAND macro. You can specify the default hotkey in that macro as well. See BlueprintEditorCommands.cpp for an example, also don't forget to call Register on that commands class as part of initialization in your application. I'm not sure I understand the second question. This series covers how to update the UI within a tab to keep it in sync with the graph - are you asking how to update a second tab with information from a different tab? If so you can either sync it up to the currently edited asset when you switch tabs or you can use an interface / callback to update them.
@aprivatechannel1152
@aprivatechannel1152 10 күн бұрын
@@kirby561 Thanks for the quick reply. Yea, I realized that the solution to my question was pretty easy, mb. Although I don't really understand how to use MapAction. Is FBlueprintEditor::DeleteGraphAction already declared? Because there isin't a method called DeleteGraphAction Altough I did find DeleteSelectedNodes, however its a protected method, and so is CanDeleteNodes. I'm calling it in InitEditor in CustomAssetEditorApp.cpp I tried implementing my own DeleteNode, however I can't seem to figure out how to get my currently selected nodes
@aprivatechannel1152
@aprivatechannel1152 9 күн бұрын
@@kirby561 Thanks! I figured out my second question, it was already explained in the video. Mb But from what I understand, there is not such function as DeleteGraphAction. I tried implementing my own, but I have no idea how to get the selected nodes from _workingGraph
@kirby561
@kirby561 9 күн бұрын
@@aprivatechannel1152 Oh sorry in that above code snippet, you need to implement the DeleteGraphAction and CanDeleteGraphAction methods on your app. I was copy/pasting how FBlueprintEditor (which is a FWorkflowCentricApplication) does it as an example and didn't replace the class name by accident. The equivilent in this tutorial project would be implementing them in DialogAssetEditorApp (aka DialogAssetEditorApp::DeleteGraphAction/CanDeleteGraphAction). You can get the current selection on SGraphEditor with: const FGraphPanelSelectionSet& nodes = _workingGraphUi->GetSelectedNodes(); Note the difference between _workingGraphUi which is an SGraphEditor vs _workingGraph which is a UEdGraph. SGraphEditor is the UI (the "view") that displays a UEdGraph (the "model").
@ĐạtQuảngTấn
@ĐạtQuảngTấn Ай бұрын
Hi! I need to custom the shape of connections. Is it possible to create a connection with line shape like Blueprint connections and change color of connections? Hope you answer. Thanks.
@kirby561
@kirby561 Ай бұрын
Yeah you can customize whatever you want. If you want to change how the line between the pins draws you can make your own FConnectionDrawingPolicy or use the existing one and change its parameters. SGraphPanel has a SetNodeFactory method. The FGraphNodeFactory has methods for creating the node widget, the pin widget, and the connection policy: virtual TSharedPtr CreateNodeWidget(UEdGraphNode* InNode); virtual TSharedPtr CreatePinWidget(UEdGraphPin* InPin); virtual FConnectionDrawingPolicy* CreateConnectionPolicy(const UEdGraphSchema* Schema, int32 InBackLayerID, int32 InFrontLayerID, float ZoomFactor, const FSlateRect& InClippingRect, FSlateWindowElementList& InDrawElements, UEdGraph* InGraphObj); So extend FGraphNodeFactory with your own struct and override CreateConnectionPolicy, then set your factory on the SGraphPanel with the SetNodeFactory method. If you want to completely change how things are drawn you can implement your own drawing methods in that connection policy. If you just want to change the color or thickness or whatever you can use the parent classes' connection policy and just modify some of its parameters before returning it in your overridden CreateConnectionPolicy method. See FConnectionParams in ConnectionDrawingPolicy.h for what you can change on the default version. You can see how the default FConnectionPolicy works in that file (and its corresponding cpp) as well if you want to just create a whole new class and modify the drawing code in it.
Пришёл к другу на ночёвку 😂
01:00
Cadrol&Fatich
Рет қаралды 10 МЛН
А ВЫ ЛЮБИТЕ ШКОЛУ?? #shorts
00:20
Паша Осадчий
Рет қаралды 8 МЛН
Men Vs Women Survive The Wilderness For $500,000
31:48
MrBeast
Рет қаралды 104 МЛН
OYUNCAK MİKROFON İLE TRAFİK LAMBASINI DEĞİŞTİRDİ 😱
00:17
Melih Taşçı
Рет қаралды 11 МЛН
I regret doing this...
1:20:07
Tsoding Daily
Рет қаралды 73 М.
Unreal Engine 5 Tutorials: Gameplay Ability System in 20 minutes - An Introduction
21:29
Danny Goodayle - Unreal Tutorials
Рет қаралды 40 М.
I tried Swift and came out a different person
1:56:59
Tsoding Daily
Рет қаралды 76 М.
Intro to Dialogue Tree 2: Editor Guide
10:47
UnraedGames
Рет қаралды 2,1 М.
I Wrote Superhuman Code By Hands
1:40:02
Tsoding Daily
Рет қаралды 48 М.
How to Declare and Use Delegates in Unreal Engine 5
36:50
kirby561
Рет қаралды 1,2 М.
How to create Modular and Scalable UI systems in Unreal Engine
19:15
Compiler Q&A, September 2024
2:10:03
Jonathan Blow
Рет қаралды 20 М.
Пришёл к другу на ночёвку 😂
01:00
Cadrol&Fatich
Рет қаралды 10 МЛН