| Commit message (Collapse) | Author | Age |
| |
|
|
| |
Reorganize locations, remove a couple unused parameters.
|
| |
|
|
|
|
|
|
|
| |
Use a single indicator with 3 states:
1. green: actively speaking
2. orange: waiting for paging
3. red: up-to-date
Use slightly nicer colors.
|
| |
|
|
|
|
|
|
| |
Press joystick once to start recording, again to stop. When you start
recording, any previous text on the board is cleared.
Add 2 visual indicators: one to indicate speech, another to indicate
that audio is paging.
|
| |
|
|
|
|
|
|
|
|
|
| |
English, Japanese, Chinese, and Korean should look much better now.
French, German, and Spanish look like shit now, because I haven't
figured out how to best make Noto Sans stay within its bounding box.
* Use Noto Sans for most things
* Simplify how we enable unicode blocks & assign fonts to them
* Increase string matching window to 300. Works better in real-world
test.
|
| |
|
|
|
|
| |
When fonts completely fill a slot, any pixel touching a perimeter
border gets stretched due to clamping. To avoid this, add a 2% margin
around each slot.
|
| | |
|
| |
|
|
| |
Also adjust letter positioning to avoid clipping.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Each character is now addressed with 2 bytes instead of 1. The number of
bytes per character is configured in (I think) exactly one spot, so
increasing or decreasing this is trivial. English speakers can just set
it to 1.
The animator seems a little unstable; if I leave my character in a
public for a while, the board becomes unresponsive. Oh well.
* Check in fonts. Did this so users don't have to remember to set the
resolution or to disable mipmaps.
|
| |
|
|
| |
So far only the first file is used.
|
| |
|
|
|
|
|
|
|
| |
Use some of pema99's tricks described in their 'shader-knowledge' repo
(MIT license).
* Text is now readable in mirrors
* GetLetterParameter() now uses a jump table instead of a ton of `if`
statements
|
| |
|
|
|
|
|
| |
It's now twice as wide and half as tall.
* Add small margin to board
* Add simple backplate shader
|
| |
|
|
|
|
|
|
|
|
| |
* Fix bug where facial animations cause already-written letters to
change (!!!)
* Add libtastt.py to hold abstractions layered over libunity
* Fix
* libunity: Fix bug where integer equality state transition conditions
ignored the threshold
* libunity: Support placing animator states at different positions
|
| |
|
|
|
| |
It's a little buggy; it likes to overwrite cells on the board. No idea
why.
|
| |
|
|
| |
Also update README.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Double board size from 6x16 to 8x22
* Reduce parameter bits used (thanks to extra layer of indexing)
* Rename template.anim to template.anim.txt to prevent Unity from
constantly rewriting it
* osc_ctrl.encodeMessage now pads the message so that all empty space is
overwritten
* Delete osc_ctrl.sendMessageCellContinuous. Now that we use a single 'Enable'
bit, this idea is sidelined.
* We can probably achieve the same effect by making TaSTT.shader a little
more clever. For example, if we pass it the current cell number, it could
render a time-based 'fade-in' effect which simulates smooth streaming.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Per the VRC docs, state behaviors may not execute if the total length of
time in the state is < 0.02 seconds. Adding a 2-frame 'Do Nothing'
animation to the top of every layer seems to help with stability.
*shrug*
More cleanup:
* Generate a unique return-home transition for each terminal state
instead of reusing the same one.
* Use globally unique state names in animator.
* All animations are at least 2 frames long.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
... and a bunch of bugfixes:
* Shader is now transparent
* Simplify shader row/column calculation
* Add punctuation to texture
* Fix generate.sh
* Add lorum_ipsum.txt
* Fix how long text is scrolled
* Simplify encoding logic in osc_ctrl.py
|
| |
|
|
|
|
|
|
|
|
|
| |
Add trivial line wrapping algorithm. Words are only added to
a line if they don't put it over the column limit, and only broken if
they alone exceed the column limit.
Extend board size to 16x6, using 145 bits of parameter memory.
Add simple generate.sh script, which generates everything needed to
use the text-to-text board.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apparently the same avatar parameter can only be updated so quickly
before VRChat starts dropping messages. So now we divide the board
into "groups" of 8 characters. Each group can be updated relatively
slowly, but all groups can be updated in parallel. Thus we can update
the board group-by-group, pausing between each group.
* Fix shader bugs - now there are Row05 parameters, and row00 refers
to the topmost row instead of the bottom-most.
* Remove outdated layer/group names files
* Extend osc_ctrl.py to support encoding & sending messages
* Add generate_params.py to handle creating TaSTT_params.asset
* Add generate_utils.py for common code generation facilities &
parameters.
|
| |
|
|
| |
Also generate the full 6 rows instead of just 3
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: added generator for animations and FX layer.
* add generate_animations.sh
* generates an animation for every cell (14*6=72) and every letter (60);
72*60 = 4212 total animations
* add generate_fx.py
* seems to work in-game
* drives every parameter needed
* add {group,cell}_names.txt
* name of every group & cell parameter
* the STT has 72 individual character slots called cells. They are
grouped into 4-character groups to save on parameter bandwidth.
Thus each slot may be indexed with 8 bits.
* add SetLetters.cs
* this thingy looks at each group parameter and uses it to set each
cell parameter. The generated fx layer hooks the script in.
* check in SDK-generated assets as references until code generators are
complete
|
|
|
* initial checkin of shader
* 6 rows and 14 cols
* currently using Noto Sans Mono font
* AFAIK free as in beer & freedom
|