widVE / UniCAVE

A Unity3D Plugin for Non-Head Mounted Virtual Reality Display Systems
https://widve.github.io/UniCAVE/
MIT License
110 stars 29 forks source link

Support custom drive option #3

Open jamesmoney opened 7 years ago

jamesmoney commented 7 years ago

Currently, the DriveTool and ITool code is mono-lithic in that it provides one drive control system and no per tool interface. An example of a custom drive setup would be a orbit based controls versus the world space movement/rotation drive controls.

To support this we suggest splitting the ITool interface into ITool, IButton, IAnalog as well as an abstract class called BaseTool. ITool would implement the init() and showdown() methods, as well as, the tool name. The button events (down, click, drag) would migrate to IButton. Finally, the IAnalog interface would be created similar to how DriveTool works now. The current DriveTool code would become this abstract class. This permits the developer to use the existing drive tools, but allow overriding of the analog/buttons in DriveTool for custom camera controls.

@rossTnick @livingenvironmentslab Comments?

ghost commented 7 years ago

I think this sounds like a great approach - I've done custom input systems like this before outside of Unity, something like this would be a great next step for the current tool / input system.

jamesmoney commented 7 years ago

Great! I have a guy working on it.

jamesmoney commented 6 years ago

@rossTnick I have this working, we're testing it on a project that needed a custom control to see if it scales like we need. We're also adding some noise filtering/smoothing to the wand to see if that will be it less jerky for UI controls.