Beispiel #1
0
        //デフォルトオブジェクトとして描画する
        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);
        }
Beispiel #2
0
        //キャラクターオブジェクトとして、特殊な表示をする
        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);
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        //キャラクターオブジェクトとして、特殊な表示をする
        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));
        }
Beispiel #7
0
        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);
            }
        }