FlatElementImage construct_flat_image(string aName, int aDepth) { if (mLoader == null) { throw new UnityException("start screen bundle null"); } CharacterData.ImageSizeOffsetAnimationData sizing; FlatElementImage r; if (aName != "BACKGROUND") //this is stupid and you should make background part of the dump.. { sizing = mLoader.Sizes.find_static_element(aName); try { r = new FlatElementImage(mLoader.Images.staticElements[aName], sizing.Size, aDepth); } catch (System.Exception e) { Debug.Log("messed up on " + aName); throw e; } } else { var backSize = mLoader.Sizes.mBackSize; sizing = new CharacterData.ImageSizeOffsetAnimationData(); sizing.Offset = new Vector2(0, 0); sizing.Size = backSize; r = new FlatElementImage(mLoader.Images.background1, backSize, aDepth); } r.HardPosition = mRTCamera.get_point(Vector3.zero) + sizing.Offset; return(r); }
public void load_images(CharacterLoader aCharacter, List <FlatElementImage> aImages, int startingDepth, string aPrefix, int aBegin = 0) { //last to first stupid hack.. List <CharacterData.ImageSizeOffsetAnimationData> dataList = new List <CharacterData.ImageSizeOffsetAnimationData>(); List <string> nameList = new List <string>(); for (int i = aBegin; i < 100; i++) { string name = aPrefix + i; CharacterData.ImageSizeOffsetAnimationData data = aCharacter.Sizes.find_static_element(name); if (data == null) //sometimes there are zero prefixes { name = aPrefix + "0" + i; data = aCharacter.Sizes.find_static_element(name); } if (data == null) { break; } //Debug.Log("loading " + name); dataList.Add(data); nameList.Add(name); } for (int i = dataList.Count - 1; i >= 0; i--) { Texture2D tex = aCharacter.Images.staticElements[nameList[i]]; //if(tex == null) //throw new UnityException("data exists for " + data.Name + " but texture does not"); var img = new FlatElementImage(tex, dataList[i].Size, startingDepth + aImages.Count); //fly in //img.HardPosition = random_position(); //img.SoftPosition = dataList[i].Offset; //fade in img.HardColor = GameConstants.UiWhiteTransparent; img.SoftColor = GameConstants.UiWhite; img.HardPosition = dataList[i].Offset; aImages.Add(img); var fx = AnimationEffects.get_effect(dataList[i].AnimationEffect); fx = null; //TODO if (fx != null) { img.Events.add_event( fx , 0); } //dataList[i].AnimationEffect } }
static CharacterData.CharacterDataSizes create_main_character(Object aMain, IEnumerable <Object> aObjects) { string output = ""; List <Object> valueList = aObjects.ToList(); CharacterData.CharacterDataSizes cd = new CharacterData.CharacterDataSizes(); cd.mName = aMain.name; //first process <limb>_B images IEnumerable <Object> bImages = valueList.Where(f => (sLimbs.Contains(strip_to_root(f)) && is_B_image(f))).OrderBy(f => strip_to_root(f)); //int[] desiredSizes = new int[]{1,1,1,2,2,1,1,2,2,4,3}; int[] desiredSizes = new int[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 3 }; //this one has limb ends and head end int counter = 0; foreach (Object f in bImages) { //Debug.Log ("processing " + f.name); Texture2D limbProcessing = f as Texture2D; set_texture_for_reading(limbProcessing); cd.mMountingPositions.Add(get_limb_positions_in_order(limbProcessing)); if (desiredSizes[counter] == 2) { foreach (var e in cd.mMountingPositions.Last()) { //Debug.Log(e); } } if (desiredSizes[counter] != cd.mMountingPositions.Last().Count) { Debug.Log("issue with " + f.name + " need " + desiredSizes[counter] + " found " + cd.mMountingPositions.Last().Count); } counter++; } //record <limb>_A image sizes IEnumerable <Object> aImages = aObjects.Where(f => (sLimbs.Contains(strip_to_root(f)) && !is_B_image(f))).OrderBy(f => f.name); foreach (Object f in aImages) { Texture2D tex = f as Texture2D; set_texture_for_reading(tex); cd.mLimbSizes.Add(new Vector2(((Texture2D)f).width, ((Texture2D)f).height)); set_texture_for_render(tex); } //parse POSITIONS.png try{ Object positionImage = valueList.Single(f => strip_to_root(f) == "POSITIONS"); Texture2D bgProcessing = positionImage as Texture2D; set_texture_for_reading(bgProcessing); try{ cd.mOffset = get_character_position(bgProcessing); } catch { Debug.Log("no character position found, this must be the sunset bundle"); } //EFFECTS TextAsset effects; try{ effects = valueList.Single(f => strip_to_root(f) == "EFFECTS") as TextAsset; } catch { effects = null; } //BACKGROUND STUFF var staticElts = valueList.Where( f => strip_to_root(f).StartsWith("FG") || strip_to_root(f).StartsWith("BG") || strip_to_root(f).StartsWith("CUTSCENE") || strip_to_root(f).StartsWith("GIFT_") || strip_to_root(f).StartsWith("SUNSET_") || //special for sunset, we will read, font, sun, and score label from another bundle strip_to_root(f).StartsWith("START_") ); foreach (var e in staticElts) { Debug.Log(e.name); } foreach (var img in staticElts) { CharacterData.ImageSizeOffsetAnimationData isoad = new CharacterData.ImageSizeOffsetAnimationData(); if (effects != null) { isoad.AnimationEffect = find_effect_string(effects, img.name); } isoad.Name = img.name; set_texture_for_reading((Texture2D)img); isoad.Size = new Vector2(((Texture2D)img).width, ((Texture2D)img).height); isoad.Offset = find_position(bgProcessing, img.name); set_texture_for_render((Texture2D)img); cd.mStaticElements.Add(isoad); } //old background parsing IEnumerable <Object> bgImage = valueList.Where(f => strip_to_root(f) == "BACKGROUND"); foreach (Object f in bgImage) { set_texture_for_reading((Texture2D)f); cd.mBackSize = (new Vector2(((Texture2D)f).width, ((Texture2D)f).height)); } if (bgImage.Count() > 0) { set_texture_for_render((Texture2D)bgImage.First()); } }catch (UnityException e) { Debug.Log("problem with POSITIONS, probably mini character " + e.StackTrace); } //package TextAsset cdtxt = serialize_cd(cd); IEnumerable <Object> package = aObjects.Where(f => !is_B_image(f)).Where(f => strip_to_root(f) != "POSITIONS");//.Where(f => strip_to_root(f) != "AUDIO"); List <Object> assets = new List <Object>(); foreach (Object f in package) { assets.Add(f); } AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(cdtxt)); cdtxt = (TextAsset)AssetDatabase.LoadAssetAtPath("Assets/CD.txt", typeof(TextAsset)); assets.Add(cdtxt); //Debug.Log(cdtxt.text); #if UNITY_XBOXONE BuildPipeline.BuildAssetBundle(aMain, assets.ToArray(), "Assets/Resources/XB1" + aMain.name + ".unity3d", BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, EditorUserBuildSettings.activeBuildTarget); //, BuildOptions.UncompressedAssetBundle);//, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets); #else BuildPipeline.BuildAssetBundle(aMain, assets.ToArray(), "Assets/Resources/" + aMain.name + ".unity3d", BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, EditorUserBuildSettings.activeBuildTarget); //, BuildOptions.UncompressedAssetBundle);//, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets); #endif //Debug.Log(output); return(cd); }
//TODO DELETE //[MenuItem("Custom/Construct Graveyard Bundle")] static void Graveyard() { if (Selection.activeObject.name != "999") { Debug.Log("graveyard not selected"); return; } List <Object> valueList = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets).ToList(); CharacterData.CharacterDataSizes cd = new CharacterData.CharacterDataSizes(); cd.mName = Selection.activeObject.name; //parse POSITIONS.png //TODO special colors here Object positionImage = valueList.Single(f => strip_to_root(f) == "POSITIONS"); Texture2D bgProcessing = positionImage as Texture2D; set_texture_for_reading(bgProcessing); //new parsing TextAsset effects; try{ effects = valueList.Single(f => strip_to_root(f) == "EFFECTS") as TextAsset; } catch { effects = null; } var staticElts = valueList.Where(f => strip_to_root(f).StartsWith("FG") || strip_to_root(f).StartsWith("BG") || strip_to_root(f).StartsWith("CUTSCENE")); //foreach(var e in staticElts) Debug.Log (e.name); foreach (var img in staticElts) { CharacterData.ImageSizeOffsetAnimationData isoad = new CharacterData.ImageSizeOffsetAnimationData(); if (effects != null) { isoad.AnimationEffect = find_effect_string(effects, img.name); } isoad.Name = img.name; set_texture_for_reading((Texture2D)img); isoad.Size = new Vector2(((Texture2D)img).width, ((Texture2D)img).height); isoad.Offset = find_position(bgProcessing, img.name); set_texture_for_render((Texture2D)img); cd.mStaticElements.Add(isoad); } //old backgronud parsing IEnumerable <Object> bgImage = valueList.Where(f => strip_to_root(f) == "BACKGROUND"); foreach (Object f in bgImage) { set_texture_for_reading((Texture2D)f); cd.mBackSize = (new Vector2(((Texture2D)f).width, ((Texture2D)f).height)); } set_texture_for_render((Texture2D)bgImage.First()); //set audio to 2D foreach (Object f in valueList.Where(g => strip_to_root(g) == "AUDIO")) { set_audio_for_2D((AudioClip)f); } //package TextAsset cdtxt = serialize_cd(cd); IEnumerable <Object> package = valueList.Where(f => !is_B_image(f)).Where(f => strip_to_root(f) != "POSITIONS"); //.Where(f => strip_to_root(f) != "AUDIO"); List <Object> assets = new List <Object>(); foreach (Object f in package) { assets.Add(f); } AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(cdtxt)); cdtxt = (TextAsset)AssetDatabase.LoadAssetAtPath("Assets/CD.txt", typeof(TextAsset)); assets.Add(cdtxt); BuildPipeline.BuildAssetBundle(Selection.activeObject, assets.ToArray(), "Assets/Resources/" + cd.mName + ".unity3d", BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, EditorUserBuildSettings.activeBuildTarget); //, BuildOptions.UncompressedAssetBundle);//, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets); }