public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <AudioData> availData = convert.Perform <AudioData>().ToList(); List <AudioData> createDataSource = null; // Match objects foreach (AudioData baseRes in availData) { if (convert.IsObjectHandled(baseRes)) { continue; } // Find target Resource matching the source Sound targetRes = this.FindMatchingResources <AudioData, Sound>(baseRes, IsMatch) .OrderBy(sound => sound.Data.Count) .FirstOrDefault(); if (targetRes != null) { convert.AddResult(targetRes); } else if (convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { if (createDataSource == null) { createDataSource = new List <AudioData>(); } createDataSource.Add(baseRes); } else { // Can't handle this AudioData continue; } finishConvertOp = true; convert.MarkObjectHandled(baseRes); } // Create objects if (createDataSource != null) { List <ContentRef <Sound> > createdSounds = EditorActions.AudioDataToSound.CreateMultipleFromAudioData(createDataSource.Ref()); foreach (ContentRef <Sound> sound in createdSounds) { convert.AddResult(sound.Res); } } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <Sprite> availData = convert.Perform <Sprite>().ToList(); foreach (var sprite in availData) { GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); AdvSpriteRenderer renderer = convert.Result.OfType <AdvSpriteRenderer>().FirstOrDefault(); if (renderer == null) { renderer = new AdvSpriteRenderer(); renderer.Sprite = sprite; results.Add(renderer); } convert.SuggestResultName(renderer, sprite.Name); convert.MarkObjectHandled(sprite); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { List<object> results = new List<object>(); List<Font> availData = convert.Perform<Font>().ToList(); // Generate objects foreach (Font font in availData) { if (convert.IsObjectHandled(font)) continue; GameObject gameobj = convert.Result.OfType<GameObject>().FirstOrDefault(); TextRenderer renderer = convert.Result.OfType<TextRenderer>().FirstOrDefault(); if (renderer == null && gameobj != null) renderer = gameobj.GetComponent<TextRenderer>(); if (renderer == null) renderer = new TextRenderer(); convert.SuggestResultName(renderer, font.Name); if (!renderer.Text.Fonts.Contains(font)) { var fonts = renderer.Text.Fonts.ToList(); if (fonts[0] == Font.GenericMonospace10) fonts.RemoveAt(0); fonts.Add(font); renderer.Text.Fonts = fonts.ToArray(); renderer.Text.ApplySource(); } results.Add(renderer); convert.MarkObjectHandled(font); } convert.AddResult(results); return false; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <Pixmap> availData = convert.Perform <Pixmap>().ToList(); // Generate objects foreach (Pixmap baseRes in availData) { if (convert.IsObjectHandled(baseRes)) { continue; } // Find target Resource matching the source - or create one. Texture targetRes = this.FindMatch(baseRes); if (targetRes == null && convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { targetRes = Texture.CreateFromPixmap(baseRes).Res; } if (targetRes == null) { continue; } convert.AddResult(targetRes); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; if (convert.Data.ContainsGameObjectRefs()) { GameObject[] draggedObjArray = convert.Data.GetGameObjectRefs(); // Filter out GameObjects that are children of others draggedObjArray = draggedObjArray.Where(o => !draggedObjArray.Any(o2 => o.IsChildOf(o2))).ToArray(); // Generate Prefabs foreach (GameObject draggedObj in draggedObjArray) { if (convert.IsObjectHandled(draggedObj)) continue; // Create Prefab Prefab prefab = new Prefab(draggedObj); // Add a name hint that may be used as indicator to select a Resource name later prefab.AssetInfo = new AssetInfo(); prefab.AssetInfo.NameHint = draggedObj.Name; // Mark GameObject as handled convert.MarkObjectHandled(draggedObj); convert.AddResult(prefab); finishConvertOp = true; } } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <Texture> availData = convert.Perform <Texture>().ToList(); // Append objects foreach (Texture baseRes in availData) { if (convert.IsObjectHandled(baseRes)) { continue; } if (!baseRes.BasePixmap.IsAvailable) { continue; } convert.AddResult(baseRes.BasePixmap.Res); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { if (convert.Data.ContainsContentRefs <Prefab>()) { ContentRef <Prefab>[] dropdata = convert.Data.GetContentRefs <Prefab>(); // Instantiate Prefabs foreach (ContentRef <Prefab> pRef in dropdata) { if (convert.IsObjectHandled(pRef.Res)) { continue; } if (!pRef.IsAvailable) { continue; } GameObject newObj = pRef.Res.Instantiate(); if (newObj != null) { convert.AddResult(newObj); convert.MarkObjectHandled(pRef.Res); } } } // Don't finish convert operation - other converters miht contribute to the new GameObjects! return(false); }
public override bool Convert(ConvertOperation convert) { IContentRef[] dropData; if (convert.Data.TryGetContentRefs(typeof(Prefab), out dropData)) { // Instantiate Prefabs foreach (IContentRef contentRef in dropData) { ContentRef <Prefab> prefabRef = contentRef.As <Prefab>(); if (convert.IsObjectHandled(prefabRef.Res)) { continue; } if (!prefabRef.IsAvailable) { continue; } GameObject newObj = prefabRef.Res.Instantiate(); if (newObj != null) { convert.AddResult(newObj); convert.MarkObjectHandled(prefabRef.Res); } } } // Don't finish convert operation - other converters miht contribute to the new GameObjects! return(false); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; if (convert.Data.ContainsGameObjectRefs()) { GameObject[] draggedObjArray = convert.Data.GetGameObjectRefs(); // Filter out GameObjects that are children of others draggedObjArray = draggedObjArray.Where(o => !draggedObjArray.Any(o2 => o.IsChildOf(o2))).ToArray(); // Generate Prefabs foreach (GameObject draggedObj in draggedObjArray) { if (convert.IsObjectHandled(draggedObj)) { continue; } // Create Prefab Prefab prefab = new Prefab(draggedObj); prefab.SourcePath = draggedObj.Name; // Dummy "source path" that may be used as indicator where to save the Resource later. // Mark GameObject as handled convert.MarkObjectHandled(draggedObj); convert.AddResult(prefab); finishConvertOp = true; } } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <Texture> availData = convert.Perform <Texture>().ToList(); // Generate objects foreach (Texture baseRes in availData) { if (convert.IsObjectHandled(baseRes)) { continue; } // Find target Resource matching the source - or create one. Material targetRes = this.FindMatch(baseRes); if (targetRes == null && convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { string resPath = PathHelper.GetFreePath(baseRes.FullName, Resource.GetFileExtByType <Material>()); targetRes = new Material(DrawTechnique.Mask, ColorRgba.White, baseRes); targetRes.Save(resPath); } if (targetRes == null) { continue; } convert.AddResult(targetRes); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <Sound> availData = convert.Perform <Sound>().ToList(); // Append objects foreach (Sound baseRes in availData) { if (convert.IsObjectHandled(baseRes)) { continue; } if (baseRes.Data != null) { for (int i = 0; i < baseRes.Data.Count; i++) { if (!baseRes.Data[i].IsAvailable) { continue; } convert.AddResult(baseRes.Data[i].Res); finishConvertOp = true; } } convert.MarkObjectHandled(baseRes); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<Texture> availData = convert.Perform<Texture>().ToList(); // Generate objects foreach (Texture baseRes in availData) { if (convert.IsObjectHandled(baseRes)) continue; // Find target Resource matching the source - or create one. Material targetRes = this.FindMatchingResources<Texture,Material>(baseRes, IsMatch) .FirstOrDefault(); if (targetRes == null && convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { string resPath = PathHelper.GetFreePath(baseRes.FullName, Resource.GetFileExtByType<Material>()); targetRes = new Material(DrawTechnique.Mask, ColorRgba.White, baseRes); targetRes.Save(resPath); } if (targetRes == null) continue; convert.AddResult(targetRes); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; GameObject[] draggedObjArray; if (convert.Data.TryGetGameObjects(DataObjectStorage.Reference, out draggedObjArray)) { // Filter out GameObjects that are children of others draggedObjArray = draggedObjArray.Where(o => !draggedObjArray.Any(o2 => o.IsChildOf(o2))).ToArray(); // Generate Prefabs foreach (GameObject draggedObj in draggedObjArray) { if (convert.IsObjectHandled(draggedObj)) { continue; } // Create Prefab Prefab prefab = new Prefab(draggedObj); // Add a name hint that may be used as indicator to select a Resource name later prefab.AssetInfo = new AssetInfo(); prefab.AssetInfo.NameHint = draggedObj.Name; // Mark GameObject as handled convert.MarkObjectHandled(draggedObj); convert.AddResult(prefab); finishConvertOp = true; } } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { List <Sound> availData = convert.Perform <Sound>().ToList(); // Generate objects foreach (Sound snd in availData) { if (convert.IsObjectHandled(snd)) { continue; } GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); SoundEmitter emitter = convert.Result.OfType <SoundEmitter>().FirstOrDefault(); if (emitter == null && gameobj != null) { emitter = gameobj.GetComponent <SoundEmitter>(); } if (emitter == null) { emitter = new SoundEmitter(); } convert.SuggestResultName(emitter, snd.Name); SoundEmitter.Source source = new SoundEmitter.Source(snd); emitter.Sources.Add(source); convert.AddResult(emitter); convert.MarkObjectHandled(snd); } return(false); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<Pixmap> availData = convert.Perform<Pixmap>().ToList(); // Generate objects foreach (Pixmap baseRes in availData) { if (convert.IsObjectHandled(baseRes)) continue; // Find target Resource matching the source - or create one. Texture targetRes = this.FindMatch(baseRes); if (targetRes == null && convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { targetRes = Texture.CreateFromPixmap(baseRes).Res; } if (targetRes == null) continue; convert.AddResult(targetRes); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <Pixmap> availData = convert.Perform <Pixmap>().ToList(); // Generate objects foreach (Pixmap baseRes in availData) { if (convert.IsObjectHandled(baseRes)) { continue; } // Find target Resource matching the source - or create one. Texture targetRes = this.FindMatchingResources <Pixmap, Texture>(baseRes, IsMatch) .FirstOrDefault(); if (targetRes == null && convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { string texPath = PathHelper.GetFreePath(baseRes.FullName, Resource.GetFileExtByType <Texture>()); targetRes = new Texture(baseRes); targetRes.Save(texPath); } if (targetRes == null) { continue; } convert.AddResult(targetRes); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<Pixmap> availData = convert.Perform<Pixmap>().ToList(); // Generate objects foreach (Pixmap baseRes in availData) { if (convert.IsObjectHandled(baseRes)) continue; // Find target Resource matching the source - or create one. Texture targetRes = this.FindMatch(baseRes); if (targetRes == null && convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { string texPath = PathHelper.GetFreePath(baseRes.FullName, Resource.GetFileExtByType<Texture>()); targetRes = new Texture(baseRes); targetRes.Save(texPath); } if (targetRes == null) continue; convert.AddResult(targetRes); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <BatchInfo> availData = convert.Perform <BatchInfo>().ToList(); // Generate objects foreach (BatchInfo info in availData) { if (convert.IsObjectHandled(info)) { continue; } // Auto-Generate Material string matName = "Material"; if (!info.MainTexture.IsExplicitNull) { matName = info.MainTexture.FullName; } string matPath = PathHelper.GetFreePath(matName, Material.FileExt); Material mat = new Material(info); mat.Save(matPath); convert.AddResult(mat); finishConvertOp = true; convert.MarkObjectHandled(info); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { if (convert.Result.OfType <ICmpRenderer>().Any() || convert.Result.OfType <Nebula>().Any()) { return(false); } List <object> results = new List <object>(); List <NebulaType> availData = convert.Perform <NebulaType>().ToList(); foreach (var nebula in availData) { GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); Nebula background = convert.Result.OfType <Nebula>().FirstOrDefault(); if (background == null) { background = new Nebula(); background.Nebulae = new ContentRef <NebulaType>[] { nebula }; results.Add(background); } convert.SuggestResultName(background, nebula.Name); convert.MarkObjectHandled(nebula); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { List <object> results = new List <object>(); List <Material> availData = convert.Perform <Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) { continue; } Texture mainTex = mat.MainTexture.Res; GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); if (mainTex == null || mainTex.AnimFrames == 0) { SpriteRenderer sprite = convert.Result.OfType <SpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <SpriteRenderer>(); } if (sprite == null) { sprite = new SpriteRenderer(); } sprite.SharedMaterial = mat; if (mainTex != null) { sprite.Rect = Rect.AlignCenter(0.0f, 0.0f, mainTex.PixelWidth, mainTex.PixelHeight); } convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } else { AnimSpriteRenderer sprite = convert.Result.OfType <AnimSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <AnimSpriteRenderer>(); } if (sprite == null) { sprite = new AnimSpriteRenderer(); } sprite.SharedMaterial = mat; sprite.Rect = Rect.AlignCenter(0.0f, 0.0f, mainTex.PixelWidth / mainTex.AnimCols, mainTex.PixelHeight / mainTex.AnimRows); sprite.AnimDuration = 5.0f; sprite.AnimFrameCount = mainTex.AnimFrames; convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } convert.MarkObjectHandled(mat); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<AudioData> availData = convert.Perform<AudioData>().ToList(); List<AudioData> createDataSource = null; // Match objects foreach (AudioData baseRes in availData) { if (convert.IsObjectHandled(baseRes)) continue; // Find target Resource matching the source Sound targetRes = this.FindMatchingResources<AudioData,Sound>(baseRes, IsMatch) .OrderBy(sound => sound.Data.Count) .FirstOrDefault(); if (targetRes != null) { convert.AddResult(targetRes); } else if (convert.AllowedOperations.HasFlag(ConvertOperation.Operation.CreateRes)) { if (createDataSource == null) createDataSource = new List<AudioData>(); createDataSource.Add(baseRes); } else { // Can't handle this AudioData continue; } finishConvertOp = true; convert.MarkObjectHandled(baseRes); } // Create objects if (createDataSource != null) { List<ContentRef<Sound>> createdSounds = EditorActions.AudioDataToSound.CreateMultipleFromAudioData(createDataSource.Ref()); foreach (ContentRef<Sound> sound in createdSounds) convert.AddResult(sound.Res); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <AtlasViewer.TabItemInfo> availData = convert.Perform <AtlasViewer.TabItemInfo>().ToList(); foreach (var sprite in availData) { GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); AnimSpriteRenderer renderer = convert.Result.OfType <AnimSpriteRenderer>().FirstOrDefault(); if (renderer == null) { renderer = new AnimSpriteRenderer(); if (sprite.Item.Indexes.Length > 1) { renderer.AnimDuration = (0.1f * sprite.Item.Indexes.Length); renderer.AnimLoopMode = AnimSpriteRenderer.LoopMode.Loop; } else { renderer.AnimLoopMode = AnimSpriteRenderer.LoopMode.FixedSingle; } renderer.CustomFrameSequence = sprite.Item.Indexes.ToList(); var rect = sprite.Pixmap.Res.Atlas[sprite.Item.Indexes[0]]; renderer.Rect = new Rect(-rect.W / 2, -rect.H / 2, rect.W, rect.H); var mat = this.FindMatchingResources <Pixmap, Material>(sprite.Pixmap.Res, (s, t) => t.MainTexture.Res?.BasePixmap == s).FirstOrDefault(); if (mat == null) { var tex = this.FindMatchingResources <Pixmap, Texture>(sprite.Pixmap.Res, (s, t) => t.BasePixmap == s).FirstOrDefault(); if (tex == null) { string texPath = PathHelper.GetFreePath(sprite.Pixmap.FullName, Resource.GetFileExtByType <Texture>()); tex = new Texture(sprite.Pixmap); tex.Save(texPath); } string matPath = PathHelper.GetFreePath(sprite.Pixmap.FullName, Resource.GetFileExtByType <Material>()); mat = new Material() { MainTexture = tex }; mat.Save(matPath); } renderer.SharedMaterial = mat; results.Add(renderer); } convert.SuggestResultName(renderer, sprite.Key.Replace('/', '_')); convert.MarkObjectHandled(sprite); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { List<object> results = new List<object>(); List<Material> availData = convert.Perform<Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) continue; DrawTechnique tech = mat.Technique.Res; LightingTechnique lightTech = tech as LightingTechnique; if (tech == null) continue; bool isDynamicLighting = lightTech != null || tech.PreferredVertexFormat == VertexC1P3T2A4.Declaration || tech.PreferredVertexFormat == VertexC1P3T4A4A1.Declaration; if (!isDynamicLighting) continue; Texture mainTex = mat.MainTexture.Res; Pixmap basePixmap = (mainTex != null) ? mainTex.BasePixmap.Res : null; GameObject gameobj = convert.Result.OfType<GameObject>().FirstOrDefault(); if (mainTex == null || basePixmap == null || basePixmap.AnimFrames == 0) { LightingSpriteRenderer sprite = convert.Result.OfType<LightingSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) sprite = gameobj.GetComponent<LightingSpriteRenderer>(); if (sprite == null) sprite = new LightingSpriteRenderer(); sprite.SharedMaterial = mat; if (mainTex != null) sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, mainTex.PixelWidth, mainTex.PixelHeight); convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } else { LightingAnimSpriteRenderer sprite = convert.Result.OfType<LightingAnimSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) sprite = gameobj.GetComponent<LightingAnimSpriteRenderer>(); if (sprite == null) sprite = new LightingAnimSpriteRenderer(); sprite.SharedMaterial = mat; sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, (mainTex.PixelWidth / basePixmap.AnimCols) - basePixmap.AnimFrameBorder * 2, (mainTex.PixelHeight / basePixmap.AnimRows) - basePixmap.AnimFrameBorder * 2); sprite.AnimDuration = 5.0f; sprite.AnimFrameCount = basePixmap.AnimFrames; convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } convert.MarkObjectHandled(mat); } convert.AddResult(results); return false; }
public override bool Convert(ConvertOperation convert) { if (convert.Result.OfType <ICmpSpriteRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <AtlasSprite> availData = convert.Perform <AtlasSprite>().ToList(); foreach (var sprite in availData) { if (!sprite.Pixmap.IsAvailable) { continue; } GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); SpriteRenderer renderer = convert.Result.OfType <SpriteRenderer>().FirstOrDefault(); if (renderer == null) { var r = sprite.Pixmap.Res.Atlas[sprite.Index]; renderer = new SpriteRenderer() { SpriteIndex = sprite.Index, Rect = new Rect(-r.W / 2, -r.H / 2, r.W, r.H) }; var mat = this.FindMatchingResources <Pixmap, Material>(sprite.Pixmap.Res, (s, t) => t.MainTexture.Res?.BasePixmap == s).FirstOrDefault(); if (mat == null) { var tex = this.FindMatchingResources <Pixmap, Texture>(sprite.Pixmap.Res, (s, t) => t.BasePixmap == s).FirstOrDefault(); if (tex == null) { string texPath = PathHelper.GetFreePath(sprite.Pixmap.FullName, Resource.GetFileExtByType <Texture>()); tex = new Texture(sprite.Pixmap); tex.Save(texPath); } string matPath = PathHelper.GetFreePath(sprite.Pixmap.FullName, Resource.GetFileExtByType <Material>()); mat = new Material() { MainTexture = tex }; mat.Save(matPath); } renderer.SharedMaterial = mat; results.Add(renderer); convert.SuggestResultName(renderer, $"{sprite.Pixmap.Name}_{sprite.Index}"); convert.MarkObjectHandled(sprite); } } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // a tilemap to be not the right course of action. if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <Tileset> availData = convert.Perform <Tileset>().ToList(); // Generate objects foreach (Tileset tileset in availData) { if (convert.IsObjectHandled(tileset)) { continue; } // Retrieve previously generated GameObjects and Tilemaps for re-use GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); Tilemap tilemap = convert.Result.OfType <Tilemap>().FirstOrDefault(); TilemapRenderer tilemapRenderer = convert.Result.OfType <TilemapRenderer>().FirstOrDefault(); if (tilemap == null && gameobj != null) { tilemap = gameobj.GetComponent <Tilemap>(); } // Create a new Tilemap (and TilemapRenderer) if none did exist before if (tilemap == null) { tilemap = new Tilemap(); TilemapsSetupUtility.SetupTilemap(tilemap, tileset); // Add a renderer for this Tilemap to the result list, if there was none before if (tilemapRenderer == null) { results.Add(new TilemapRenderer()); } } // Configure the Tilemap according to the Tileset we're converting tilemap.Tileset = tileset; // Add the Tilemap to our result set results.Add(tilemap); convert.SuggestResultName(tilemap, tileset.Name); convert.MarkObjectHandled(tileset); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { List<Component> availData = convert.Perform<Component>().ToList(); availData.Sort((Component a, Component b) => a.RequiresComponent(b.GetType()) ? 1 : 0); // Generate objects foreach (Component cmp in availData) { if (convert.IsObjectHandled(cmp)) continue; Type cmpType = cmp.GetType(); // Create or retrieve GameObject GameObject gameObj = null; { // First try to get one from the resultset that has an open slot for this kind of Component if (gameObj == null) gameObj = convert.Result.OfType<GameObject>().FirstOrDefault(g => g.GetComponent(cmpType) == null); // Still none? Create a new GameObject if (gameObj == null) { gameObj = new GameObject(); // Come up with a suitable name string nameSuggestion = null; { // Be open for suggestions if (nameSuggestion == null) nameSuggestion = convert.TakeSuggestedResultName(cmp); // Use a standard name if (nameSuggestion == null) nameSuggestion = cmpType.Name; } gameObj.Name = nameSuggestion; } } // Make sure all requirements are met foreach (Type t in Component.GetRequiredComponents(cmpType)) gameObj.AddComponent(t); // Make sure no other Component of this Type is already added gameObj.RemoveComponent(cmpType); // Add Component gameObj.AddComponent(cmp.GameObj == null ? cmp : cmp.Clone()); convert.AddResult(gameObj); convert.MarkObjectHandled(cmp); } return false; }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // another one to be not the right course of action. if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <Font> availData = convert.Perform <Font>().ToList(); // Generate objects foreach (Font font in availData) { if (convert.IsObjectHandled(font)) { continue; } GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); TextRenderer renderer = convert.Result.OfType <TextRenderer>().FirstOrDefault(); if (renderer == null && gameobj != null) { renderer = gameobj.GetComponent <TextRenderer>(); } if (renderer == null) { renderer = new TextRenderer(); } convert.SuggestResultName(renderer, font.Name); if (!renderer.Text.Fonts.Contains(font)) { var fonts = renderer.Text.Fonts.ToList(); if (fonts[0] == Font.GenericMonospace10) { fonts.RemoveAt(0); } fonts.Add(font); renderer.Text.Fonts = fonts.ToArray(); renderer.Text.ApplySource(); } results.Add(renderer); convert.MarkObjectHandled(font); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // another one to be not the right course of action. if (convert.Result.OfType<ICmpRenderer>().Any()) return false; List<object> results = new List<object>(); List<Material> availData = convert.Perform<Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) continue; Texture mainTex = mat.MainTexture.Res; Pixmap basePixmap = (mainTex != null) ? mainTex.BasePixmap.Res : null; GameObject gameobj = convert.Result.OfType<GameObject>().FirstOrDefault(); if (mainTex == null || basePixmap == null || basePixmap.AnimFrames == 0) { SpriteRenderer sprite = convert.Result.OfType<SpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) sprite = gameobj.GetComponent<SpriteRenderer>(); if (sprite == null) sprite = new SpriteRenderer(); sprite.SharedMaterial = mat; if (mainTex != null) sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, mainTex.PixelWidth, mainTex.PixelHeight); convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } else { AnimSpriteRenderer sprite = convert.Result.OfType<AnimSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) sprite = gameobj.GetComponent<AnimSpriteRenderer>(); if (sprite == null) sprite = new AnimSpriteRenderer(); sprite.SharedMaterial = mat; sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, (mainTex.PixelWidth / basePixmap.AnimCols) - basePixmap.AnimFrameBorder * 2, (mainTex.PixelHeight / basePixmap.AnimRows) - basePixmap.AnimFrameBorder * 2); sprite.AnimDuration = 5.0f; sprite.AnimFrameCount = basePixmap.AnimFrames; convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } convert.MarkObjectHandled(mat); } convert.AddResult(results); return false; }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // a tilemap to be not the right course of action. if (convert.Result.OfType<ICmpRenderer>().Any()) return false; List<object> results = new List<object>(); List<Tileset> availData = convert.Perform<Tileset>().ToList(); // Generate objects foreach (Tileset tileset in availData) { if (convert.IsObjectHandled(tileset)) continue; // Retrieve previously generated GameObjects and Tilemaps for re-use GameObject gameobj = convert.Result.OfType<GameObject>().FirstOrDefault(); Tilemap tilemap = convert.Result.OfType<Tilemap>().FirstOrDefault(); TilemapRenderer tilemapRenderer = convert.Result.OfType<TilemapRenderer>().FirstOrDefault(); if (tilemap == null && gameobj != null) tilemap = gameobj.GetComponent<Tilemap>(); // Create a new Tilemap (and TilemapRenderer) if none did exist before if (tilemap == null) { tilemap = new Tilemap(); TilemapsSetupUtility.SetupTilemap(tilemap, tileset); // Add a renderer for this Tilemap to the result list, if there was none before if (tilemapRenderer == null) { results.Add(new TilemapRenderer()); } } // Configure the Tilemap according to the Tileset we're converting tilemap.Tileset = tileset; // Add the Tilemap to our result set results.Add(tilemap); convert.SuggestResultName(tilemap, tileset.Name); convert.MarkObjectHandled(tileset); } convert.AddResult(results); return false; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<Material> availData = convert.Perform<Material>().ToList(); // Append objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) continue; convert.AddResult(new BatchInfo(mat)); finishConvertOp = true; convert.MarkObjectHandled(mat); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<Texture> availData = convert.Perform<Texture>().ToList(); // Append objects foreach (Texture baseRes in availData) { if (convert.IsObjectHandled(baseRes)) continue; if (!baseRes.BasePixmap.IsAvailable) continue; convert.AddResult(baseRes.BasePixmap.Res); finishConvertOp = true; convert.MarkObjectHandled(baseRes); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List <Material> availData = convert.Perform <Material>().ToList(); // Append objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) { continue; } convert.AddResult(mat.Info); finishConvertOp = true; convert.MarkObjectHandled(mat); } return(finishConvertOp); }
public override bool Convert(ConvertOperation convert) { if (convert.Data.ContainsContentRefs<Prefab>()) { ContentRef<Prefab>[] dropdata = convert.Data.GetContentRefs<Prefab>(); // Instantiate Prefabs foreach (ContentRef<Prefab> pRef in dropdata) { if (convert.IsObjectHandled(pRef.Res)) continue; if (!pRef.IsAvailable) continue; GameObject newObj = pRef.Res.Instantiate(); if (newObj != null) { convert.AddResult(newObj); convert.MarkObjectHandled(pRef.Res); } } } // Don't finish convert operation - other converters miht contribute to the new GameObjects! return false; }
public override bool Convert(ConvertOperation convert) { List<Sound> availData = convert.Perform<Sound>().ToList(); // Generate objects foreach (Sound snd in availData) { if (convert.IsObjectHandled(snd)) continue; GameObject gameobj = convert.Result.OfType<GameObject>().FirstOrDefault(); SoundEmitter emitter = convert.Result.OfType<SoundEmitter>().FirstOrDefault(); if (emitter == null && gameobj != null) emitter = gameobj.GetComponent<SoundEmitter>(); if (emitter == null) emitter = new SoundEmitter(); convert.SuggestResultName(emitter, snd.Name); SoundEmitter.Source source = new SoundEmitter.Source(snd); emitter.Sources.Add(source); convert.AddResult(emitter); convert.MarkObjectHandled(snd); } return false; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<Sound> availData = convert.Perform<Sound>().ToList(); // Append objects foreach (Sound baseRes in availData) { if (convert.IsObjectHandled(baseRes)) continue; if (baseRes.Data != null) { for (int i = 0; i < baseRes.Data.Count; i++) { if (!baseRes.Data[i].IsAvailable) continue; convert.AddResult(baseRes.Data[i].Res); finishConvertOp = true; } } convert.MarkObjectHandled(baseRes); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { bool finishConvertOp = false; List<BatchInfo> availData = convert.Perform<BatchInfo>().ToList(); // Generate objects foreach (BatchInfo info in availData) { if (convert.IsObjectHandled(info)) continue; // Auto-Generate Material string matName = "Material"; if (!info.MainTexture.IsExplicitNull) matName = info.MainTexture.FullName; string matPath = PathHelper.GetFreePath(matName, Resource.GetFileExtByType<Material>()); Material mat = new Material(info); mat.Save(matPath); convert.AddResult(mat); finishConvertOp = true; convert.MarkObjectHandled(info); } return finishConvertOp; }
public override bool Convert(ConvertOperation convert) { List<object> results = new List<object>(); List<Material> availData = convert.Perform<Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) continue; Texture mainTex = mat.MainTexture.Res; GameObject gameobj = convert.Result.OfType<GameObject>().FirstOrDefault(); if (mainTex == null || mainTex.AnimFrames == 0) { SpriteRenderer sprite = convert.Result.OfType<SpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) sprite = gameobj.GetComponent<SpriteRenderer>(); if (sprite == null) sprite = new SpriteRenderer(); sprite.SharedMaterial = mat; if (mainTex != null) sprite.Rect = Rect.AlignCenter(0.0f, 0.0f, mainTex.PixelWidth, mainTex.PixelHeight); convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } else { AnimSpriteRenderer sprite = convert.Result.OfType<AnimSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) sprite = gameobj.GetComponent<AnimSpriteRenderer>(); if (sprite == null) sprite = new AnimSpriteRenderer(); sprite.SharedMaterial = mat; sprite.Rect = Rect.AlignCenter(0.0f, 0.0f, mainTex.PixelWidth / mainTex.AnimCols, mainTex.PixelHeight / mainTex.AnimRows); sprite.AnimDuration = 5.0f; sprite.AnimFrameCount = mainTex.AnimFrames; convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } convert.MarkObjectHandled(mat); } convert.AddResult(results); return false; }
public override bool Convert(ConvertOperation convert) { List <Component> availData = convert.Perform <Component>().ToList(); availData.Sort((Component a, Component b) => a.RequiresComponent(b.GetType()) ? 1 : 0); // Generate objects foreach (Component cmp in availData) { if (convert.IsObjectHandled(cmp)) { continue; } Type cmpType = cmp.GetType(); // Create or retrieve GameObject GameObject gameObj = null; { // First try to get one from the resultset that has an open slot for this kind of Component if (gameObj == null) { gameObj = convert.Result.OfType <GameObject>().FirstOrDefault(g => g.GetComponent(cmpType) == null); } // Still none? Create a new GameObject if (gameObj == null) { gameObj = new GameObject(); // Come up with a suitable name string nameSuggestion = null; { // Be open for suggestions if (nameSuggestion == null) { nameSuggestion = convert.TakeSuggestedResultName(cmp); } // Use a standard name if (nameSuggestion == null) { nameSuggestion = cmpType.Name; } } gameObj.Name = nameSuggestion; } } // Make sure all requirements are met foreach (Type t in Component.GetRequiredComponents(cmpType)) { gameObj.AddComponent(t); } // Make sure no other Component of this Type is already added gameObj.RemoveComponent(cmpType); // Add Component gameObj.AddComponent(cmp.GameObj == null ? cmp : cmp.Clone()); convert.AddResult(gameObj); convert.MarkObjectHandled(cmp); } return(false); }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // another one to be not the right course of action. if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <Material> availData = convert.Perform <Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) { continue; } Texture mainTex = mat.MainTexture.Res; Pixmap basePixmap = (mainTex != null) ? mainTex.BasePixmap.Res : null; GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); bool hasAnimation = (mainTex != null && basePixmap != null && basePixmap.Atlas != null && basePixmap.Atlas.Count > 0); // Determine the size of the displayed sprite Vector2 spriteSize; if (hasAnimation) { Rect atlasRect = basePixmap.LookupAtlas(0); spriteSize = atlasRect.Size; } else if (mainTex != null) { spriteSize = mainTex.ContentSize; // If we're dealing with default content, clamp sprite size to // something easily visible in order to avoid 1x1 sprites for // default White / Black or similar fallback textures. if (mainTex.IsDefaultContent) { spriteSize = Vector2.Max(spriteSize, new Vector2(32.0f, 32.0f)); } } else { spriteSize = Pixmap.Checkerboard.Res.Size; } // Create a sprite Component in any case SpriteRenderer sprite = convert.Result.OfType <SpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <SpriteRenderer>(); } if (sprite == null) { sprite = new SpriteRenderer(); } sprite.SharedMaterial = mat; sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, spriteSize.X, spriteSize.Y); results.Add(sprite); // If we have animation data, create an animator component as well if (hasAnimation) { SpriteAnimator animator = convert.Result.OfType <SpriteAnimator>().FirstOrDefault(); if (animator == null && gameobj != null) { animator = gameobj.GetComponent <SpriteAnimator>(); } if (animator == null) { animator = new SpriteAnimator(); } animator.AnimDuration = 5.0f; animator.FrameCount = basePixmap.Atlas.Count; results.Add(animator); } convert.SuggestResultName(sprite, mat.Name); convert.MarkObjectHandled(mat); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { List <object> results = new List <object>(); List <Material> availData = convert.Perform <Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) { continue; } DrawTechnique tech = mat.Technique.Res; LightingTechnique lightTech = tech as LightingTechnique; if (tech == null) { continue; } bool isDynamicLighting = lightTech != null || tech.PreferredVertexFormat == VertexC1P3T2A4.VertexTypeIndex || tech.PreferredVertexFormat == VertexC1P3T4A4A1.VertexTypeIndex; if (!isDynamicLighting) { continue; } Texture mainTex = mat.MainTexture.Res; GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); if (mainTex == null || mainTex.AnimFrames == 0) { LightingSpriteRenderer sprite = convert.Result.OfType <LightingSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <LightingSpriteRenderer>(); } if (sprite == null) { sprite = new LightingSpriteRenderer(); } sprite.SharedMaterial = mat; if (mainTex != null) { sprite.Rect = Rect.AlignCenter(0.0f, 0.0f, mainTex.PixelWidth, mainTex.PixelHeight); } convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } else { LightingAnimSpriteRenderer sprite = convert.Result.OfType <LightingAnimSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <LightingAnimSpriteRenderer>(); } if (sprite == null) { sprite = new LightingAnimSpriteRenderer(); } sprite.SharedMaterial = mat; sprite.Rect = Rect.AlignCenter(0.0f, 0.0f, mainTex.PixelWidth / mainTex.AnimCols, mainTex.PixelHeight / mainTex.AnimRows); sprite.AnimDuration = 5.0f; sprite.AnimFrameCount = mainTex.AnimFrames; convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } convert.MarkObjectHandled(mat); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // another one to be not the right course of action. if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <Material> availData = convert.Perform <Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) { continue; } Texture mainTex = mat.MainTexture.Res; Pixmap basePixmap = (mainTex != null) ? mainTex.BasePixmap.Res : null; GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); if (mainTex == null || basePixmap == null || basePixmap.AnimFrames == 0) { SpriteRenderer sprite = convert.Result.OfType <SpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <SpriteRenderer>(); } if (sprite == null) { sprite = new SpriteRenderer(); } sprite.SharedMaterial = mat; if (mainTex != null) { sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, mainTex.PixelWidth, mainTex.PixelHeight); } convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } else { AnimSpriteRenderer sprite = convert.Result.OfType <AnimSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <AnimSpriteRenderer>(); } if (sprite == null) { sprite = new AnimSpriteRenderer(); } sprite.SharedMaterial = mat; sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, (mainTex.PixelWidth / basePixmap.AnimCols) - basePixmap.AnimFrameBorder * 2, (mainTex.PixelHeight / basePixmap.AnimRows) - basePixmap.AnimFrameBorder * 2); sprite.AnimDuration = 5.0f; sprite.AnimFrameCount = basePixmap.AnimFrames; convert.SuggestResultName(sprite, mat.Name); results.Add(sprite); } convert.MarkObjectHandled(mat); } convert.AddResult(results); return(false); }
public override bool Convert(ConvertOperation convert) { // If we already have a renderer in the result set, consider generating // another one to be not the right course of action. if (convert.Result.OfType <ICmpRenderer>().Any()) { return(false); } List <object> results = new List <object>(); List <Material> availData = convert.Perform <Material>().ToList(); // Generate objects foreach (Material mat in availData) { if (convert.IsObjectHandled(mat)) { continue; } DrawTechnique tech = mat.Technique.Res; if (tech == null) { continue; } bool isDynamicLighting = tech is LightingTechnique || tech.PreferredVertexFormat == VertexDynamicLighting.Declaration; if (!isDynamicLighting) { continue; } Texture mainTex = mat.MainTexture.Res; Pixmap basePixmap = (mainTex != null) ? mainTex.BasePixmap.Res : null; GameObject gameobj = convert.Result.OfType <GameObject>().FirstOrDefault(); bool hasAnimation = (mainTex != null && basePixmap != null && basePixmap.Atlas != null && basePixmap.Atlas.Count > 0); // Determine the size of the displayed sprite Vector2 spriteSize; if (hasAnimation) { Rect atlasRect = basePixmap.LookupAtlas(0); spriteSize = atlasRect.Size; } else if (mainTex != null) { spriteSize = mainTex.ContentSize; } else { spriteSize = Pixmap.Checkerboard.Res.Size; } // Create a sprite Component in any case LightingSpriteRenderer sprite = convert.Result.OfType <LightingSpriteRenderer>().FirstOrDefault(); if (sprite == null && gameobj != null) { sprite = gameobj.GetComponent <LightingSpriteRenderer>(); } if (sprite == null) { sprite = new LightingSpriteRenderer(); } sprite.SharedMaterial = mat; sprite.Rect = Rect.Align(Alignment.Center, 0.0f, 0.0f, spriteSize.X, spriteSize.Y); results.Add(sprite); // If we have animation data, create an animator component as well if (hasAnimation) { SpriteAnimator animator = convert.Result.OfType <SpriteAnimator>().FirstOrDefault(); if (animator == null && gameobj != null) { animator = gameobj.GetComponent <SpriteAnimator>(); } if (animator == null) { animator = new SpriteAnimator(); } animator.AnimDuration = 5.0f; animator.FrameCount = basePixmap.Atlas.Count; results.Add(animator); } convert.SuggestResultName(sprite, mat.Name); convert.MarkObjectHandled(mat); } convert.AddResult(results); return(false); }