public override bool doTool() { bool done = false; AssetsController.addSingleAsset(assetsInformation[index].category, filename, destinyAssetName, true); // Dirty fix? string selectedAsset = destinyAssetName == null ? (new FileInfo(filename)).FullName : destinyAssetName; // If a file was selected if (selectedAsset != null) { // Take the index of the selected asset string[] assetFilenames = AssetsController.getAssetFilenames(assetsInformation[index].category, assetsInformation[index].filter); string[] assetPaths = AssetsController.getAssetsList(assetsInformation[index].category, assetsInformation[index].filter); int assetIndex = -1; for (int i = 0; i < assetFilenames.Length; i++) { if (assetFilenames[i].Equals(selectedAsset)) { assetIndex = i; } } // check if the asset is "standright" or "standleft" in order to modify the attr assetNecessary // for the assetInformation if (assetsInformation[index].name.Equals("standright")) { // if "standright" asset is necessary, set the "standleft" as not necessary if (assetsInformation[index].assetNecessary) { for (int i = 0; i < assetsInformation.Length; i++) { if (assetsInformation[i].name.Equals("standleft")) { assetsInformation[i].assetNecessary = false; } } } //if is not art necessary and is 3rd person game, look for "standleft", if this asset is // not necessary, set "standright as necessary" else if (!Controller.getInstance().isPlayTransparent()) { for (int i = 0; i < assetsInformation.Length; i++) { if (assetsInformation[i].name.Equals("standleft")) { assetsInformation[index].assetNecessary = true; assetsInformation[i].assetNecessary = false; } } } } else if (assetsInformation[index].name.Equals("standleft")) { // if "standleft" asset is necessary, set the "standright" as not necessary if (assetsInformation[index].assetNecessary) { for (int i = 0; i < assetsInformation.Length; i++) { assetsInformation[i].assetNecessary = false; } } //if is not art necessary and is 3rd person game, look for "standright", if this asset is // not necessary, set "standright as necessary" else if (!Controller.getInstance().isPlayTransparent()) { for (int i = 0; i < assetsInformation.Length; i++) { if (assetsInformation[i].name.Equals("standright")) { assetsInformation[index].assetNecessary = true; assetsInformation[i].assetNecessary = false; } } } } //The empty animation is, in fact, a special asset. When this asset is in an animation, it is considered as animation asset. // For this reason,at this point, assetIndex is = -1. So, if animation is emptyAnimation, change the path in addAsset method bool changeFilter = false; string specialPath = AssetsController.CATEGORY_SPECIAL_ASSETS + "/" + "EmptyAnimation.eaa"; if (filename.Contains("EmptyAnimation")) { changeFilter = true; } resources.addAsset(assetsInformation[index].name, changeFilter ? specialPath : assetPaths[assetIndex]); done = true; } return(done); }