public override void DoCommand(AdvEngine engine)
        {
            float           fadeTime         = engine.Page.ToSkippedTime(this.time);
            AdvGraphicGroup characterManager = engine.GraphicManager.CharacterManager;

            if (string.IsNullOrEmpty(this.name))
            {
                characterManager.FadeOutAll(fadeTime);
            }
            else
            {
                AdvGraphicLayer layer = characterManager.FindLayerFromObjectName(this.name);
                if (layer != null)
                {
                    layer.FadeOut(this.name, fadeTime);
                }
                else
                {
                    layer = characterManager.FindLayer(this.name);
                    if (layer != null)
                    {
                        layer.FadeOutAll(fadeTime);
                    }
                }
            }
        }
Exemplo n.º 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);
        }
Exemplo n.º 3
0
        //指定名のオブジェクトを非表示(フェードアウト)する
        internal virtual void FadeOut(string name, float fadeTime)
        {
            AdvGraphicLayer layer = FindLayerFromObjectName(name);

            if (layer != null)
            {
                layer.FadeOut(name, fadeTime);
            }
        }
Exemplo n.º 4
0
        public override void DoCommand(AdvEngine engine)
        {
            float time = engine.Page.ToSkippedTime(this.fadeTime);

            switch (name)
            {
            case AdvCommandKeyword.AllSpriteLayers:
                engine.GraphicManager.SpriteManager.FadeOutAll(time);
                break;

            case AdvCommandKeyword.AllSpriteObjects:
                engine.GraphicManager.FadeOutAllObjects(AdvGraphicObjectType.Sprite, time);
                break;

            default:
                //オブジェクト名からレイヤーを探す
                AdvGraphicLayer layer = engine.GraphicManager.FindLayerByObjectName(name);
                if (layer != null)
                {
                    //指定のオブジェクトを消す
                    layer.FadeOut(name, time);
                }
                else
                {
                    //レイヤー名として、レイヤー以下のスプライトを消す
                    layer = engine.GraphicManager.FindLayer(name);
                    if (layer != null)
                    {
                        //消す
                        layer.FadeOutAllObjects(AdvGraphicObjectType.Sprite, time);
                    }
                    else
                    {
                        Debug.LogError("Not found " + name + " Please input sprite name or layer name");
                    }
                }
                break;
            }
        }
Exemplo n.º 5
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));
        }