85 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include "..\e2dtransition.h"
 | |
| #include "..\e2dobject.h"
 | |
| 
 | |
| e2d::RotationTransition::RotationTransition(float duration, float rotation)
 | |
| 	: Transition(duration)
 | |
| 	, rotation_(rotation)
 | |
| {
 | |
| }
 | |
| 
 | |
| void e2d::RotationTransition::Init(Scene * prev, Scene * next, Game * game)
 | |
| {
 | |
| 	Transition::Init(prev, next, game);
 | |
| 
 | |
| 	if (out_scene_)
 | |
| 	{
 | |
| 		out_scene_->SetTransform(D2D1::Matrix3x2F::Identity());
 | |
| 	}
 | |
| 
 | |
| 	if (in_scene_)
 | |
| 	{
 | |
| 		in_scene_->SetTransform(D2D1::Matrix3x2F::Identity());
 | |
| 	}
 | |
| 
 | |
| 	in_layer_param_.opacity = 0;
 | |
| }
 | |
| 
 | |
| void e2d::RotationTransition::Update()
 | |
| {
 | |
| 	Transition::Update();
 | |
| 
 | |
| 	auto center_pos = D2D1::Point2F(
 | |
| 		window_size_.width / 2,
 | |
| 		window_size_.height / 2
 | |
| 	);
 | |
| 
 | |
| 	if (process_ < .5f)
 | |
| 	{
 | |
| 		if (out_scene_)
 | |
| 		{
 | |
| 			out_scene_->SetTransform(
 | |
| 				D2D1::Matrix3x2F::Scale(
 | |
| 					(.5f - process_) * 2,
 | |
| 					(.5f - process_) * 2,
 | |
| 					center_pos
 | |
| 				) * D2D1::Matrix3x2F::Rotation(
 | |
| 					rotation_ * (.5f - process_) * 2,
 | |
| 					center_pos
 | |
| 				)
 | |
| 			);
 | |
| 		}
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		if (in_scene_)
 | |
| 		{
 | |
| 			out_layer_param_.opacity = 0;
 | |
| 			in_layer_param_.opacity = 1;
 | |
| 
 | |
| 			in_scene_->SetTransform(
 | |
| 				D2D1::Matrix3x2F::Scale(
 | |
| 					(process_ - .5f) * 2,
 | |
| 					(process_ - .5f) * 2,
 | |
| 					center_pos
 | |
| 				) * D2D1::Matrix3x2F::Rotation(
 | |
| 					rotation_ * (process_ - .5f) * 2,
 | |
| 					center_pos
 | |
| 				)
 | |
| 			);
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void e2d::RotationTransition::Reset()
 | |
| {
 | |
| 	if (out_scene_)
 | |
| 	{
 | |
| 		out_scene_->SetTransform(D2D1::Matrix3x2F::Identity());
 | |
| 	}
 | |
| 	
 | |
| 	if (in_scene_)
 | |
| 	{
 | |
| 		in_scene_->SetTransform(D2D1::Matrix3x2F::Identity());
 | |
| 	}
 | |
| }
 |