public static bool GetTypeKind(IEnumerable <IFSharpAttribute> attributes, out PartKind fSharpPartKind) { foreach (var attr in attributes) { var attrIds = attr.LongIdentifier.Identifiers; if (attrIds.IsEmpty) { continue; } switch (attrIds.LastOrDefault()?.GetText().DropAttributeSuffix()) { case Interface: { fSharpPartKind = PartKind.Interface; return(true); } case AbstractClass: case Sealed: case Class: { fSharpPartKind = PartKind.Class; return(true); } case Struct: { fSharpPartKind = PartKind.Struct; return(true); } } } fSharpPartKind = default; return(false); }
public void Setup(Unit unit) { for (int i = 0; i < EnumHelper <PartKind> .count; i++) { PartKind kind = EnumHelper <PartKind> .values[i]; PartDef def = partDefs[kind]; PartData data = parts[kind]; data.kind = kind; data.hitPoints = def.hitPoints; SkinnedMeshRenderer rend = def.rend.SetupWithSelf(transform); var rigidRend = unit.parts.rigidRoot.FindDeep(rend.name).GetComponent <SkinnedMeshRenderer>(); SetupNode(rend, data.attached); SetupNode(rigidRend, data.detached); // Add a rigid to not count as static collider // Don't assign since it should never not be kinematic Rigidbody attachedRigid = data.attached.rootBone.gameObject.AddComponent <Rigidbody>(); attachedRigid.isKinematic = true; attachedRigid.useGravity = false; data.detached.rigid = data.detached.rootBone.gameObject.AddComponent <Rigidbody>(); // Detached parts needs to be in root, since parts are childed under eachother data.detachedParent = rigidRend.transform.parent; data.detached.rootBone.parent = data.detachedParent; attachedCollToPart[data.attached.coll] = data; } ReattachAll(); }
public LinePart(string value, PartKind kind) { Value = value; Kind = kind; }
public PartDef GetPartDefForKind(PartKind kind) { return(partDefs[kind]); }