This project is possible because of the effort of amazing people at Cranium Software this project is based of SmartConsole https://github.com/CraniumSoftware/SmartConsole
BeastConsole is evolution (hopefully) of SmartConsole,
- Backend is created by folks at CraniumSoftware.
- Use attributes to bind members
- Register your own arbitrary commands/methods for any object(non monob as well) and provide parameters
- Autocomplete
- Both commands and variables support any number of subscribers, modify all objects at once.
- Multiline
- Suggestions
- History
- ConsoleUtility class containing methods to draw tables. (You can actually use ConsoleUtility pretty much by itself instead of Console class).
setup: Drop Console prefab in scene, change parameters to your liking.
Attributes:
Console uses reflection to find attributes, to speed up the whole process we should mark any class that has uses console
attributes with [ConsoleParse] attribute.
[ConsoleParse]
public class AttributeTest : MonoBehaviour {
    [ConsoleVariable("testvar", "")]
    public float TestVariable = 5f;
    [ConsoleVariable("testproperty", "")]
    public bool TestPropertyVariable
    {
        set {
            Console.WriteLine("testproperty was set to: " + value);
        }
    }
    [ConsoleCommand("testMethod", "")]
	void TestMethod() {
        BeastConsole.Console.WriteLine("test method works");
    }
    [ConsoleCommand("testMethodWithParams", "")]
    public void TestMethodWithParams(float param1) {
        BeastConsole.Console.WriteLine("works :" + param1.ToString());
    }
    [ConsoleCommand("testMethodWith2Params", "")]
    public void TestMethodWith2Params(float param1, int param2) {
        BeastConsole.Console.WriteLine("works :" + (param1+ param2).ToString());
    }
}
Manual:
public float Volume = 1f;
Console.RegisterVariable<float>("Volume", "", x => Volume = x, this);
Console.RegisterCommand("MoveUp", "", this, MoveUp);
   
private void MoveUp(string[] val) {
   transform.position += new Vector3(0, System.Convert.ToSingle(val[1]) , 0);
}Manual method requires you to unregister commands and variables when done with an object.
See Example folder for more examples.
