@JonB
Here:
from objc_util import *
from ctypes import *
import ctypes
lb = 24
def printHex(buf):
print( ":".join("{:02x}".format(c) for c in buf))
load_framework('SceneKit')
simd_float3 = c_uint32 * 3
SCNNode = ObjCClass('SCNNode')
aNode = SCNNode.alloc().init()
p5 = aNode.simdScale(restype=simd_float3, argtypes=[])
buf = string_at(byref(p5), lb)
printHex(buf)
print('p5[0]-[2] = ', p5[0], p5[1], p5[2])
#results in:
#80:0d:52:80:02:00:00:00:dc:26:de:01:00:00:00:00:00:00:00:00:00:00:00:00
#
#p5[0]-[2] = 2152861056 2 31336156
encoding: b'16@0:8' i.e., restype: void/int
The first 8 bytes of the result buffer looks like an address, if (for curiosity) you invoke ObjCInstance on it it returns the Node object aNode. Why???
The only reason I am trying to make the simd properties work is that the old ones might get phased out at some point in the future. Of course until then I can simply redirect the simd calls to the non-simd siblings.