stillwwater / command_terminal

Unity Command Terminal: In-Game Console
MIT License
446 stars 60 forks source link

AddCommand don't add autocompletion all the times #14

Open Wokarol opened 6 years ago

Wokarol commented 6 years ago

When I'm adding command at runtime using AddCommand, autocompletion word for this command isn't always added. I don't know why.

Wokarol commented 6 years ago

I've done some testing and looks like AddCommand automatically adds word for autocompletion in editor, but doesn't do this on standalone build. So code that I have to do for it to works looks like that:

Terminal.Shell.AddCommand(
   commandName
     .Replace("{name}", name)
     .Replace("{parent_name}", (transform.parent != null) ? transform.parent.name : name),
     Execute, 0, 0, help);

#if !UNITY_EDITOR
Terminal.Autocomplete.Register(
   commandName
     .Replace("{name}", name)
     .Replace("{parent_name}", (transform.parent != null) ? transform.parent.name : name)
     ); 
#endif
stillwwater commented 6 years ago

Could this be related to script execution order? All registered commands get added to autocomplete during the Start procedure in Terminal.cs.

Edit: I'll try to find a workaround for this, maybe a refresh_autocomplete command to add any commands that were left out. Or perhaps having the interpreter raise an event whenever a new command is added, allowing the autocomplete to use the events to add commands as soon as they registered.

Wokarol commented 6 years ago

I've done some testing. I'm using persistent scene in my project and looks like loading scene with Terminal as second one screws few things up. I've exposed some things and created this script: https://pastebin.com/8MQ7rR8i