Pular para o conteúdo

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 é 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();
}

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:

  1. As configurações do usuário são atualizadas para o frame
  2. As cores são obtidas para os buffers de pixel do dispositivo e sub-dispositivos
  3. Os Callbacks on*Change são chamados em ordem
  4. Render é chamado
  • Nota: o tempo padrão entre frames é de 30ms
export function Render()
{
// Do Stuff ...
SendColors()
}

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();
}

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 Functions
export 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çãoDescrição
onBrightnessChanged()Acionado quando o controle deslizante de brilho principal do dispositivo é movido.