Brug af Components
Aktivering af Component-systemet i dit plugin sker i 2 trin.
- Aktivering af Component-brugergrænsefladen
- Hentning af farveværdier fra brugerdefinerede Components
Plugin-opsætning
Sektion kaldt “Plugin-opsætning”Det første trin til at aktivere Component-brugergrænsefladen er at definere enhedens kanaler for SignalRGB. Vi bruger Corsair Node Pro som eksempel her. Begynd med at oprette et array der beskriver vores kanaler. Derefter sender vi disse oplysninger i Initialize-kommandoen til SignalRGBs backend, så kanalerne oprettes, inden vi forsøger at rendere noget.
const DeviceMaxLedLimit = 204;//Channel Name, Led Limitvar ChannelArray = [ ["Channel 1", 204], ["Channel 2", 204],]
function SetupChannels(){ device.SetLedLimit(DeviceMaxLedLimit); for(let i = 0; i < ChannelArray.length; i++){ device.addChannel(ChannelArray[i][0],ChannelArray[i][1]); }}I ovenstående kode kan du se at vi opretter et todimensionalt array til vores kanaler, hvor hvert element indeholder kanalnavnet og dets LED-grænse. I SetupChannels() sætter vi først den samlede LED-grænse og kalder derefter iterativt device.addChannel for hvert element i vores array.
Denne løkke kan også køres direkte uden arrayet, hvis du vil hardcode det.
function SetupChannels(){ device.SetLedLimit(204); device.addChannel("Channel 1",204); device.addChannel("Channel 2",204);}Kald SetupChannels-funktionen inden for Initialize for at fuldføre enhedsinitialisering.
export function Initialize(){ SetupChannels()}Gem filændringerne og dine kanaler vil vises på enhedssiden. Dernæst beskæftiger vi os med at hente farveværdier fra valgte Components.

Hentning af fulde kanalfarvere
Sektion kaldt “Hentning af fulde kanalfarvere”Efter opsætning af kanalerne skal vi hente farver fra dem — det er praktisk at have kanalnavnene gemt i et array her.
Den generelle idé er:
For hver kanal -> For hver Component på kanalen -> getColors()
Dette er alt indkapslet i funktionen device.channel().getColors() for dig. Corsair Node Pro sender sine farvedata kanal for kanal, så vi ønsker at holde dataene “adskilt” for at forenkle behandlingen.
Du vil bemærke et ekstra element her: Vi kontrollerer LedCount() for kanalen, og hvis den returnerer 0, lader vi kanalerne pulsere for brugeren. Dette er en nyttig indikation at kanalerne endnu skal sættes op.
Nedenfor finder du kodeeksemplerne for et normalt brugstilfælde, hardcodet og uden kanal-puls-kontrollerne.
function SendChannel(Channel){ let ChannelLedCount = device.channel(ChannelArray[Channel][0]).LedCount(); let ColorData = []
if(device.getLedCount() == 0){ ChannelLedCount = 80; let pulseColor = device.getChannelPulseColor(ChannelArray[Channel][0], ChannelLedCount); ColorData = device.createColorArray(pulseColor, ChannelLedCount, "Seperate"); }else{ ColorData = device.channel(ChannelArray[Channel][0]).getColors("Seperate"); }
let RedChannelData = ColorData[0] let GreenChannelData = ColorData[1] let BlueChannelData = ColorData[2] //...}function SendChannel1(){ let ChannelLedCount = device.channel("Channel 1").LedCount(); let ColorData = []
if(device.getLedCount() == 0){ ChannelLedCount = 80; let pulseColor = device.getChannelPulseColor("Channel 1", ChannelLedCount); ColorData = device.createColorArray(pulseColor, ChannelLedCount, "Seperate"); }else{ ColorData = device.channel("Channel 1").getColors("Seperate"); }
let RedChannelData = ColorData[0] let GreenChannelData = ColorData[1] let BlueChannelData = ColorData[2] //...}SendChannel(Channel){ let ColorData = [] ColorData = device.channel(ChannelArray[Channel][0]).getColors("Seperate");
let RedChannelData = ColorData[0] let GreenChannelData = ColorData[1] let BlueChannelData = ColorData[2] //...}Til sidst vil vi blot kalde denne funktion i render-løkken. Den nedre del af SendChannel-funktionen indeholder koden til konvertering af farve-arrays til pakker og afsendelse til enheden. Denne del er enhedsspecifik og skal du selv finde frem til ved reverse engineering!
export function Render(){ SendChannel(0); device.pause(1);
SendChannel(1); device.pause(1);
SubmitLightingColors();}Interaktion med individuelle Components
Sektion kaldt “Interaktion med individuelle Components”Nogle enheder er særlige og afviger fra standarden, eller du ønsker at gøre noget nyt i dit plugin og skal interagere med individuelle Components. I disse tilfælde kan vi ikke bruge device.channel().getColors() og skal i stedet selv iterere over individuelle Components.
Til dette bruger vi device.channel().getComponentNames() til at få alle Component-ID’er og itererer derefter igennem dem med device.channel().getComponentColors() for at få individuelle farve-arrays.
Det følgende eksempel sammenkæder blot de individuelle arrays, men du kan gøre alt hvad du har brug for med dem imellem.
let components = device.channel("Channel 1").getComponentNames(); for(let i = 0; i < components.length;i++){ let ComponentColors = device.channel("Channel 1").getComponentColors(components[i]); RGBData = RGBData.concat(ComponentColors) }Hvis du virkelig har brug for at gå i detaljer i dit plugin, kan du bruge device.channel.getComponent().