Wow, the screensaver runs!
This commit is contained in:
parent
b3a1f353b7
commit
86c07ef4f5
2 changed files with 25 additions and 23 deletions
|
@ -415,7 +415,7 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = me.erynwells.MetaballsSaver;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.2;
|
||||
WRAPPER_EXTENSION = saver;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -434,7 +434,7 @@
|
|||
MACOSX_DEPLOYMENT_TARGET = 10.12;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.erynwells.MetaballsSaver;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.2;
|
||||
WRAPPER_EXTENSION = saver;
|
||||
};
|
||||
name = Release;
|
||||
|
@ -588,7 +588,7 @@
|
|||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.erynwells.MetaballsTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = On;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Metaballs.app/Contents/MacOS/Metaballs";
|
||||
};
|
||||
|
@ -605,7 +605,7 @@
|
|||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.erynwells.MetaballsTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = On;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Metaballs.app/Contents/MacOS/Metaballs";
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@ import Foundation
|
|||
import MetalKit
|
||||
import ScreenSaver
|
||||
|
||||
public class MetaballsSaverView: ScreenSaverView, RendererDelegate {
|
||||
@objc public class MetaballsSaverView: ScreenSaverView, RendererDelegate {
|
||||
private static func defaultParameters() -> Parameters {
|
||||
var p = Parameters()
|
||||
let defaults = UserDefaults.standard
|
||||
|
@ -35,24 +35,18 @@ public class MetaballsSaverView: ScreenSaverView, RendererDelegate {
|
|||
|
||||
override public init?(frame: NSRect, isPreview: Bool) {
|
||||
let params = MetaballsSaverView.defaultParameters()
|
||||
metalView = MetalView()
|
||||
field = Field(parameters: params)
|
||||
field.size = Size(size: frame.size)
|
||||
|
||||
metalView = MetalView()
|
||||
metalView.isPaused = true // Don't use the Metal View's internal timer.
|
||||
metalView.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
renderer = Renderer()
|
||||
metalView.delegate = renderer
|
||||
|
||||
super.init(frame: frame, isPreview: isPreview)
|
||||
|
||||
animationTimeInterval = 1 / 30.0
|
||||
}
|
||||
|
||||
required public init?(coder: NSCoder) {
|
||||
fatalError("initWithCoder: not implemented")
|
||||
}
|
||||
|
||||
override public func startAnimation() {
|
||||
if metalView.superview == nil {
|
||||
metalView.isPaused = true // Don't use the Metal View's internal timer.
|
||||
metalView.translatesAutoresizingMaskIntoConstraints = false
|
||||
addSubview(metalView)
|
||||
NSLayoutConstraint.activate([
|
||||
metalView.topAnchor.constraint(equalTo: topAnchor),
|
||||
|
@ -60,13 +54,21 @@ public class MetaballsSaverView: ScreenSaverView, RendererDelegate {
|
|||
metalView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
||||
metalView.rightAnchor.constraint(equalTo: rightAnchor),
|
||||
])
|
||||
|
||||
renderer.delegate = self
|
||||
|
||||
animationTimeInterval = 1 / 30.0
|
||||
metalView.preferredFramesPerSecond = 30
|
||||
}
|
||||
|
||||
required public init?(coder: NSCoder) {
|
||||
fatalError("initWithCoder: not implemented")
|
||||
}
|
||||
|
||||
override public func startAnimation() {
|
||||
for _ in 1...10 {
|
||||
addBallWithRandomRadius()
|
||||
}
|
||||
|
||||
super.startAnimation()
|
||||
}
|
||||
|
||||
|
@ -79,14 +81,14 @@ public class MetaballsSaverView: ScreenSaverView, RendererDelegate {
|
|||
}
|
||||
|
||||
override public func draw(_ rect: NSRect) {
|
||||
super.draw(rect)
|
||||
metalView.draw()
|
||||
}
|
||||
|
||||
override public func hasConfigureSheet() -> Bool {
|
||||
override public var hasConfigureSheet: Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
override public func configureSheet() -> NSWindow? {
|
||||
override public var configureSheet: NSWindow? {
|
||||
let prefs = PreferencesViewController()
|
||||
prefs.showsCloseButton = true
|
||||
let window = NSWindow(contentViewController: prefs)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue