/// <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);
        }
Exemplo n.º 2
0
        /// <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>();
        }
Exemplo n.º 3
0
        /// <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;
        }
Exemplo n.º 4
0
    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();
    }