Get available levels; Getters and Setters for types on actors & static meshes#364
Get available levels; Getters and Setters for types on actors & static meshes#364jasonashton wants to merge 11 commits intotempo-sim:mainfrom
Conversation
| ResponseContinuation.ExecuteIfBound(Response, grpc::Status_OK); | ||
| } | ||
|
|
||
| void UTempoCoreServiceSubsystem::GetAvailableLevels(const GetAvailableLevelsRequest& Request, const TResponseDelegate<AvailableLevelsResponse>& ResponseContinuation) const |
There was a problem hiding this comment.
This really just gets any assets at a path. Not sure if we should add more filtering to truly get all levels or make it a more generic RPC
There was a problem hiding this comment.
I mean I think this RPC would be very useful but it shouldn't have a name specific to levels. We could have both and they could share a helper. Is it possible to find only levels? Does the umap extension help?
There was a problem hiding this comment.
I can make it a more generic RPC, it does look like there's a way to filter by levels and add a more specific RPC, or we can filter client side maybe by .umap
There was a problem hiding this comment.
I think two RPCs, one for levels and one for all non-level assets would be best. I don't really think of levels as "assets"
| UnLabelActor(*ActorItr); | ||
| } | ||
|
|
|
|
||
| message SetActorTypeSemanticIdRequest { | ||
| string actor_type = 1; // e.g., "CBP_QuantumCharacter_C" (class name) | ||
| int32 semantic_id = 2; // 0-255 to set, -1 to revert to DataTable default |
There was a problem hiding this comment.
Not sure reseting to datatable default is the right move here
| bool include_hidden_components = 5; | ||
| } | ||
|
|
||
| // Request actors near a world position (instead of near a named actor) |
There was a problem hiding this comment.
comment in () not necessary
pete-tempo
left a comment
There was a problem hiding this comment.
I'm generally fine with this, but just throwing out a couple of alternatives to consider:
- Do we need runtime overrides? We can't decide our label schema at edit time?
- Could we instead drive the data table from a json file that users can edit? You could set it up to re-read it and relabel everything at runtime.
- I believe the data table is only read once right now. So do you need override maps, or should we just edit the maps we loaded from the data table?
|
|
||
| service LabelService { | ||
| rpc GetInstanceToSemanticIdMap(TempoScripting.Empty) returns (InstanceToSemanticIdMap); | ||
| rpc GetAllActorLabels(GetAllActorLabelsRequest) returns (GetAllActorLabelsResponse); |
There was a problem hiding this comment.
Does this make GetInstanceToSemanticIdMap unnecessary? If so we can remove that
| message StaticMeshTypeInfo { | ||
| string mesh_path = 1; // Full asset path | ||
| string display_name = 2; // Short name extracted from path | ||
| int32 instance_count = 3; // Number of components using this mesh |
There was a problem hiding this comment.
Maybe update the comment to reflect "active" or "current" components. Component "instances" maybe? To differentiate between component classes
My goal is to be able to ship a few pre-built levels that we can insert meshes and actors into, and generally avoid having to go into unreal and edit it as much as possible. It'd be much easier to set up a base environment and be able to set up scenarios, different layouts, etc. without re-packaging the level. Also part of this is that end users can decide their own labels depending on their needs |
I looked into editing the table directly and I do think it makes sense to keep parity with the json data table, but it's stored as a uasset, do you have any ideas about this? |
Yeah you can fill a data table from a json. I don't know if it works at runtime. https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/EditorScripting/DataTable/FillDataTablefromJSONFile |
| { | ||
| // We've labeled this Actor before. Make sure all the components are labeled. | ||
| LabelAllComponents(Actor, *ActorIdPair); | ||
| // Copy to avoid dangling reference if LabeledObjects is modified during labeling. |
There was a problem hiding this comment.
LabeledObjects would have to be modified between the if and the next line right? Is that possible? I thought it was all on the same thread?
442486b to
8702754
Compare
No description provided.