port from perforce
This commit is contained in:
82
aiwaz/AiwazAnimator/AddAnimationWindow.xaml.cs
Normal file
82
aiwaz/AiwazAnimator/AddAnimationWindow.xaml.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user