コード例 #1
0
ファイル: AMTimeline.cs プロジェクト: nathanfunk/MateAnimator
    public Texture getTrackIconTexture(AMTrack _track)
    {
        if(_track is AMAnimationTrack) return texIconAnimation;
        else if(_track is AMEventTrack) return texIconEvent;
        else if(_track is AMPropertyTrack) return texIconProperty;
        else if(_track is AMTranslationTrack) return texIconTranslation;
        else if(_track is AMAudioTrack) return texIconAudio;
        else if(_track is AMRotationTrack) return texIconRotation;
        else if(_track is AMOrientationTrack) return texIconOrientation;
        else if(_track is AMGOSetActiveTrack) return texIconProperty;

        Debug.LogWarning("Animator: Icon texture not found for track " + _track.getTrackType());
        return null;
    }
コード例 #2
0
ファイル: AMTimeline.cs プロジェクト: nathanfunk/MateAnimator
    bool showTrack(AMTrack _track, int t, int group_level, ref float track_y, ref bool isAnyTrackFoldedOut, ref float height_group_elements, Event e, Vector2 scrollViewBounds)
    {
        // track is beyond bounds
        if(track_y + (_track.foldout ? height_track : height_track_foldin) < scrollViewBounds.x || track_y > scrollViewBounds.y) {
            if(_track.foldout) {
                track_y += height_track;
                isAnyTrackFoldedOut = true;
            }
            else {
                track_y += height_track_foldin;
            }
            return false;
        }
        // returns true if mouse over track
        bool mouseOverTrack = false;
        float track_x = width_subtrack_space * group_level;
        bool inGroup = group_level > 0;
        bool isTrackSelected = aData.getCurrentTake().selectedTrack == t;
        bool isTrackContextSelected = aData.getCurrentTake().contextSelectionTracks.Contains(t);
        Rect rectTrack;
        string strStyle;
        if(isTrackSelected) {
            if(aData.getCurrentTake().contextSelectionTracks.Count <= 1)
                strStyle = "GroupElementActive";
            else
                strStyle = "GroupElementSelectedActive";
        }
        else if(isTrackContextSelected) strStyle = "GroupElementSelected";
        else strStyle = "GroupElementNormal";

        rectTrack = new Rect(track_x, track_y, width_track - track_x, height_track_foldin);
        // renaming track
        if(isRenamingTrack != t) {
            Rect rectTrackFoldin = new Rect(rectTrack.x, rectTrack.y, rectTrack.width, rectTrack.height);	// used to toggle track foldout
            if(_track.foldout) {
                rectTrackFoldin.width -= 55f;
            }
            if(GUI.Button(new Rect(rectTrack.x, rectTrack.y, 15f, rectTrack.height), "", "label")) {
                _track.foldout = !_track.foldout;
                timelineSelectTrack(t);
            }
            if(GUI.Button(new Rect(rectTrack.x + 15f, rectTrack.y, rectTrack.width - 15f, rectTrack.height), "", "label")) {
                timelineSelectTrack(t);
                if(didDoubleClick("track" + t + "foldout")) {
                    cancelTextEditting();
                    //_track.foldout = !_track.foldout;
                    isRenamingTrack = t;

                    if(!_track.foldout) _track.foldout = true;
                }
            }
        }
        // set track icon texture
        Texture texIcon = getTrackIconTexture(_track);
        // track start, foldin
        if(!_track.foldout) {
            if(rectTrack.width > 4f) {
                if(rectTrack.Contains(e.mousePosition) && mouseOverElement == (int)ElementType.None) {
                    mouseOverTrack = true;
                    mouseOverElement = (int)ElementType.Track;
                    mouseOverGroupElement = new Vector2((inGroup ? aData.getCurrentTake().getTrackGroup(t) : 0), t);
                }
                GUI.BeginGroup(rectTrack, GUI.skin.GetStyle(strStyle));
                GUI.DrawTexture(new Rect(17f, (height_track_foldin - 12f) / 2f, 12f, 12f), texIcon);
                GUI.Label(new Rect(17f + 12f + 2f, 0f, rectTrack.width - (12f + 15f + 2f), height_track_foldin), _track.name);
                GUI.EndGroup();
                // draw foldout
                if(rectTrack.width >= 10f) GUI.DrawTexture(new Rect(track_x, track_y + (height_group - 16f) / 2f, 16f, 16f), (_track.foldout ? GUI.skin.GetStyle("GroupElementFoldout").normal.background : GUI.skin.GetStyle("GroupElementFoldout").active.background));
            }
            else {
                // tooltip hidden track, foldin
                GUI.enabled = false;
                GUI.Button(new Rect(width_track - 80f, track_y, 80f, height_group), trimString(_track.name, 8));
                GUI.enabled = !isPlaying;
            }
            track_y += height_track_foldin;
        }
        else {
            // track start, foldout
            // track rect
            rectTrack = new Rect(track_x, track_y, width_track - track_x, height_track);
            if(rectTrack.width > 4f) {
                // select track texture
                if(rectTrack.Contains(e.mousePosition) && mouseOverElement == (int)ElementType.None) {
                    mouseOverTrack = true;
                    mouseOverElement = (int)ElementType.Track;
                    mouseOverGroupElement = new Vector2((inGroup ? aData.getCurrentTake().getTrackGroup(t) : 0), t);
                }
                // draw track texture
                GUI.BeginGroup(rectTrack, GUI.skin.GetStyle(strStyle));
                // track name
                if(isRenamingTrack == t) {
                    GUI.SetNextControlName("RenameTrack" + t);
                    _track.name = GUI.TextField(new Rect(15f, 2f, rectTrack.width - 15f, 20f), _track.name, 20);
                    GUI.FocusControl("RenameTrack" + t);

                }
                else {
                    GUI.Label(new Rect(15f, 0f, rectTrack.width - 15f, 20f), _track.name);
                }
                // track type
                Rect rectTrackIcon = new Rect(4f, 20f, 12f, 12f);
                GUI.Box(rectTrackIcon, texIcon);
                string trackType = _track.getTrackType();
                Rect rectTrackType = new Rect(rectTrackIcon.x + rectTrackIcon.width + 2f, height_track - 39f, rectTrack.width - 20f, 15f);
                if((_track is AMPropertyTrack) && (trackType == "Not Set"))
                    rectTrackType.width -= 48f;
                GUI.Label(rectTrackType, trackType);
                // if property track, show set property button
                if(_track is AMPropertyTrack) {
                    if(!(_track as AMPropertyTrack).obj) GUI.enabled = false;
                    GUIStyle styleButtonSet = new GUIStyle(GUI.skin.button);
                    styleButtonSet.clipping = TextClipping.Overflow;
                    if(GUI.Button(new Rect(width_track - 48f - width_subtrack_space * group_level - 4f, height_track - 38f, 48f, 15f), "Set", styleButtonSet)) {
                        // show property select window
                        AMPropertySelect.setValues((_track as AMPropertyTrack));
                        EditorWindow.GetWindow(typeof(AMPropertySelect));
                    }
                    GUI.enabled = !isPlaying;
                }
                // track object
                float width_object_field = width_track - track_x;
                showObjectFieldFor(_track, width_object_field, new Rect(padding_track, 39f, width_track - width_subtrack_space * group_level - padding_track * 2, 16f));
                GUI.EndGroup();
            }
            else {
                // tooltip hidden track, foldout
                GUI.enabled = false;
                GUI.Button(new Rect(width_track - 80f, track_y, 80f, height_group), trimString(_track.name, 8));
                GUI.enabled = !isPlaying;
            }
            // track button
            if(GUI.Button(rectTrack, "", "label")) {
                timelineSelectTrack(t);
            }
            // draw foldout
            if(rectTrack.width >= 15f) GUI.DrawTexture(new Rect(track_x, track_y + (height_group - 16f) / 2f, 16f, 16f), (_track.foldout ? GUI.skin.GetStyle("GroupElementFoldout").normal.background : GUI.skin.GetStyle("GroupElementFoldout").active.background));
            track_y += height_track;
            isAnyTrackFoldedOut = true;
            // track end
        }
        // draw element position texture after track
        if(dragType == (int)DragType.GroupElement) {
            if(mouseOverElement == (int)ElementType.Track && mouseOverGroupElement.y == t) {
                GUI.DrawTexture(new Rect(rectTrack.x, rectTrack.y + rectTrack.height - height_element_position, rectTrack.width, height_element_position), tex_element_position);
            }
        }
        height_group_elements += rectTrack.height;
        return mouseOverTrack;
    }