//
//  ElAnimation.h
//  Jigs
//
//  Created by döme on 11.08.2009.
//  Copyright 2009 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "geometry.h"

enum
{
	kElLinearInterpolation,
	kElEaseInInterpolation,
	kElEaseOutInterpolation,
	kElSmoothInterpolation,
	kElInterpolationLast
};

@interface ElAnimation : NSObject
{
	NSTimeInterval	startTime, duration;
	int				interpolation;
}

@property(assign) NSTimeInterval duration;

@property(assign) int interpolation;

- (void) queueForKey: (NSString*) key atBeginning: (BOOL) atBeginning cancelPending: (BOOL) cancelPending;

+ (ElAnimation*) delayedAnimationWithDelay: (float) seconds;

+ (NSTimeInterval) now;
+ (NSTimeInterval) currentTime;

@end



@interface ElFloatAnimation : ElAnimation
{
	float startValue, endValue;
	NSString*	property;
	id			target;
	
	
}

@property(assign) float startValue, endValue;

@property(copy) NSString* property;
@property(retain) id target;

@end

@interface ElV3Animation : ElAnimation
{
	v3			startv, endv;
	SEL			setter;
	id			target;
	
	
}

@property(assign) v3 startv, endv;

@property(assign) SEL setter;
@property(retain) id target;

@end

@interface ElCGPositionAnimation : ElAnimation
{
	CGPoint		startPoint, endPoint;
	id			target;
	
	
}

@property(assign) CGPoint startPoint, endPoint;

@property(retain) id target;

@end



extern	NSString*	AnimationAbsoluteTimeKey;
extern	NSString*	AnimationPassedTimeKey;
extern	NSString*	AnimationDeltaTimeKey;
extern	NSString*	AnimationUserInfoKey;

@interface ElCallbackAnimation : ElAnimation
{
	id	target;
	id	userInfo;
	SEL	callback;
}

@property(retain) id target;
@property(retain) id userInfo;
@property(assign) SEL callback;

@end

/*
typedef int (^ElAnimationBlock)(id target, id userInfo);

@interface ElBlockAnimation : ElAnimation
{
	id	target;
	id	userInfo;
	ElAnimationBlock	callback;
}

@property(retain) id target;
@property(retain) id userInfo;
@property(retain) ElAnimationBlock callback;

@end
*/


