diff --git a/MetaballsKit/Memory.swift b/MetaballsKit/Memory.swift index a0f2770..d9f39ae 100644 --- a/MetaballsKit/Memory.swift +++ b/MetaballsKit/Memory.swift @@ -17,9 +17,25 @@ extension UnsafeMutableRawPointer { } /// Metal's float4 type. 4 bytes per float, 16 bytes total, 16 byte aligned. -struct Float4 { - var x: Float = 0 - var y: Float = 0 - var z: Float = 0 - var w: Float = 0 +public struct Float4 { + public var x: Float = 0 + public var y: Float = 0 + public var z: Float = 0 + public var w: Float = 0 + + public init() { } + + public init(_ x: Float, _ y: Float, _ z: Float, _ w: Float) { + self.x = x + self.y = y + self.z = z + self.w = w + } + + public init(r: Float, g: Float, b: Float, a: Float) { + x = r + y = g + z = b + w = a + } } diff --git a/MetaballsKit/Metaballs.swift b/MetaballsKit/Metaballs.swift index 7dfed14..64c6c08 100644 --- a/MetaballsKit/Metaballs.swift +++ b/MetaballsKit/Metaballs.swift @@ -41,20 +41,18 @@ public struct Parameters { let unused3: UInt16 = 0xBA // Color parameters - var colorStyle = ColorStyle.gradient2Horizontal - var color0 = Float4() - var color1 = Float4() - var color2 = Float4() - var color3 = Float4() + public var colorStyle = ColorStyle.gradient2Horizontal + public var color0 = Float4() + public var color1 = Float4() + public var color2 = Float4() + public var color3 = Float4() + + public init() { } public mutating func write(to buffer: MTLBuffer, offset: Int = 0) { - let head = buffer.contents() - let start = head.advanced(by: offset) - + let start = buffer.contents().advanced(by: offset) let stride = MemoryLayout.stride(ofValue: self) start.copyBytes(from: &self, count: stride) - - NSLog("Populated parameters: size:\(size), n:\(numberOfBalls)") } } @@ -110,14 +108,14 @@ public class Field { private(set) var balls = [Ball]() - private var parameters = Parameters() + private var parameters: Parameters internal var bounds: CGRect { return CGRect(origin: CGPoint(), size: CGSize(size: size)) } - public init(size s: Size) { - size = s + public init(parameters p: Parameters) { + parameters = p } public func update() {