@@ -7,7 +7,9 @@ public class TransformHelpers
77 {
88 public static string ActiveCameraPositionPointer = "/extensions/KHR_interactivity/activeCamera/position" ;
99 public static string ActiveCameraRotationPointer = "/extensions/KHR_interactivity/activeCamera/rotation" ;
10-
10+ public static string ActiveCameraGlobalMatrix = "/extensions/KHR_interactivity/activeCamera/globalMatrix" ;
11+ public static string ActiveCameraMatrix = "/extensions/KHR_interactivity/activeCamera/matrix" ;
12+
1113 public static void GetLocalScale ( INodeExporter exporter , out ValueInRef target ,
1214 out ValueOutRef scaleOutput )
1315 {
@@ -324,22 +326,17 @@ public static void GetWorldPosition(INodeExporter exporter, out ValueInRef targe
324326
325327 worldPosition = convertedOutput ;
326328 }
327-
328- public static void GetWorldPointFromLocalPoint ( INodeExporter exporter , out ValueInRef target , out ValueInRef localPoint ,
329+
330+ public static void GetWorldPointFromLocalPoint ( INodeExporter exporter , ValueOutRef worldMatrix ,
331+ out ValueInRef localPoint ,
329332 out ValueOutRef worldPoint )
330333 {
331- var worldMatrix = exporter . CreateNode < Pointer_GetNode > ( ) ;
332- worldMatrix . FirstValueOut ( ) . ExpectedType ( ExpectedType . Float4x4 ) ;
333- PointersHelper . SetupPointerTemplateAndTargetInput ( worldMatrix , PointersHelper . IdPointerNodeIndex ,
334- "/nodes/{" + PointersHelper . IdPointerNodeIndex + "}/globalMatrix" , GltfTypes . Float4x4 ) ;
335- target = worldMatrix . ValueIn ( PointersHelper . IdPointerNodeIndex ) ;
336-
337334 var trs = exporter . CreateNode < Math_MatComposeNode > ( ) ;
338335 if ( exporter . Context . addUnityGltfSpaceConversion )
339336 {
340- SpaceConversionHelpers . AddSpaceConversion ( exporter , out var unvconvertedLocalPoint ,
337+ SpaceConversionHelpers . AddSpaceConversion ( exporter , out var unconvertedLocalPoint ,
341338 out var localPointConverted ) ;
342- localPoint = unvconvertedLocalPoint ;
339+ localPoint = unconvertedLocalPoint ;
343340 trs . ValueIn ( Math_MatComposeNode . IdInputTranslation ) . ConnectToSource ( localPointConverted ) ;
344341 }
345342 else
@@ -349,7 +346,7 @@ public static void GetWorldPointFromLocalPoint(INodeExporter exporter, out Value
349346 trs . ValueIn ( Math_MatComposeNode . IdInputScale ) . SetValue ( Vector3 . one ) ;
350347
351348 var matrixMultiply = exporter . CreateNode < Math_MatMulNode > ( ) ;
352- matrixMultiply . ValueIn ( Math_MatMulNode . IdValueA ) . ConnectToSource ( worldMatrix . FirstValueOut ( ) ) ;
349+ matrixMultiply . ValueIn ( Math_MatMulNode . IdValueA ) . ConnectToSource ( worldMatrix ) ;
353350 matrixMultiply . ValueIn ( Math_MatMulNode . IdValueB ) . ConnectToSource ( trs . FirstValueOut ( ) ) ;
354351
355352 var decompose = exporter . CreateNode < Math_MatDecomposeNode > ( ) ;
@@ -367,8 +364,21 @@ public static void GetWorldPointFromLocalPoint(INodeExporter exporter, out Value
367364
368365 worldPoint = convertedOutput ;
369366 }
367+
368+ public static void GetWorldPointFromLocalPoint ( INodeExporter exporter , out ValueInRef target , out ValueInRef localPoint ,
369+ out ValueOutRef worldPoint )
370+ {
371+ var worldMatrix = exporter . CreateNode < Pointer_GetNode > ( ) ;
372+ worldMatrix . FirstValueOut ( ) . ExpectedType ( ExpectedType . Float4x4 ) ;
373+ PointersHelper . SetupPointerTemplateAndTargetInput ( worldMatrix , PointersHelper . IdPointerNodeIndex ,
374+ "/nodes/{" + PointersHelper . IdPointerNodeIndex + "}/globalMatrix" , GltfTypes . Float4x4 ) ;
375+ target = worldMatrix . ValueIn ( PointersHelper . IdPointerNodeIndex ) ;
376+
377+ GetWorldPointFromLocalPoint ( exporter , worldMatrix . FirstValueOut ( ) , out localPoint , out worldPoint ) ;
378+ }
370379
371- public static void GetLocalPointFromWorldPoint ( INodeExporter exporter , out ValueInRef target , out ValueInRef worldPoint ,
380+ public static void GetLocalPointFromWorldPoint ( INodeExporter exporter , out ValueInRef target ,
381+ out ValueInRef worldPoint ,
372382 out ValueOutRef localPoint )
373383 {
374384 var worldMatrix = exporter . CreateNode < Pointer_GetNode > ( ) ;
@@ -377,8 +387,14 @@ public static void GetLocalPointFromWorldPoint(INodeExporter exporter, out Value
377387 "/nodes/{" + PointersHelper . IdPointerNodeIndex + "}/globalMatrix" , GltfTypes . Float4x4 ) ;
378388 target = worldMatrix . ValueIn ( PointersHelper . IdPointerNodeIndex ) ;
379389
390+ GetLocalPointFromWorldPoint ( exporter , worldMatrix . FirstValueOut ( ) , out worldPoint , out localPoint ) ;
391+ }
392+
393+ public static void GetLocalPointFromWorldPoint ( INodeExporter exporter , ValueOutRef worldMatrix , out ValueInRef worldPoint ,
394+ out ValueOutRef localPoint )
395+ {
380396 var inverseMatrix = exporter . CreateNode < Math_InverseNode > ( ) ;
381- inverseMatrix . ValueIn ( Math_InverseNode . IdValueA ) . ConnectToSource ( worldMatrix . FirstValueOut ( ) ) ;
397+ inverseMatrix . ValueIn ( Math_InverseNode . IdValueA ) . ConnectToSource ( worldMatrix ) ;
382398
383399 var trs = exporter . CreateNode < Math_MatComposeNode > ( ) ;
384400 if ( exporter . Context . addUnityGltfSpaceConversion )
0 commit comments