//デフォルトオブジェクトとして描画する internal AdvGraphicObject DrawToDefault(string name, AdvGraphicOperaitonArg 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; } } } if (changeObject) { //フェードアウトする if (SettingData.Type == AdvLayerSettingData.LayerType.Bg) { DelayOut(DefaultObject.name, arg.GetSkippedFadeTime(Engine)); } else { FadeOut(DefaultObject.name, arg.GetSkippedFadeTime(Engine)); } } DefaultObject = Draw(name, arg); //前の場所を保持する if (keepPosition && !Manager.IgnoreKeepPositionOnCrossFade) { DefaultObject.transform.localPosition = oldPosition; } return(DefaultObject); }
//キャラクターオブジェクトとして、特殊な表示をする internal AdvGraphicObject DrawCharacter(string layerName, string name, AdvGraphicOperaitonArg 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); }
//デフォルトオブジェクトとして描画する internal AdvGraphicObject DrawToDefault(string name, AdvGraphicOperaitonArg arg) { if (CheckChangeDafaultObject(name, arg)) { //フェードアウトする if (SettingData.Type == AdvLayerSettingData.LayerType.Bg) { DelayOut(DefaultObject.name, arg.GetSkippedFadeTime(Engine)); } else { FadeOut(DefaultObject.name, arg.GetSkippedFadeTime(Engine)); } } DefaultObject = Draw(name, arg); return(DefaultObject); }
//オブジェクトを描画する internal AdvGraphicObject Draw(string name, AdvGraphicOperaitonArg 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) { AdvGraphicOperaitonArg arg = new AdvGraphicOperaitonArg(this, this.graphic.Main, this.fadeTime); engine.SystemSaveData.GalleryData.AddCgLabel(this.label); engine.GraphicManager.IsEventMode = true; engine.GraphicManager.CharacterManager.FadeOutAll(arg.GetSkippedFadeTime(engine)); engine.GraphicManager.BgManager.DrawToDefault(engine.GraphicManager.BgSpriteName, arg); AdvGraphicObject obj2 = engine.GraphicManager.BgManager.FindObject(engine.GraphicManager.BgSpriteName); if (obj2 != null) { obj2.SetCommandPostion(this); obj2.TargetObject.SetCommandArg(this); } }
//キャラクターオブジェクトとして、特殊な表示をする internal AdvGraphicObject DrawCharacter(string layerName, string name, AdvGraphicOperaitonArg arg) { //既に同名のグラフィックがあるなら、そのレイヤーを取得 AdvGraphicLayer oldLayer = layers.Find((item) => (item.IsEqualDefaultGraphicName(name))); //レイヤー名の指定がある場合、そのレイヤーを探す AdvGraphicLayer layer = layers.Find((item) => (item.SettingData.Name == layerName)); if (layer == null) { //レイヤーがない場合は、旧レイヤーかデフォルトレイヤーを使う layer = (oldLayer == null) ? DefaultLayer : oldLayer; } //レイヤーが変わる場合は、昔のほうを消す if (oldLayer != layer && oldLayer != null) { oldLayer.FadeOut(name, arg.GetSkippedFadeTime(manager.Engine)); } //レイヤー上にデフォルトオブジェクトとして表示 return(layer.DrawToDefault(name, arg)); }
public override void DoCommand(AdvEngine engine) { AdvGraphicOperaitonArg graphicOperaitonArg = new AdvGraphicOperaitonArg(this, graphic.Main, fadeTime); engine.SystemSaveData.GalleryData.AddCgLabel(label); //表示する engine.GraphicManager.IsEventMode = true; //キャラクターは非表示にする engine.GraphicManager.CharacterManager.FadeOutAll(graphicOperaitonArg.GetSkippedFadeTime(engine)); //表示する engine.GraphicManager.BgManager.DrawToDefault(engine.GraphicManager.BgSpriteName, graphicOperaitonArg); //基本以外のコマンド引数の適用 AdvGraphicObject obj = engine.GraphicManager.BgManager.FindObject(engine.GraphicManager.BgSpriteName); if (obj != null) { //位置の適用(Arg4とArg5) obj.SetCommandPostion(this); //その他の適用(モーション名など) obj.TargetObject.SetCommandArg(this); } }