public PropTimelineData this[ShowPropSubAction subAction]
 {
     get
     {
         return(actionDataBindings[subAction]);
     }
 }
        void trackFilter_AddTrackItem(string name, Object trackUserObject)
        {
            ShowPropSubActionPrototype actionPrototype = (ShowPropSubActionPrototype)trackUserObject;
            ShowPropSubAction          subAction       = actionPrototype.createSubAction();

            subAction.StartTime = timelineView.MarkerTime;
            if (subAction is MovePropAction)
            {
                //This is a bit hacky, but if the action is a MovePropAction grab the
                //current location and set that for the move position.
                //This makes editing easier.
                MovePropAction moveProp = (MovePropAction)subAction;
                if (timelineView.CurrentData != null && timelineView.CurrentData.Track == "Move")
                {
                    MovePropAction currentMoveProp = (MovePropAction)((PropTimelineData)timelineView.CurrentData).Action;
                    moveProp.Translation = currentMoveProp.Translation;
                    moveProp.Rotation    = currentMoveProp.Rotation;
                }
                else
                {
                    moveProp.Translation = propData.Translation;
                    moveProp.Rotation    = propData.Rotation;
                }
            }
            propData.addSubAction(subAction);
        }
        public PropTimelineData createData(ShowPropAction showProp, ShowPropSubAction subAction, PropEditController propEditController)
        {
            PropTimelineData timelineData = new PropTimelineData(subAction, propEditController);

            actionDataBindings.Add(subAction, timelineData);
            return(timelineData);
        }
 public PropTimelineData(ShowPropSubAction action, PropEditController propEditController)
 {
     this.action              = action;
     this.propEditController  = propEditController;
     action.StartTimeChanged += action_StartTimeChanged;
     action.DurationChanged  += action_DurationChanged;
 }
 private void addSubActionData(ShowPropSubAction subAction, bool clearSelection)
 {
     timelineView.addData(timelineDataManager.createData(propData, subAction, propEditController), clearSelection);
 }
 void propData_ActionAdded(ShowPropAction showProp, ShowPropSubAction subAction)
 {
     addSubActionData(subAction, true);
 }
 void propData_ActionRemoved(ShowPropAction showProp, ShowPropSubAction subAction)
 {
     timelineView.removeData(timelineDataManager[subAction]);
     timelineDataManager.destroyData(subAction);
 }
 public void destroyData(ShowPropSubAction subAction)
 {
     actionDataBindings[subAction].Dispose();
     actionDataBindings.Remove(subAction);
 }
 void action_StartTimeChanged(ShowPropSubAction obj)
 {
     StartTime = obj.StartTime;
 }
 void action_DurationChanged(ShowPropSubAction obj)
 {
     Duration = obj.Duration;
 }