예제 #1
0
 /// <summary>
 /// Master program
 /// </summary>
 public void CreateActorPool(ActorPoolData data)
 {
     if (data != null)
     {
         InitialiseActorPool(data);
     }
     else
     {
         Debug.LogError("Invalid ActorPoolData (Null)");
     }
 }
예제 #2
0
    /// <summary>
    /// Creates an actorPool and populates with ActorDraft.SO's.
    /// Note: data checked by parent method
    /// </summary>
    private void InitialiseActorPool(ActorPoolData data)
    {
        string pathPool, pathDraft;
        //
        // - - - ActorPool
        //
        ActorPool poolAsset = ScriptableObject.CreateInstance <ActorPool>();

        //path with unique asset name for each
        pathPool = string.Format("Assets/SO/Tools/ActorPools/{0}.asset", data.poolName);
        //how many actors required to populate pool
        int numToCreate = numOfActors;

        poolAsset.nameSet     = data.nameSet;
        poolAsset.tag         = data.tag;
        poolAsset.side        = data.side;
        poolAsset.author      = data.author;
        poolAsset.dateCreated = data.dateCreated;
        //
        // - - - ActorDrafts
        //
        for (int i = 0; i < numToCreate; i++)
        {
            //create SO object
            ActorDraft actorAsset = ScriptableObject.CreateInstance <ActorDraft>();
            //overwrite default data
            UpdateActorDraft(poolAsset, actorAsset, i);
            //path with unique asset name for each (poolName + counter)
            pathDraft = string.Format("Assets/SO/Tools/ActorDrafts/{0}{1}.asset", data.poolName, i);
            //delete any existing asset at the same location (if same named asset presnet, new asset won't overwrite)
            AssetDatabase.DeleteAsset(pathDraft);
            //Add asset to file and give it a name ('actor')
            AssetDatabase.CreateAsset(actorAsset, pathDraft);
        }
        //delete any existing asset at the same location (if same named asset presnet, new asset won't overwrite)
        AssetDatabase.DeleteAsset(pathPool);
        //initialise pool
        AssetDatabase.CreateAsset(poolAsset, pathPool);
        //Save assets to disk
        AssetDatabase.SaveAssets();
    }