Есть ли способ использовать SceneKit с классом ScreenSaverView? - PullRequest
1 голос
/ 01 марта 2020

Есть ли способ использовать SceneView SceneKit, чтобы отобразить его в ScreenSaverView. Я попробовал несколько вещей, но не могу понять это.

Я знаю, что помещать 3D-графику в заставку не очень хорошая идея, просто сделать это для развлечения.

Вот код У меня сейчас:

import ScreenSaver
import Foundation
import SceneKit

class MainView: ScreenSaverView {
    var sceneView: SCNView

    // MARK: - Initialization
    override init?(frame: NSRect, isPreview: Bool) {
        sceneView = SCNView(frame: frame)

        super.init(frame: frame, isPreview: isPreview)

        sceneView.scene = SCNScene(named: "monkey")!
        self.addSubview(sceneView)
    }

    @available(*, unavailable)
    required init?(coder decoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    // MARK: - Lifecycle
    override func draw(_ rect: NSRect) {
        // Draw a single frame in this function
        self.sceneView.draw(bounds)
    }

    override func animateOneFrame() {
        super.animateOneFrame()
        // Update the "state" of the screensaver in this function
        setNeedsDisplay(bounds)
    }

}
...