83 lines
2.7 KiB
C#
83 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
using AiwazAnimator.Animations;
|
|
using System.Diagnostics;
|
|
|
|
namespace AiwazAnimator
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for AddAnimationWindow.xaml
|
|
/// </summary>
|
|
public partial class AddAnimationWindow : Window
|
|
{
|
|
private MainWindow MainWindow;
|
|
private List<string> Targets;
|
|
|
|
public AddAnimationWindow(MainWindow mainWindow)
|
|
{
|
|
MainWindow = mainWindow;
|
|
InitializeComponent();
|
|
Targets = new List<string>();
|
|
foreach (var property in MainWindow.GetType().GetProperties())
|
|
{
|
|
foreach (var attribute in property.GetCustomAttributes(false))
|
|
{
|
|
if (attribute.GetType().Equals(typeof(Animateable)))
|
|
{
|
|
Targets.Add(property.Name);
|
|
}
|
|
}
|
|
}
|
|
cmbTarget.ItemsSource = Targets;
|
|
}
|
|
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
Animation a = null;
|
|
|
|
switch (cmbInterpolation.SelectedIndex)
|
|
{
|
|
case 0: a = new LinearAnimation(); break;
|
|
case 1: a = new CosineAnimation(); break;
|
|
}
|
|
|
|
if (a != null)
|
|
{
|
|
a.StartTime = float.Parse(txtStartTime.Text);
|
|
a.EndTime = float.Parse(txtEndTime.Text);
|
|
a.StartValue = float.Parse(txtStartValue.Text);
|
|
a.EndValue = float.Parse(txtEndValue.Text);
|
|
foreach (var property in MainWindow.GetType().GetProperties())
|
|
{
|
|
if (property.Name != cmbTarget.Text)
|
|
continue;
|
|
|
|
foreach (var attribute in property.GetCustomAttributes(false))
|
|
{
|
|
if (attribute.GetType().Equals(typeof(Animateable)))
|
|
{
|
|
a.ValueGetter = () => { return (float)property.GetValue(MainWindow, null); };
|
|
a.ValueSetter = (v) => { property.SetValue(MainWindow, v, null); };
|
|
a.ValueNamer = () => { return property.Name; };
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
MainWindow.AnimationManager.Animations.Add(a);
|
|
}
|
|
|
|
this.Close();
|
|
}
|
|
}
|
|
}
|