protected virtual AdvGraphicOperationArg DoCommandBgSub(AdvEngine engine) { AdvGraphicOperationArg graphicOperationArg = new AdvGraphicOperationArg(this, graphic.Main, fadeTime); //表示する if (string.IsNullOrEmpty(layerName)) { engine.GraphicManager.BgManager.DrawToDefault(engine.GraphicManager.BgSpriteName, graphicOperationArg); } else { engine.GraphicManager.BgManager.Draw(layerName, engine.GraphicManager.BgSpriteName, graphicOperationArg); } //基本以外のコマンド引数の適用 AdvGraphicObject obj = engine.GraphicManager.BgManager.FindObject(engine.GraphicManager.BgSpriteName); if (obj != null) { //位置の適用(Arg4とArg5) obj.SetCommandPostion(this); //その他の適用(モーション名など) obj.TargetObject.SetCommandArg(this); } return(graphicOperationArg); }
public AdvCommandParticle(StringGridRow row, AdvSettingDataManager dataManager) : base(row) { this.label = ParseCell <string>(AdvColumnName.Arg1); string fileName = ParseCellOptional <string>(AdvColumnName.Arg2, label); if (!dataManager.ParticleSetting.Dictionary.ContainsKey(fileName)) { Debug.LogError(ToErrorString(fileName + " is not contained in file setting")); } this.graphic = dataManager.ParticleSetting.LabelToGraphic(fileName); AddLoadGraphic(graphic); this.layerName = ParseCellOptional <string>(AdvColumnName.Arg3, ""); if (!string.IsNullOrEmpty(layerName) && !dataManager.LayerSetting.Contains(layerName)) { Debug.LogError(ToErrorString(layerName + " is not contained in layer setting")); } //グラフィック表示処理を作成 this.graphicOperationArg = new AdvGraphicOperationArg(this, graphic, 0); // this.sortingOrder = ParseCellOptional<int>(AdvColumnName.Arg4,0); }
//キャラクターオブジェクトとして、特殊な表示をする internal AdvGraphicObject DrawCharacter(string layerName, string name, AdvGraphicOperationArg arg) { //既に同名のグラフィックがあるなら、そのレイヤーを取得 AdvGraphicLayer oldLayer = null; foreach (var keyValue in layers) { if (keyValue.Value.IsEqualDefaultGraphicName(name)) { oldLayer = keyValue.Value; break; } } //レイヤー名の指定がある場合、そのレイヤーを探す AdvGraphicLayer layer = FindLayer(layerName); if (layer == null) { //レイヤーがない場合は、旧レイヤーかデフォルトレイヤーを使う layer = (oldLayer == null) ? DefaultLayer : oldLayer; } //レイヤー変更があるか bool changeLayer = (oldLayer != layer && oldLayer != null); //レイヤー変更ないなら、描画しておわり if (!changeLayer) { //レイヤー上にデフォルトオブジェクトとして表示 return(layer.DrawToDefault(name, arg)); } Vector3 oldScale = Vector3.one; Vector3 oldPosition = Vector3.zero; Quaternion oldRotation = Quaternion.identity; //レイヤーが変わる場合は、昔のほうを消す AdvGraphicObject oldObj; if (oldLayer.CurrentGraphics.TryGetValue(name, out oldObj)) { oldScale = oldObj.rectTransform.localScale; oldPosition = oldObj.rectTransform.localPosition; oldRotation = oldObj.rectTransform.localRotation; oldLayer.FadeOut(name, arg.GetSkippedFadeTime(manager.Engine)); } //レイヤー上にデフォルトオブジェクトとして表示 AdvGraphicObject obj = layer.DrawToDefault(name, arg); //ローカルTransform値を引き継ぐ処理 if (!manager.ResetCharacterTransformOnChangeLayer) { obj.rectTransform.localScale = oldScale; obj.rectTransform.localPosition = oldPosition; obj.rectTransform.localRotation = oldRotation; } return(obj); }
protected virtual bool CheckFailedCrossFade(AdvGraphicOperationArg arg) { if (arg.Graphic.CheckFailedCrossFade(DefaultObject.LastResource)) { return(true); } return(DefaultObject.TargetObject.CheckFailedCrossFade(arg.Graphic)); }
//オブジェクトを描画する internal AdvGraphicObject Draw(string name, AdvGraphicOperationArg arg) { AdvGraphicObject obj = GetObjectCreateIfMissing(name, arg.Graphic); obj.Loader.LoadGraphic(arg.Graphic, () => { obj.Draw(arg, arg.GetSkippedFadeTime(Engine)); }); return(obj); }
public override void DoCommand(AdvEngine engine) { engine.SystemSaveData.GalleryData.AddCgLabel(label); engine.GraphicManager.IsEventMode = true; //表示する AdvGraphicOperationArg graphicOperationArg = DoCommandBgSub(engine); //キャラクターは非表示にする engine.GraphicManager.CharacterManager.FadeOutAll(graphicOperationArg.GetSkippedFadeTime(engine)); }
public override void DoCommand(AdvEngine engine) { //グラフィック表示処理を作成 AdvGraphicOperationArg graphicOperationArg = new AdvGraphicOperationArg(this, graphic.Main, fadeTime); //表示する engine.GraphicManager.DrawObject(layerName, spriteName, graphicOperationArg); //基本以外のコマンド引数の適用 AdvGraphicObject obj = engine.GraphicManager.FindObject(spriteName); if (obj != null) { //位置の適用(Arg4とArg5) obj.SetCommandPostion(this); //その他の適用(モーション名など) obj.TargetObject.SetCommandArg(this); } }
//デフォルトオブジェクトとして描画する internal AdvGraphicObject DrawToDefault(string name, AdvGraphicOperationArg arg) { bool changeObject = false; bool keepPosition = false; Vector3 oldPosition = Vector3.zero; if (DefaultObject != null && DefaultObject.LastResource != null) { if (DefaultObject.name != name) { //デフォルトオブジェクトの名前が違うなら、そのオブジェクトは変更 //場所も保持しない changeObject = true; } else { if (CheckFailedCrossFade(arg)) { //クロスフェードに失敗するだけの場合 //場所は保持する changeObject = true; keepPosition = true; oldPosition = DefaultObject.transform.localPosition; } else { //クロスフェードできるならオブジェクトの変更を行わない changeObject = false; } } } AdvGraphicObject swapFadeObject = null; if (changeObject) { //すでにあるオブジェクトを消す準備 swapFadeObject = DefaultObject; Remove(DefaultObject); } DefaultObject = Draw(name, arg); if (changeObject) { //すでにあるオブジェクトをフェードアウトしてクロスフェードとする DefaultObject.AddSwapFadeObject(swapFadeObject); float fadeTime = arg.GetSkippedFadeTime(Engine); if (LayerType == AdvLayerSettingData.LayerType.Bg) { StartCoroutine(CoDelayOut(swapFadeObject, fadeTime)); } else { swapFadeObject.FadeOut(fadeTime); } } //前の場所を保持する if (keepPosition && !Manager.IgnoreKeepPositionOnCrossFade) { DefaultObject.transform.localPosition = oldPosition; } return(DefaultObject); }
//********描画開始********// public virtual void Draw(AdvGraphicOperationArg arg, float fadeTime) { DrawSub(arg.Graphic, fadeTime); }
//表示する internal void DrawObject(string layerName, string label, AdvGraphicOperationArg graphicOperationArg) { FindLayer(layerName).Draw(label, graphicOperationArg); }
//デフォルトレイヤーのデフォルトオブジェクトとして表示する public virtual AdvGraphicObject DrawToDefault(string name, AdvGraphicOperationArg arg) { return(DefaultLayer.DrawToDefault(name, arg)); }
//表示する public virtual AdvGraphicObject Draw(string layerName, string name, AdvGraphicOperationArg arg) { return(FindLayerOrDefault(layerName).Draw(name, arg)); }