I'm not sure how familiar you are with Ultra Hal and the haptek characters but I'll try to explain to the best that I can. The course was taught ages ago using some of the basic intergrated circuits, as an example for building a clock of which I built a few, when the clock is frist turned on the digits could be turned on in any number of states, all digits could turn on using one digit 0 through 9 so we build a reset circuit and when first turned on the clock reads a certain time, For a 12 hr clock we look at the outputs of all the digits and when 12:59 is reached we reset the clock to all 0's and give the hour digit a pulse to set it to 1:00. So we look at the output or state to determine or set it up for the next state. The first clock I made was with nixie tubes before led readouts not invented yet.
To get back to haptek which is also very old technology, no collision detection, low poly count, problem with joints bending correctly, but on the plus side they do offer fleshy body parts. Anyways haptek compresses a whole series of files using one of the zip formats, when a character is used the files are uncompressed the haptek player is called and appears and the uncompressed files give the information to build the character. The uncompressed files are put into the haptex player folder under temp and can be opened with notepad for smaller files and wordpad for large documents. I was interested in the .phy files which delt with the physics used for fleshy body parts and can make changes.
Lately I began looking at the .def file and again looked at what I call their state machine. We can call animations such as:
\setswitch [switch= hands_on_hips state= start]
\Load [file= [data/standard/safe_moods/Hap_Happy.hap]]
\setswitch [switch= wipe_tear state= start ]
\setswitch [switch= weep_sad state= start ]
\setswitch [switch= hand_clasp_sad state= start]
\setswitch [switch= big_sigh_sad state= start ]
\setswitch [switch= hide_face_sad state= start ]
\setswitch [switch= arms_cross_sad state= start]
\setswitch [switch= shrug_sad state= start ]
\setswitch [switch= lookleft state= a ]
\setswitch [switch= lookright state= a ]
\setswitch [switch= lookdown state= a ]
\setswitch [switch= lookup state= a ]
\setswitch [switch= grr state= a ]
\setswitch [switch= grr state= off ]
\setswitch [switch= winkright state= a ]
\setswitch [switch= winkleft state= a ]
\setswitch [switch= coyblink state= a ]
\setswitch [switch= yawn state= a ]
\setswitch [switch= shake_fist state= a ]
\setswitch [switch= armattax state= off ]
\setswitch [switch= armattax state= a ]
\setswitch [switch= walk3 state= off ]
\setswitch [switch= walk3 state= 1 ]
\setswitch [switch= h_gest_03 state= a ]
\setswitch [switch= considering state= start ]
\setswitch [switch= inspect_nail state= start ]
\setswitch [switch= arms_crossed state= start ]
\setswitch [switch= hand_thru_hair state= a1 ]
\setswitch [switch= arm_swing state= a ]
\setswitch [switch= hands_on_hips state= start]
Which end up running the animations and returning her to the home position. Hope I've been able to help and sorry for the length
Carl2