Runtime
O runtime de um plugin é composto por três partes. Initialize -> Render Loop -> Shutdown
A única exceção a esse padrão é o uso de Callbacks on*Change, que são processados no início de um frame antes de a função render ser chamada.
”Initialize”
Seção intitulada “”Initialize””Initialize é executado uma vez quando um dispositivo é [re]conectado e sempre que o toggle de streaming é habilitado na página de configuração do dispositivo. Você vai querer tratar quaisquer tarefas de inicialização aqui.
- Nota: se o dispositivo tiver algum processo conflitante em execução, a inicialização vai aguardar até que eles sejam encerrados ou o usuário ignore a verificação.
export function Initialize(){ // Do Stuff ... SendInitPacket1(); SendInitPacket2(); SetSoftwareControl();}Render Loop
Seção intitulada “Render Loop”O Render Loop é o núcleo do plugin e é onde as mudanças de cor e outras funções de runtime são tratadas.
O processo de cada frame é o seguinte:
- As configurações do usuário são atualizadas para o frame
- As cores são obtidas para os buffers de pixel do dispositivo e sub-dispositivos
- Os Callbacks on*Change são chamados em ordem
- Render é chamado
- Nota: o tempo padrão entre frames é de 30ms
export function Render(){ // Do Stuff ... SendColors()}”Shutdown”
Seção intitulada “”Shutdown””Shutdown é chamado quando o SignalRGB encerra de forma correta e sempre que o toggle de streaming é desabilitado na página de configuração do dispositivo. Você vai querer retornar o dispositivo ao seu modo de hardware aqui, se necessário.
export function Shutdown(){ // Do Stuff ... SetHardwareControl();
}Callbacks on*Changed
Seção intitulada “Callbacks on*Changed”Essas funções são chamadas sempre que um Controle do Usuário é alterado. Elas são acionadas imediatamente antes de a função Render() ser chamada, na ordem em que ocorreram.
- Nota: Seus nomes devem seguir o formato: “on[nome da propriedade do Controle do Usuário]Changed()”. Isso diferencia maiúsculas de minúsculas.
// User Control from ControllableParameters(){"property":"dpi1", "label":"DPI","step":"50", "type":"number","min":"200", "max":"18000","default":"800"},
// DPI Functionsexport function ondpi1Changed(){
setDpi(dpi1)
}
function setDpi(dpi){ // Guard clause to prevent changing dpi if the user doesn't have this boolean toggled on if(!SettingControl){ return; }
device.log(`Setting Dpi to ${dpi}`)
Corsair_Set(CORSAIR_DPI_X,dpi) Corsair_Set(CORSAIR_DPI_Y,dpi)
device.log(`DPI x is now ${Corsair_Get(CORSAIR_DPI_X)}`) device.log(`DPI y is now ${Corsair_Get(CORSAIR_DPI_Y)}`)
}Os Callbacks integrados são os seguintes:
| Nome da Função | Descrição |
|---|---|
| onBrightnessChanged() | Acionado quando o controle deslizante de brilho principal do dispositivo é movido. |