loupiottes/DMX-2.0/UniversDMX.cs

100 lines
No EOL
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Xml;
namespace DMX2
{
public class UniversDMX
{
static int nb=1;
public UniversDMX ()
{
Nom = "Univers DMX n°" + nb++.ToString ();
for (int i = 0; i<_dimmers.Length; i++)
{
_dimmers[i].fonctionTransfert = FTransfer.lineaire;
_dimmers[i].param1 = 100;
}
}
Dimmer[] _dimmers = new Dimmer[512];
bool[] allumageForce = new bool[512];
public bool[] AllumageForce {
get {
return allumageForce;
}
}
public string Nom;
public enum FTransfer {
lineaire,
log,
exp
}
public struct Dimmer {
public Circuit circuitAssocié;
public FTransfer fonctionTransfert;
public float param1; // Paramètres pour fonction de transfert
public float param2;
}
public Dimmer[] Dimmers {
get
{
return _dimmers;
}
}
public void CalculUnivers(byte[] valeurs, int offset, int count)
{
Dimmer g;
Debug.Assert(valeurs.Length == _dimmers.Length);
for(int i = 0 ; i<count; i++)
{
if(allumageForce[i]) {
valeurs[i+offset] = 255;
break;
}
g= _dimmers[i];
switch (g.fonctionTransfert) {
case FTransfer.lineaire:
if(g.circuitAssocié !=null)
valeurs[i+offset] = (byte)( g.circuitAssocié.ValeurCourante * g.param1 /100);
else
valeurs[i+offset] = 0;
break;
case FTransfer.log:
break;
case FTransfer.exp:
break;
default:
throw new ArgumentOutOfRangeException ();
}
}
}
public XmlElement Save ()
{
return null;
}
public static UniversDMX Load (XmlElement doc)
{
return null;
}
}
}