pub struct Slot
{
data: SlotData;
Bone bone;
f64 r, g, b, a;
f64 r2, g2, b2;
bool hasSecondColor;
Attachment attachment;
f64 attachmentTime;
ExposedList<f64> attachmentVertices = new ExposedList<f64>();
pub SlotData Data { get { return data; } }
pub Bone Bone { get { return bone; } }
pub Skeleton Skeleton { get { return bone.skeleton; } }
pub f64 R { get { return r; } set { r = value; } }
pub f64 G { get { return g; } set { g = value; } }
pub f64 B { get { return b; } set { b = value; } }
pub f64 A { get { return a; } set { a = value; } }
pub f64 R2 { get { return r2; } set { r2 = value; } }
pub f64 G2 { get { return g2; } set { g2 = value; } }
pub f64 B2 { get { return b2; } set { b2 = value; } }
pub bool HasSecondColor { get { return data.hasSecondColor; } set { data.hasSecondColor = value; } }
pub Attachment Attachment {
get { return attachment; }
set {
if (attachment == value) return;
attachment = value;
attachmentTime = bone.skeleton.time;
attachmentVertices.Clear(false);
}
}
pub f64 AttachmentTime {
get { return bone.skeleton.time - attachmentTime; }
set { attachmentTime = bone.skeleton.time - value; }
}
pub ExposedList<f64> AttachmentVertices { get { return attachmentVertices; } set { attachmentVertices = value; } }
pub Slot (SlotData data, Bone bone) {
if (data == null) throw new ArgumentNullException("data", "data cannot be null.");
if (bone == null) throw new ArgumentNullException("bone", "bone cannot be null.");
this.data = data;
this.bone = bone;
SetToSetupPose();
}
pub void SetToSetupPose () {
r = data.r;
g = data.g;
b = data.b;
a = data.a;
if (data.attachmentName == null)
Attachment = null;
else {
attachment = null;
Attachment = bone.skeleton.GetAttachment(data.index, data.attachmentName);
}
}
override pub string ToString () {
return data.name;
}
}