Ejemplo n.º 1
0
    void LateUpdate()
    {
        VTile      t = tile.GetTile();
        VLayer     l = t.GetLayer(layerIndex);
        VAnimation a = t.GetAnimation(animationIndex);

        bool active = layerIndex == t.GetLayerIndex() && animationIndex == t.GetAnimationIndex() && frameIndex == t.GetFrameIndex();

        cachedVChunk = t.GetChunk(layerIndex, animationIndex, frameIndex);

        if (GetChunk().IsDirty() || t.GetPalette().IsDirty() || l.IsDirty() || a.IsDirty())
        {
            Refresh();
        }
        bool visible = l.GetVisible() && animationIndex == t.GetAnimationIndex() && frameIndex == t.GetFrameIndex();

        gameObject.layer = (visible && (active || (!l.GetOutline() && !l.GetTransparent()))) ? 10 : 0;
        if (Tool.editing && active)
        {
            visible = false;
        }
        if (mr)
        {
            mr.enabled = visible;
        }
    }
Ejemplo n.º 2
0
    void Update()
    {
        VAnimation anim = ed.tile.GetAnimation(ed.tile.GetAnimationIndex());

        if (playAnimation)
        {
            animationTime += Time.deltaTime;
            if (loopAnimation)
            {
                animationTime %= anim.GetDuration();
            }
            else if (animationTime >= anim.GetDuration())
            {
                playAnimation = false;
            }
        }
        if (playAnimation)
        {
            float frameTime = 0f;
            for (int i = 0; i < anim.GetFrameCount(); i++)
            {
                if (i != ed.tile.GetFrameIndex() && animationTime >= frameTime && animationTime < frameTime + anim.GetFrame(i).GetDuration())
                {
                    actQueue.Enqueue(new ChangeFrameIndexAct(i));
                }
                frameTime += anim.GetFrame(i).GetDuration();
            }
        }
        while (actQueue.Count > 0)
        {
            Edit.Do(actQueue.Dequeue());
        }
    }
Ejemplo n.º 3
0
    public override void Do()
    {
        VAnimation anim = Edit.use.tile.GetAnimation(animationIndex);

        oldName = name;

        anim.SetName(name);
    }
Ejemplo n.º 4
0
    public int AddFrame(int animationIndex, VFrame frame)
    {
        VAnimation anim = animations[animationIndex];

        anim.AddFrame(frame);
        for (int layer = 0; layer < GetLayerCount(); layer++)
        {
            chunks.Add(new VTileChunk(layer, animationIndex, anim.GetFrameCount() - 1, width, height, depth));
        }
        SetDirty();
        return(anim.GetFrameCount() - 1);
    }
Ejemplo n.º 5
0
 public int AddAnimation(VAnimation anim)
 {
     animations.Add(anim);
     for (int layer = 0; layer < GetLayerCount(); layer++)
     {
         for (int frame = 0; frame < anim.GetFrameCount(); frame++)
         {
             chunks.Add(new VTileChunk(layer, animations.Count - 1, frame, width, height, depth));
         }
     }
     SetDirty();
     return(animations.Count - 1);
 }
Ejemplo n.º 6
0
    void Animations()
    {
        GUILayout.BeginVertical("box", GUILayout.Width(200));
        showAnimations = GUILayout.Toggle(showAnimations, "Animations", "boxhead");
        int animIndex = ed.tile.GetAnimationIndex();

        if (showAnimations)
        {
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("+", GUILayout.Width(20)))
            {
                actQueue.Enqueue(new AddAnimationAct("Animation " + ed.tile.GetAnimationCount()));
            }
            GUILayout.EndHorizontal();
            for (int i = ed.tile.GetAnimationCount() - 1; i >= 0; i--)
            {
                VAnimation anim = ed.tile.GetAnimation(i);
                GUILayout.BeginHorizontal();
                animIndex = GUILayout.Toggle(animIndex == i, animIndex == i ? "" : "", "button", GUILayout.Width(20)) ? i : animIndex;
                string name = GUILayout.TextField(anim.GetName());
                if (ed.tile.GetAnimationCount() > 1)
                {
                    if (GUILayout.Button("-", GUILayout.Width(20)))
                    {
                        actQueue.Enqueue(new RemoveAnimationAct(i));
                    }
                }
                else
                {
                    GUILayout.Space(30f);
                }
                GUILayout.EndHorizontal();

                if (name != anim.GetName())
                {
                    actQueue.Enqueue(new ChangeAnimationInfoAct(i, name));
                }
            }
        }
        GUILayout.EndVertical();
        if (repaint)
        {
            boxRects.Add(GUILayoutUtility.GetLastRect());
        }

        if (animIndex != ed.tile.GetAnimationIndex())
        {
            actQueue.Enqueue(new ChangeAnimationIndexAct(animIndex));
        }
    }
