- td.AddField("frames", FieldDescription(((char *)&ca.frames) - ((char *)&ca), frameId, true, true));
+ TypeDescription &td(TypeDescription::CreateOrGet("ComplexAnimation"));
+ td.SetDescription("Complex animation type that supports per-frame disposition and non-linear sprite offset selection.");
+ td.SetConstructor(&Construct);
+ td.SetSize(sizeof(ComplexAnimation));
+ td.AddSupertype(animationId, ((char *)a) - ((char *)&ca));
+
+ Animation::AddFields(td, ca, ((char *)a) - ((char *)&ca), boolId, numberId, spriteId);
+ td.AddField("frames", FieldDescription(((char *)&ca.frames) - ((char *)&ca), frameId).SetReferenced().SetAggregate().SetDescription("a variable number of frames"));