EDCD / EDDI

Companion application for Elite Dangerous
Other
444 stars 81 forks source link

Clarify VoiceAttack documentation - 'say' plugin function only uses Script variable for input #1432

Closed Datura359 closed 5 years ago

Datura359 commented 5 years ago

EDDI Versions:

3.4.2-b1 3.4.1

Voice Attack Version:

1.7.7

Expected Behaviour

While attempting to use the 'say' plugin function I was getting inconsistent feedback from EDDI's TTS system where it would repeat only one bit of text I had fed it, even though I was calling to it with different variables that had different text contained in them.

Steps to reproduce

1) Create a Voice Attack command triggered however you desire. 2) Add a text variable named "Script" that contains "This is the appropriate way of doing this". 3) Add the "Execute an external plugin function" command with the following settings:

Observed

The first command should execute correctly, and you'll hear the words "This is the appropriate way of doing this". When you trigger the second command created, you would expect the TTS system to speak the words "This is a test", however, in my testing, it would repeat the original words "This is the appropriate way of doing this" which is incorrect.

Investigation

Through a bit of messing about, I found that if I used the variable [Script] every single time whenever I was calling the plugin function that the TTS system was finally behaving as expected and would speak the expected text. This is not well defined in the documentation, and I'm not sure that this is the intended behaviour. I would imagine that one should be able to call the say function while passing any text variable and EDDI would then read whatever it is sent, rather than having to only send the one variable of [Script].

Tkael commented 5 years ago

Are you waiting for the first say action to be completed before VA executes the second?

Datura359 commented 5 years ago

Are you waiting for the first say action to be completed before VA executes the second?

Yes. VA commands are run sequentially by different triggers and the same behaviour persists even when using VA's built in option to wait for the Plugin function to finish before executing other commands, and when VA's option to allow other commands to execute is unchecked.

Tkael commented 5 years ago

Ah, I think I understand better now, thank you for clarifying the issue a bit.

Yes, the current design does require the word Script to be used to pass the value to the plugin. I'll have to double check the code to see why that is and whether it could be made more flexible (or if not then whether it could be more clearly documented).

Hoodathunk commented 5 years ago

jgm hard wired the text variable to Script before we took over. As an expert in VA profile coding, I see no compelling reason to go back... execution efficiency will not substantially improve, commensurate with the effort required.

Tkael commented 5 years ago

After reviewing the VoiceAttack documentation for the vaProxy.GetText(string variableName) method it looks like we do need to have a known variable name to be able to retrieve the stored value from VoiceAttack.

Tkael commented 5 years ago

After giving this a little more thought, I think we need to keep the current design. Changing it (even if it were possible to do so) would break the current functionality which allows multiple parameters (like a voice selection and a script) to be passed to EDDI simultaneously. Untitled

Tkael commented 5 years ago

I think our response to this issue should focus on clarifying the documentation with a few screenshots like the one above.

alterNERDtive commented 5 years ago

The “NOTE” on page 170 of the VoiceAttack documentation clearly says that all that passing of variables stuff is deprecated anyway and just for backwards compatibility.

It could be made more clear in the actual interface, but that’s not an EDDI issue.

richardbuckle commented 5 years ago

Fixed for 3.4.4-b1