/// <summary> /// finds all parts of the specified type /// </summary> /// <param name="type">the type of parts to find</param> /// <param name="startingPart">what part to start searching at, leave empty for starting at the first part</param> /// <returns>list of weapon parts of type or empy list if none are found</returns> public List <WeaponPart> FindAllWeaponPartsOfTypeRecursively(WeaponPartType type, WeaponPart startingPart = null) { List <WeaponPart> result = new List <WeaponPart>(); if (trigger == null) { return(result); } if (startingPart == null) { startingPart = trigger; } if (startingPart.PartType == type) { result.Add(startingPart); } foreach (WeaponPart child in startingPart.Children) { result.AddRange(FindAllWeaponPartsOfTypeRecursively(type, child)); } return(result); }
/// <summary> /// quick setup for tests /// </summary> /// <param name="name"></param> /// <param name="type"></param> public void TestSetup(string name, WeaponPartType type, WeaponPart _parent) { this.PartName = name; this.PartType = type; ChangeParent(_parent); Children = new List <WeaponPart>(); }
/// <summary> /// sets up the weapon part with name and id /// </summary> /// <param name="name">the name of the part, from items.json</param> /// <param name="id">the id of the part, from items.json</param> public void SetupWeaponPartInformation(string name, string id, WeaponPartType type) { partName = name; partID = id; prefabType = (int)type; weaponPart.PartName = name; weaponPart.PartID = id; weaponPart.PartType = type; }
void CreatePart() { EditorGUILayout.BeginHorizontal(); GUILayout.Label(AssetPreview.GetAssetPreview(newPartPrefab)); EditorGUILayout.BeginVertical(); GUILayout.Label("Create part"); newPartShortCode = EditorGUILayout.TextField("Short code", newPartShortCode); newPartName = EditorGUILayout.TextField("Part name", newPartName); newPartType = (WeaponPartType)EditorGUILayout.EnumPopup("Type", newPartType); newPartPrefab = (GameObject)EditorGUILayout.ObjectField("Prefab", newPartPrefab, typeof(GameObject), false); if (GUILayout.Button("Create part")) { WeaponPart part; switch (newPartType) { case WeaponPartType.Barrel: part = CreateInstance <Barrel>(); break; case WeaponPartType.Body: part = CreateInstance <Body>(); break; case WeaponPartType.Grip: part = CreateInstance <Grip>(); break; case WeaponPartType.Mag: part = CreateInstance <Mag>(); break; case WeaponPartType.Sight: part = CreateInstance <Sight>(); break; case WeaponPartType.Stock: part = CreateInstance <Stock>(); break; case WeaponPartType.Muzzle: part = CreateInstance <Muzzle>(); break; default: part = CreateInstance <WeaponPart>(); break; } part.stortCode = newPartShortCode; part.name = newPartName; part.prefab = newPartPrefab; part.partType = newPartType; part.icon = GetPrefabIcon(newPartPrefab); AssetDatabase.CreateAsset(part, "Assets/Resources/WeaponParts/" + newPartShortCode + ".asset"); partList.Repaint(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); }