Git Product home page Git Product logo

hermes's Introduction

Hermes URLs for Unreal Engine

Hermes URLs is a plugin for Unreal Engine that out of the box allows you to copy URLs to arbitrary assets in your project and share them with your team e.g. through Slack. Those links will then directly open the Unreal Editor to the linked asset.

In addition, Hermes provides easy-to-use APIs to register your own endpoints, so that you can create other direct deep links into the editor. E.g. you could create links that run automatic tests, link directly to a settings page, or whatever else strikes your fancy!

Big thanks to Krista A. Leemhuis for the amazing icons!

Setup

Hermes officially supports UE5 and is backwards compatible with UE4 version 4.27. Pull requests to support older versions are welcome.

  1. Clone this repository into your project's Plugins folder
  2. Start your editor - the URL is automatically registered when the editor first starts

By default, Hermes will register URIs that match the project name of your project. If you need more control over the scheme used by these URIs, you can use the HermesBranchSupport plugin which lives next to HermesCore, which lets you include the branch name in the URI scheme. You'll need to enable HermesBranchSupport in your .uproject, and then you can go to Edit > Preferences and find "Hermes URLs - Branch Support" under Plugins to configure it.

Hermes relies on hermes_urls to register with the OS and dispatch URL requests. It's a small Rust project, and its binaries are checked in to this repository (in HermesCore/Source/HermesURLHandler) for convenience's sake, but feel free to review the source and build your own if downloading EXE files from the internet puts you at (understandable) unease.

Using

Once you've set up Hermes, you should be able to right click any asset in the content browser and see a new "Copy URL that reveals asset" option:

Similarly, when you've opened any asset in the asset editor, you should see a new "Copy URL that opens asset" option in the "Asset" option from the menu bar:

Extending

Hermes is intended to be pretty customizable and extendible. Feel free to reach out if you have any questions, or send a pull request if you think your functionality should be a part of the core Hermes experience!

Creating custom URLs with your own functionality

To see how to create your own handler for custom URLs you can look at HermesContentEndpoint.cpp, which is the implementation of the asset links. The editor integration that lets you copy those links to the clipboard lives in HermesContentEndpointEditorExtension.cpp.

You can create a similar module in your own project and depend on HermesServer from your module, and you should be good to go.

Controlling what URL scheme / protocol your links have

If you want to have more control over the URL scheme / protocol than Hermes and HermesBranchSupport gives you, you can create your own IHermesUriSchemeProvider. It is a very small C++ interface that you register as a modular feature -- all you need to implement is a TOptional<FString> GetPreferredScheme() method. You can use HermesBranchSupport.cpp as a starting point for developing your own IHermesUriSchemeProvider to override the URI scheme used.

License

The icon is copyright (c) 2022 Jørgen P. Tjernø. All Rights Reserved.

Hermes URLs is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

hermes's People

Contributors

jorgenpt avatar meetmarkelov avatar zosiu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hermes's Issues

Support for macOS

Currently Hermes only works on Windows. It should be doable to implement similar URL handling to bichrome and have a helper app for macOS too, and use the mail_slot crate's Mac support for IPC.

Setting up Hermes for UE 5.1

I did notice that this Plugin is for UE 4, yet Hermes is cited by the RedTalaria Plugin by zosiu, a Plugin which is based on Hermes, that they have tested it for UE 5.1. Could you please help me get Hermes running on UE 5.1?

I get this error when trying to upload the Hermes Plugin, as is, to UE 5.1:

Missing Modules
The following modules are missing or built with a different engine version:
HermesServer
HermesContentEndpoint
Engine modules cannot be compiled at runtime. Please build through your IDE.

This seems to indicate Hermes needs to be built in UE 5.1 explicitly. I succeeded in building Hermes Core using the RunUAT.bat file included with UE 5.1, but I get a hiccup when I try the same thing with Hermes Branch Support.

The build process stops here:

Expecting to find a type to be declared in a module rules named 'HermesServer' in UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null. This type must derive from the 'ModuleRules' type defined by Unreal Build Tool.

Do you know how I help the build tool find what it is looking for?

Also, I did try using the Hermes Core Plugin without the Hermes Branch Support (since I don't have that one yet). I'm able to Copy assets, but when I paste, I don't see anything, like I'm pasting null data or something. Is this expected without the Brach Support, or is my build broken?

Thank you for your help.

Try adding a workaround for linking through Teams & Discord

Currently Hermes URLs work fine in Slack, but not in Microsoft Teams and Discord, because they do not recognize custom protocols.

One potential workaround is to have a plugin setting that generates URLs to a static website hosted on GitHub pages. Instead of project://content/Game/UI/HUDWidgets/WBP_HUD?edit, it would be something like https://jorgenpt.github.io/Hermes/#s=project&h=content&p=Game/UI/HUDWidgets/WBP_HUD&a=edit, which would have some JS to adjust location.href (and close itself?).

Probably worth looking into a custom CNAME for the site too, to get a better & shorter URL. Maybe h.o7.no?

Steps for Hermes_Urls Registration

Are there documented steps for setting up the Hermes URI registration/association? For some, clicking the URI only takes them to the windows store. I didn't see any documentation on running the hermes_url register command, assuming it's needed for proper association. Thanks in advance!

Support for Linux

Currently Hermes only works on Windows. We should investigate custom URL handling on Linux, and figure out an alternate IPC mechanism for hermes_urls on Linux.

Make GetUri() functionality available in game builds

This would be super useful to add ways, from a game build, to get a URI for a given editor endpoint. Help for bugflagging outside of the editor! You can then generate the link in the clipboard in a game build, and open it in the editor.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.