Calculating delta in SpriteKit using Swift

sprite-kit, swift

Solution

This question belongs to codereview. But I just post answer here and hope it will be migrate to the correct place along with the question.

You have some redundant code, this is my first iteration re-write

class GameScene: SKScene {
    var lastUpdateTimeInterval: CFTimeInterval?

    override func update(currentTime: CFTimeInterval) {

        var delta: CFTimeInterval = currentTime // no reason to make it optional
        if let luti = lastUpdateTimeInterval {
            delta = currentTime - luti
        }

        lastUpdateTimeInterval = currentTime

        if delta > 1.0 {
            delta = minTimeInterval
            // this line is redundant lastUpdateTimeInterval = currentTime
        }

        updateWithTimeSinceLastUpdate(delta)
    }
}

and further simplified

class GameScene: SKScene {
    var lastUpdateTimeInterval: CFTimeInterval = 0

    override func update(currentTime: CFTimeInterval) {

        var delta: CFTimeInterval = currentTime - lastUpdateTimeInterval

        lastUpdateTimeInterval = currentTime

        if delta > 1.0 {
            delta = minTimeInterval
        }

        updateWithTimeSinceLastUpdate(delta)
    }
}

You can replace the `if` with `?:`, but some people just hate it for some reason

updateWithTimeSinceLastUpdate(delta > 1.0 ? minTimeInterval : delta)

Problem

I am attempting to learn swift by refactoring one of my old games and I need to rewrite my `update` method which calculates a delta time. This code works but is ugly. How would I go about properly rewriting this? ``` import SpriteKit class GameScene: SKScene { var lastUpdateTimeInterval: CFTimeInterval? override func update(currentTime: CFTimeInterval) { var delta: CFTimeInterval? if let luti = lastUpdateTimeInterval { delta = currentTime - luti } else { delta = currentTime } lastUpdateTimeInterval = currentTime; if (delta > 1.0) { delta = minTimeInterval; lastUpdateTimeInterval = currentTime; } updateWithTimeSinceLastUpdate(delta!) } } ```

Original source