Skip to content

Get available levels; Getters and Setters for types on actors & static meshes#364

Draft
jasonashton wants to merge 11 commits intotempo-sim:mainfrom
aurum-ai:jashton/get-set-static-types
Draft

Get available levels; Getters and Setters for types on actors & static meshes#364
jasonashton wants to merge 11 commits intotempo-sim:mainfrom
aurum-ai:jashton/get-set-static-types

Conversation

@jasonashton
Copy link
Copy Markdown
Contributor

No description provided.

ResponseContinuation.ExecuteIfBound(Response, grpc::Status_OK);
}

void UTempoCoreServiceSubsystem::GetAvailableLevels(const GetAvailableLevelsRequest& Request, const TResponseDelegate<AvailableLevelsResponse>& ResponseContinuation) const
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove


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
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comment in () not necessary

@jasonashton jasonashton temporarily deployed to fork-pr-environment January 15, 2026 15:27 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 15, 2026 15:27 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 15, 2026 15:27 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 15, 2026 15:27 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 15, 2026 15:27 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 15, 2026 15:27 — with GitHub Actions Inactive
Copy link
Copy Markdown
Contributor

@pete-tempo pete-tempo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe update the comment to reflect "active" or "current" components. Component "instances" maybe? To differentiate between component classes

@jasonashton
Copy link
Copy Markdown
Contributor Author

jasonashton commented Jan 18, 2026

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?

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

@jasonashton
Copy link
Copy Markdown
Contributor Author

  • 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 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?

@pete-tempo
Copy link
Copy Markdown
Contributor

  • 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 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

@jasonashton jasonashton temporarily deployed to fork-pr-environment January 21, 2026 15:29 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 21, 2026 15:29 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 21, 2026 15:29 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 21, 2026 15:29 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 21, 2026 15:29 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 21, 2026 15:29 — with GitHub Actions Inactive
{
// 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.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

@jasonashton jasonashton force-pushed the jashton/get-set-static-types branch from 442486b to 8702754 Compare January 30, 2026 17:13
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 30, 2026 17:13 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 30, 2026 17:13 — with GitHub Actions Inactive
@jasonashton jasonashton deployed to fork-pr-environment January 30, 2026 17:13 — with GitHub Actions Active
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 30, 2026 17:13 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 30, 2026 17:13 — with GitHub Actions Inactive
@jasonashton jasonashton temporarily deployed to fork-pr-environment January 30, 2026 17:13 — with GitHub Actions Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants