Lovense Integration
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 1234]
 CFLovenseAdapterDescriptionContainer holding (mostly) raw HTTP request json data for a Lovense App instance in the local network
 CFLovenseCommandDelayTimersThese timers define the minimum update frequencies for the respective commands.
There's a global set of these used when commands are broadcasted and each toy has their own set of these used when commands are sent to a specific toy.
Commands cannot be sent while their respective delay timer is active.
This is necessary as to not overwhelm the toys with commands
 CFLovenseGetAdaptersResponseDataContainer holding (mostly) raw HTTP request json data from ILovenseAdapter::TryGetAdapterData() response
 CFLovenseGetToysResponseDataContainer holding (mostly) raw HTTP request json data from ILovenseAdapter::GetToys() response
 CFLovenseManagerThis class defines the plugin interface. Use FLovenseManager::Get() to get the global manager instance
 CFLovensePatternStructure holding all necessary information for a pattern command
 CFLovenseToyDescriptionContainer holding (mostly) raw HTTP request json data for a Lovense Toy instance
 CILovenseAdapterAbstract base class for Lovense adapters.
These adapters handle the communication with the Lovense API's and hold the toy objects for the toys which are connected to the respective Lovense App.
Each Lovense API+Platform combination has different requirements, so they get their own adapter implementation.
Multiple adapters can be active at the same time, one for each Lovense App instance found in the local network
 CLovenseConnectAdapterBaseBase class for all Lovense Connect adapters
 CLovenseConnectDesktopAdapterAdapter representing the Lovense Connect pc app
 CLovenseConnectMobileAdapterAbstract base class for Lovense Connect mobile adapters
 CLovenseConnectAndroidAdapterAdapter representing the Lovense Connect android app
 CLovenseConnectIOSAdapterAdapter representing the Lovense Connect iOS app
 CLovenseRemoteAdapterBaseBase class for all Lovense Remote adapters
 CLovenseRemoteDesktopAdapterAdapter representing the Lovense Remote pc app
 CLovenseRemoteMobileAdapterAdapter representing the Lovense Remote mobile apps (android + iOS)
 CLovenseTestAdapterDummy adapter used to check if a FLovenseAdapterDescription has valid data
 CIModuleInterface
 CFLovenseIntegrationModuleLovense Integration Module class. Use FLovenseIntegrationModule::Get() to easily get the module instance
 CModuleRules
 CLovenseIntegration
 CTSharedFromThis
 CLovenseToyEventsWebSocketHandler
 CUActorComponent
 CULovenseToyAnimationControlComponentThis component calculates Lovense command speeds based on the average bone movement of N bones on N skeletal mesh components and broadcasts commands to all connected toys.
The commands that are sent are ELovenseCommand::Pattern for Lovense Remote and ELovenseCommand::Vibrate, ELovenseCommand::RotateClockwise, ELovenseCommand::RotateAntiClockwise, ELovenseCommand::AirAuto for Lovense Connect.
For ELovenseCommand::Pattern, a pattern will be generated every 4 seconds based on animation data that gets passed in via getAnimationDataDelegate. This mode is called "Pattern Generation".
For the Lovense Connect commands, we average the physics linear velocities of all bones in real time. This mode is called "Realtime Evaluation"
 CUBlueprintFunctionLibrary
 CULovenseFunctionLibraryBlueprint exposed wrapper library for the Lovense Manager
 CUObject
 CULovenseEventsObject holding global Lovense Integration delegates
 CULovenseToyUObject representing a Lovense Toy