Ejemplo n.º 7
0
 public void InsertAnimation(int index, VAnimation anim)
 {
     foreach (VChunk chunk in chunks)
     {
         if (chunk.GetAnimationIndex() >= index)
         {
             chunk.SetAnimationIndex(chunk.GetAnimationIndex() + 1);
         }
     }
     animations.Insert(index, anim);
     for (int layer = 0; layer < GetLayerCount(); layer++)
     {
         for (int frame = 0; frame < anim.GetFrameCount(); frame++)
         {
             chunks.Add(new VTileChunk(layer, index, frame, width, height, depth));
         }
     }
     SetDirty();
 }
Ejemplo n.º 8
0
    void Frames()
    {
        int index     = ed.tile.GetFrameIndex();
        int animIndex = ed.tile.GetAnimationIndex();

        if (animIndex >= ed.tile.GetAnimationCount())
        {
            return;
        }
        VAnimation anim  = ed.tile.GetAnimation(animIndex);
        int        count = anim.GetFrameCount();

        GUILayout.BeginVertical("box");
        showFrames = GUILayout.Toggle(showFrames, "Timeline", "boxhead");
        if (showFrames)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Frames");
            if (count > 1 && index < count && GUILayout.Button("-", GUILayout.Width(20)))
            {
                actQueue.Enqueue(new RemoveFrameAct(animIndex, index));
            }
            for (int i = 0; i < count; i++)
            {
                if (GUILayout.Toggle(i == index, "" + i, "button") && i != index)
                {
                    actQueue.Enqueue(new ChangeFrameIndexAct(i));
                }
            }
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("+", GUILayout.Width(20)))
            {
                actQueue.Enqueue(new AddFrameAct(animIndex));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.Label("Frame Duration");
            float duration;
            if (float.TryParse(GUILayout.TextField(anim.GetFrame(index).GetDuration().ToString(), GUILayout.Width(50)), out duration))
            {
                if (duration != anim.GetFrame(index).GetDuration())
                {
                    actQueue.Enqueue(new ChangeFrameInfoAct(animIndex, index, duration));
                }
            }
            GUILayout.FlexibleSpace();
            GUILayout.Label("Playback");
            bool play = GUILayout.Toggle(playAnimation, "Play", "button");
            if (play != playAnimation)
            {
                animationTime = 0f;
                playAnimation = play;
            }
            loopAnimation = GUILayout.Toggle(loopAnimation, "Loop", "button");
            GUILayout.EndHorizontal();
        }
        GUILayout.EndVertical();
        if (repaint)
        {
            boxRects.Add(GUILayoutUtility.GetLastRect());
        }
    }
Ejemplo n.º 9
0
 public VAniStateSit(VAnimation owner) : base((int)EStateAni.Sit, owner)
 {
     m_name = "坐";
 }
Ejemplo n.º 10
0
 public VAniStateMove(VAnimation owner) : base((int)EStateAni.Move, owner)
 {
     m_name = "移动";
 }
Ejemplo n.º 11
0
 public VAniStateIdle(VAnimation owner) : base((int)EStateAni.Idle, owner)
 {
     m_name = "站立";
 }
Ejemplo n.º 12
0
    public override bool IsNoOp()
    {
        VAnimation anim = Edit.use.tile.GetAnimation(animationIndex);

        return(name == anim.GetName());
    }
Ejemplo n.º 13
0
    public override void Undo()
    {
        VAnimation anim = Edit.use.tile.GetAnimation(animationIndex);

        anim.SetName(oldName);
    }