コード例 #1
0
ファイル: Animation.cs プロジェクト: rainfiel/unity_editor
    void Update()
    {
        if (_AutoPlay)
        {
            AniStep();

            FrameIndex++;
            ST_action action = AniPack.actions[ActionIndex];
            if (FrameIndex < 0 || FrameIndex >= action.frames.Length)
            {
                FrameIndex = 0;
            }
        }
    }
コード例 #2
0
ファイル: Animation.cs プロジェクト: rainfiel/unity_editor
    public void AniStep()
    {
        if (Components == null)
        {
            return;
        }
        ST_action action = CurrentAction;

        if (FrameIndex < 0 || FrameIndex >= action.frames.Length)
        {
            return;
        }

        ST_frame frame = action.frames[FrameIndex];

        VisibleInFrame.Clear();
        for (int i = 0; i < frame.parts.Length; i++)
        {
            ST_frame_part part = frame.parts[i];
            if (part.index >= 0 && part.index < Components.Count)
            {
                GameObject obj = Components[part.index];
                VisibleInFrame.Add(obj);
                obj.SetActive(true);
                var mat = Matrix.ToMatrix4x4(part.mat, -i * 1.0f);
                Matrix.SetTransformFromMatrix(obj.transform, ref mat);
            }
            else
            {
                //Debug.LogError("components out of range");
            }
        }
        if (VisibleInFrame.Count != Components.Count)
        {
            foreach (var obj in Components)
            {
                if (!VisibleInFrame.Contains(obj))
                {
                    obj.SetActive(false);
                }
            }
        }
    }