-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDriftingMotion.swift
More file actions
41 lines (33 loc) · 1.04 KB
/
DriftingMotion.swift
File metadata and controls
41 lines (33 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//
// DriftingMotion.swift
// Jikoku
//
// Created by Raphaël Calabro on 10/08/2017.
// Copyright © 2017 Raphaël Calabro. All rights reserved.
//
import Foundation
import Melisse
import GLKit
class DriftingMotion : Motion {
var speed: Point<GLfloat>
var alpha: GLfloat = 1
var color: Color<GLubyte>
init(speed: Point<GLfloat>) {
self.speed = speed
self.color = .white
}
func updateWith(_ timeSinceLastUpdate: TimeInterval, sprite: Sprite) {
alpha = max(alpha - GLfloat(timeSinceLastUpdate), 0)
sprite.tint = color * alpha
sprite.frame.center += speed * GLfloat(timeSinceLastUpdate)
if alpha < 0.5 {
speed = speed * 0.9
}
if alpha == 0 {
sprite.destroy()
}
}
}
func *(lhs: Color<GLubyte>, rhs: GLfloat) -> Color<GLubyte> {
return Color(red: GLubyte(GLfloat(lhs.red) * rhs), green: GLubyte(GLfloat(lhs.green) * rhs), blue: GLubyte(GLfloat(lhs.blue) * rhs), alpha: GLubyte(GLfloat(lhs.alpha) * rhs))
}