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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions