Skip to content

Commit 9c6d582

Browse files
Update wrappers (#610)
1 parent 2fb763c commit 9c6d582

File tree

2 files changed

+167
-17
lines changed

2 files changed

+167
-17
lines changed

lib/mps/libmps.jl

Lines changed: 98 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2601,25 +2601,113 @@ function Base.setproperty!(x::Ptr{_MPSPackedFloat3}, f::Symbol, v)
26012601
return unsafe_store!(getproperty(x, f), v)
26022602
end
26032603

2604+
function Base.propertynames(x::_MPSPackedFloat3, private::Bool = false)
2605+
return (
2606+
:x, :y, :z, :elements, if private
2607+
fieldnames(typeof(x))
2608+
else
2609+
()
2610+
end...,
2611+
)
2612+
end
2613+
26042614
const MPSPackedFloat3 = _MPSPackedFloat3
26052615

26062616
struct MPSRayPackedOriginDirection
2607-
origin::MPSPackedFloat3
2608-
direction::MPSPackedFloat3
2617+
data::NTuple{24, UInt8}
2618+
end
2619+
2620+
function Base.getproperty(x::Ptr{MPSRayPackedOriginDirection}, f::Symbol)
2621+
f === :origin && return Ptr{MPSPackedFloat3}(x + 0)
2622+
f === :direction && return Ptr{MPSPackedFloat3}(x + 12)
2623+
return getfield(x, f)
2624+
end
2625+
2626+
function Base.getproperty(x::MPSRayPackedOriginDirection, f::Symbol)
2627+
r = Ref{MPSRayPackedOriginDirection}(x)
2628+
ptr = Base.unsafe_convert(Ptr{MPSRayPackedOriginDirection}, r)
2629+
fptr = getproperty(ptr, f)
2630+
return GC.@preserve r unsafe_load(fptr)
2631+
end
2632+
2633+
function Base.setproperty!(x::Ptr{MPSRayPackedOriginDirection}, f::Symbol, v)
2634+
return unsafe_store!(getproperty(x, f), v)
2635+
end
2636+
2637+
function Base.propertynames(x::MPSRayPackedOriginDirection, private::Bool = false)
2638+
return (
2639+
:origin, :direction, if private
2640+
fieldnames(typeof(x))
2641+
else
2642+
()
2643+
end...,
2644+
)
26092645
end
26102646

26112647
struct MPSRayOriginMinDistanceDirectionMaxDistance
2612-
origin::MPSPackedFloat3
2613-
minDistance::Cfloat
2614-
direction::MPSPackedFloat3
2615-
maxDistance::Cfloat
2648+
data::NTuple{32, UInt8}
2649+
end
2650+
2651+
function Base.getproperty(x::Ptr{MPSRayOriginMinDistanceDirectionMaxDistance}, f::Symbol)
2652+
f === :origin && return Ptr{MPSPackedFloat3}(x + 0)
2653+
f === :minDistance && return Ptr{Cfloat}(x + 12)
2654+
f === :direction && return Ptr{MPSPackedFloat3}(x + 16)
2655+
f === :maxDistance && return Ptr{Cfloat}(x + 28)
2656+
return getfield(x, f)
2657+
end
2658+
2659+
function Base.getproperty(x::MPSRayOriginMinDistanceDirectionMaxDistance, f::Symbol)
2660+
r = Ref{MPSRayOriginMinDistanceDirectionMaxDistance}(x)
2661+
ptr = Base.unsafe_convert(Ptr{MPSRayOriginMinDistanceDirectionMaxDistance}, r)
2662+
fptr = getproperty(ptr, f)
2663+
return GC.@preserve r unsafe_load(fptr)
2664+
end
2665+
2666+
function Base.setproperty!(x::Ptr{MPSRayOriginMinDistanceDirectionMaxDistance}, f::Symbol, v)
2667+
return unsafe_store!(getproperty(x, f), v)
2668+
end
2669+
2670+
function Base.propertynames(x::MPSRayOriginMinDistanceDirectionMaxDistance, private::Bool = false)
2671+
return (
2672+
:origin, :minDistance, :direction, :maxDistance, if private
2673+
fieldnames(typeof(x))
2674+
else
2675+
()
2676+
end...,
2677+
)
26162678
end
26172679

26182680
struct MPSRayOriginMaskDirectionMaxDistance
2619-
origin::MPSPackedFloat3
2620-
mask::Cuint
2621-
direction::MPSPackedFloat3
2622-
maxDistance::Cfloat
2681+
data::NTuple{32, UInt8}
2682+
end
2683+
2684+
function Base.getproperty(x::Ptr{MPSRayOriginMaskDirectionMaxDistance}, f::Symbol)
2685+
f === :origin && return Ptr{MPSPackedFloat3}(x + 0)
2686+
f === :mask && return Ptr{Cuint}(x + 12)
2687+
f === :direction && return Ptr{MPSPackedFloat3}(x + 16)
2688+
f === :maxDistance && return Ptr{Cfloat}(x + 28)
2689+
return getfield(x, f)
2690+
end
2691+
2692+
function Base.getproperty(x::MPSRayOriginMaskDirectionMaxDistance, f::Symbol)
2693+
r = Ref{MPSRayOriginMaskDirectionMaxDistance}(x)
2694+
ptr = Base.unsafe_convert(Ptr{MPSRayOriginMaskDirectionMaxDistance}, r)
2695+
fptr = getproperty(ptr, f)
2696+
return GC.@preserve r unsafe_load(fptr)
2697+
end
2698+
2699+
function Base.setproperty!(x::Ptr{MPSRayOriginMaskDirectionMaxDistance}, f::Symbol, v)
2700+
return unsafe_store!(getproperty(x, f), v)
2701+
end
2702+
2703+
function Base.propertynames(x::MPSRayOriginMaskDirectionMaxDistance, private::Bool = false)
2704+
return (
2705+
:origin, :mask, :direction, :maxDistance, if private
2706+
fieldnames(typeof(x))
2707+
else
2708+
()
2709+
end...,
2710+
)
26232711
end
26242712

26252713
struct MPSIntersectionDistance

lib/mtl/libmtl.jl

Lines changed: 69 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2151,6 +2151,16 @@ function Base.setproperty!(x::Ptr{_MTLPackedFloat3}, f::Symbol, v)
21512151
return unsafe_store!(getproperty(x, f), v)
21522152
end
21532153

2154+
function Base.propertynames(x::_MTLPackedFloat3, private::Bool = false)
2155+
return (
2156+
:x, :y, :z, :elements, if private
2157+
fieldnames(typeof(x))
2158+
else
2159+
()
2160+
end...,
2161+
)
2162+
end
2163+
21542164
const MTLPackedFloat3 = _MTLPackedFloat3
21552165

21562166
function MTLPackedFloat3Make(x, y, z)
@@ -2175,18 +2185,70 @@ end
21752185
const MTLPackedFloat4x3 = _MTLPackedFloat4x3
21762186

21772187
struct _MTLAxisAlignedBoundingBox
2178-
min::MTLPackedFloat3
2179-
max::MTLPackedFloat3
2188+
data::NTuple{24, UInt8}
2189+
end
2190+
2191+
function Base.getproperty(x::Ptr{_MTLAxisAlignedBoundingBox}, f::Symbol)
2192+
f === :min && return Ptr{MTLPackedFloat3}(x + 0)
2193+
f === :max && return Ptr{MTLPackedFloat3}(x + 12)
2194+
return getfield(x, f)
2195+
end
2196+
2197+
function Base.getproperty(x::_MTLAxisAlignedBoundingBox, f::Symbol)
2198+
r = Ref{_MTLAxisAlignedBoundingBox}(x)
2199+
ptr = Base.unsafe_convert(Ptr{_MTLAxisAlignedBoundingBox}, r)
2200+
fptr = getproperty(ptr, f)
2201+
return GC.@preserve r unsafe_load(fptr)
2202+
end
2203+
2204+
function Base.setproperty!(x::Ptr{_MTLAxisAlignedBoundingBox}, f::Symbol, v)
2205+
return unsafe_store!(getproperty(x, f), v)
2206+
end
2207+
2208+
function Base.propertynames(x::_MTLAxisAlignedBoundingBox, private::Bool = false)
2209+
return (
2210+
:min, :max, if private
2211+
fieldnames(typeof(x))
2212+
else
2213+
()
2214+
end...,
2215+
)
21802216
end
21812217

21822218
const MTLAxisAlignedBoundingBox = _MTLAxisAlignedBoundingBox
21832219

21842220
struct MTLComponentTransform
2185-
scale::MTLPackedFloat3
2186-
shear::MTLPackedFloat3
2187-
pivot::MTLPackedFloat3
2188-
rotation::MTLPackedFloatQuaternion
2189-
translation::MTLPackedFloat3
2221+
data::NTuple{64, UInt8}
2222+
end
2223+
2224+
function Base.getproperty(x::Ptr{MTLComponentTransform}, f::Symbol)
2225+
f === :scale && return Ptr{MTLPackedFloat3}(x + 0)
2226+
f === :shear && return Ptr{MTLPackedFloat3}(x + 12)
2227+
f === :pivot && return Ptr{MTLPackedFloat3}(x + 24)
2228+
f === :rotation && return Ptr{MTLPackedFloatQuaternion}(x + 36)
2229+
f === :translation && return Ptr{MTLPackedFloat3}(x + 52)
2230+
return getfield(x, f)
2231+
end
2232+
2233+
function Base.getproperty(x::MTLComponentTransform, f::Symbol)
2234+
r = Ref{MTLComponentTransform}(x)
2235+
ptr = Base.unsafe_convert(Ptr{MTLComponentTransform}, r)
2236+
fptr = getproperty(ptr, f)
2237+
return GC.@preserve r unsafe_load(fptr)
2238+
end
2239+
2240+
function Base.setproperty!(x::Ptr{MTLComponentTransform}, f::Symbol, v)
2241+
return unsafe_store!(getproperty(x, f), v)
2242+
end
2243+
2244+
function Base.propertynames(x::MTLComponentTransform, private::Bool = false)
2245+
return (
2246+
:scale, :shear, :pivot, :rotation, :translation, if private
2247+
fieldnames(typeof(x))
2248+
else
2249+
()
2250+
end...,
2251+
)
21902252
end
21912253

21922254
@cenum MTLAccelerationStructureUsage::UInt64 begin

0 commit comments

Comments
 (0)