예제 #1
0
        private void ApplyFields(TimelineEventData data)
        {
            FieldInfo[] fields = data.GetType().GetFields();
            dataFields.Clear();

            Type t = typeof(TimelineEventData);


            for (int i = 0; i < fields.Length; i++)
            {
                FieldInfo info = fields[i];

                if (Attribute.IsDefined(info, typeof(NotEditable)))
                {
                    continue;
                }

                if (info.FieldType.IsArray)
                {
                    SpawnArrayField(data, info);
                }
                else
                {
                    SpawnField(data, info);
                }
            }
        }
예제 #2
0
        public void Despawn(TimelineEventData data)
        {
            TimelineEventButton button = eventButtons.Find((TimelineEventButton b) => b.TimelineEventData == data);

            eventButtons.Remove(button);
            Destroy(button.gameObject);
        }
예제 #3
0
        /// <inheritdoc />
        public override void Apply(TimelineEventData eventData, FieldInfo fieldInfo, Action <TimelineEventData> onCoreValueChanged)
        {
            base.Apply(eventData, fieldInfo, onCoreValueChanged);

            content = (object[])fieldInfo.GetValue(eventData);
            Create(onCoreValueChanged);
        }
예제 #4
0
        private InterfaceDataField SpawnArrayField(TimelineEventData data, FieldInfo dataField)
        {
            InterfaceDataField field = Instantiate(BaseArrayField, transform);

            field.Apply(data, dataField, OnCoreValueChanged);
            dataFields.Add(field);
            return(field);
        }
예제 #5
0
        public void Spawn(TimelineEventData data)
        {
            TimelineEventButton newButton = Instantiate(baseEventButton, TimelineEventButtonContainer);

            newButton.SetTime(this, data, IntervalObjectSpawnInterval, IntervalObjectWidth);
            eventButtons.Add(newButton);
            OnEventSelected(data);
        }
예제 #6
0
        public void OnTimeChanged(TimelineEventData timelineEventData)
        {
            TimelineEventButton button = eventButtons.Find((TimelineEventButton b) => b.TimelineEventData == timelineEventData);

            if (button != null)
            {
                button.SetTime(this, timelineEventData, IntervalObjectSpawnInterval, IntervalObjectWidth);
            }
        }
예제 #7
0
        public void Delete()
        {
            if (EventData == null)
            {
                return;
            }

            Clear();
            (TimelineController.Instance as TimelineEditor).RemoveEvent(EventData);
            EventData = null;
        }
        public void SetTime(EditorInterface editorInterface, TimelineEventData timelineEventData, int intervalObjectSpawnInterval, float intervalObjectWidth)
        {
            this.editorInterface   = editorInterface;
            this.TimelineEventData = timelineEventData;

            transform.localPosition = Vector3.right * (timelineEventData.InvokeTime / intervalObjectSpawnInterval) * intervalObjectWidth;


            SelectionButton.onClick.RemoveListener(OnSelect);
            SelectionButton.onClick.AddListener(OnSelect);
        }
예제 #9
0
        public void Initialize(EditorInterface parent, TimelineEventData eventData)
        {
            Clear();

            this.parent    = parent;
            this.EventData = eventData;

            string name = string.Format(NAMEFORMAT, eventData.Id, eventData.Type.ToString());

            gameObject.name = name;
            Header.text     = string.Format(baseHeaderText, MultilanguageSupport.GetKeyWord(eventData.Type.ToString()));

            ApplyFields(eventData);
        }
예제 #10
0
        /// <inheritdoc />
        public override void Apply(TimelineEventData eventData, FieldInfo fieldInfo, Action <TimelineEventData> onCoreValueChanged)
        {
            base.Apply(eventData, fieldInfo, onCoreValueChanged);

            Spawn(
                fieldInfo.Name,
                fieldInfo.FieldType,
                fieldInfo.GetValue(eventData),
                (string s) =>
            {
                fieldInfo.SetValue(eventData, Convert.ChangeType(s, fieldInfo.FieldType));
                onCoreValueChanged.Invoke(eventData);
            });
        }
예제 #11
0
        public TimelineEventData AddEvent(TimelineEventContainer.EventType type)
        {
            if (CurrentChapter == null)
            {
                return(null);
            }

            TimelineEventData timelineEvent = TimelineEventContainer.CreateEventDataOfType(type);

            timelineEvent.Id   = CurrentChapter.NextId();
            timelineEvent.Type = type;
            CurrentChapter.AddEvent(timelineEvent);
            ComponentInterface.Spawn(timelineEvent);

            return(timelineEvent);
        }
예제 #12
0
 private void OnCoreValueChanged(TimelineEventData timelineEventData)
 {
     // If at some point you add additional core
     // variables, you can update them here.
     parent.OnTimeChanged(timelineEventData);
 }
예제 #13
0
 public void OnEventSelected(TimelineEventData selected)
 {
     PreviewComponent.Initialize(this, selected);
 }
예제 #14
0
 public virtual void Apply(TimelineEventData eventData, FieldInfo fieldInfo, Action <TimelineEventData> onCoreValueChanged)
 {
     this.eventData  = eventData;
     this.fieldInfo  = fieldInfo;
     gameObject.name = string.Format(NAMEFORMAT, fieldInfo.FieldType.ToString(), fieldInfo.Name);
 }
예제 #15
0
 public void UpdateEvent(TimelineEventData updatedEvent)
 {
     CurrentChapter.UpdateEvent(updatedEvent);
 }
예제 #16
0
 public void RemoveEvent(TimelineEventData data)
 {
     CurrentChapter.RemoveEvent(data);
     ComponentInterface.Despawn(data);
 }