Skip to content

Enhancement - Time Warp slider / fake clock #57

@johndpope

Description

@johndpope

so this class looks re-usable - by adding a uislider - they are usually added on the right hand side of screen / by sliding finger up and down - the universe would spin accordingly.
gavineadie/Geometries@b9fea34

/*╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
  ║ FakeClock.swift                                                                       Satellites ║
  ║ Created by Gavin Eadie on Aug26/17  ..  Copyright © 2017 Ramsay Consulting. All rights reserved. ║
  ╚══════════════════════════════════════════════════════════════════════════════════════════════════╝*/

import Foundation
import SatKit

class FakeClock {

    typealias JulianDays = Double

    static let shared = FakeClock()

    public var dateOffset: Double = 0.0
    public var dateFactor: Double = 0.0
           var dateOrigin: Date = Date()

    public func date() -> Date {

        let now = Date()
        return now + dateOffset + now.timeIntervalSince(dateOrigin) * dateFactor

    }

    public func reset() {

        self.dateOffset = 0.0
        dateFactor = 0.0
        dateOrigin = Date()

    }

    public func julianDaysNow() -> JulianDays {
        return JD.appleZero + self.date().timeIntervalSinceReferenceDate * TimeConstants.sec2day
    }

    public func ep1950DaysNow() -> Double {
        return julianDaysNow() - JD.noradZero
    }

}

      let slider = UISlider(frame: CGRectZero)
  
            slider.transform = CGAffineTransformRotate(rotateTransform, CGFloat(-90.0 * M_PI / 180.0));
            slider.addTarget(self, action: #selector(ToneCurveEditor.sliderChangeHandler(_:)), forControlEvents: .ValueChanged)
            
            addSubview(slider)


// TODO - tweak this logic. 
 func sliderChangeHandler(slider : UISlider)
    {
       FakeClock.shared.dateOffset +=  slider.value
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions