@@ -90,9 +90,9 @@ public static int GetDataSHL2Stride()
90
90
return 9 * 3 - GetDataSHL0Stride();
91
91
} */
92
92
93
- public static bool IsNull ( ref MaskVolumePayload payload )
93
+ public static bool IsEmpty ( ref MaskVolumePayload payload )
94
94
{
95
- return payload . dataSHL0 == null ;
95
+ return payload . dataSHL0 == null || payload . dataSHL0 . Length == 0 ;
96
96
}
97
97
98
98
public static int GetLength ( ref MaskVolumePayload payload )
@@ -766,6 +766,8 @@ internal void CreateAsset()
766
766
int numMasks = parameters . resolutionX * parameters . resolutionY * parameters . resolutionZ ;
767
767
MaskVolumePayload . Allocate ( ref maskVolumeAsset . payload , numMasks ) ;
768
768
769
+ UnityEditor . EditorUtility . SetDirty ( maskVolumeAsset ) ;
770
+
769
771
dataUpdated = true ;
770
772
}
771
773
@@ -779,36 +781,40 @@ internal void ResampleAsset()
779
781
int numMasks = parameters . resolutionX * parameters . resolutionY * parameters . resolutionZ ;
780
782
MaskVolumePayload newPayload = default ;
781
783
MaskVolumePayload . Allocate ( ref newPayload , numMasks ) ;
782
-
783
- for ( int z = 0 ; z < parameters . resolutionZ ; z ++ )
784
+
785
+ if ( oldResolutionX > 0 && oldResolutionY > 0 && oldResolutionZ > 0 && ! MaskVolumePayload . IsEmpty ( ref oldPayload ) )
784
786
{
785
- CalculateResamplingWeights ( oldResolutionZ , parameters . resolutionZ , z , out int oldZLow , out int oldZHigh , out float oldZLowWeight , out float oldZHighWeight ) ;
786
-
787
- for ( int y = 0 ; y < parameters . resolutionY ; y ++ )
787
+ for ( int z = 0 ; z < parameters . resolutionZ ; z ++ )
788
788
{
789
- CalculateResamplingWeights ( oldResolutionY , parameters . resolutionY , y , out int oldYLow , out int oldYHigh , out float oldYLowWeight , out float oldYHighWeight ) ;
790
-
791
- for ( int x = 0 ; x < parameters . resolutionX ; x ++ )
789
+ CalculateResamplingWeights ( oldResolutionZ , parameters . resolutionZ , z , out int oldZLow , out int oldZHigh , out float oldZLowWeight , out float oldZHighWeight ) ;
790
+
791
+ for ( int y = 0 ; y < parameters . resolutionY ; y ++ )
792
792
{
793
- CalculateResamplingWeights ( oldResolutionX , parameters . resolutionX , x , out int oldXLow , out int oldXHigh , out float oldXLowWeight , out float oldXHighWeight ) ;
794
-
795
- MaskVolumePayload . Resample ( ref oldPayload ,
796
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYLow , oldZLow ) , oldXLowWeight * oldYLowWeight * oldZLowWeight ,
797
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYLow , oldZLow ) , oldXHighWeight * oldYLowWeight * oldZLowWeight ,
798
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYHigh , oldZLow ) , oldXLowWeight * oldYHighWeight * oldZLowWeight ,
799
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYHigh , oldZLow ) , oldXHighWeight * oldYHighWeight * oldZLowWeight ,
800
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYLow , oldZHigh ) , oldXLowWeight * oldYLowWeight * oldZHighWeight ,
801
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYLow , oldZHigh ) , oldXHighWeight * oldYLowWeight * oldZHighWeight ,
802
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYHigh , oldZHigh ) , oldXLowWeight * oldYHighWeight * oldZHighWeight ,
803
- PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYHigh , oldZHigh ) , oldXHighWeight * oldYHighWeight * oldZHighWeight ,
804
- ref newPayload ,
805
- PayloadIndex ( parameters . resolutionX , parameters . resolutionY , x , y , z ) ) ;
793
+ CalculateResamplingWeights ( oldResolutionY , parameters . resolutionY , y , out int oldYLow , out int oldYHigh , out float oldYLowWeight , out float oldYHighWeight ) ;
794
+
795
+ for ( int x = 0 ; x < parameters . resolutionX ; x ++ )
796
+ {
797
+ CalculateResamplingWeights ( oldResolutionX , parameters . resolutionX , x , out int oldXLow , out int oldXHigh , out float oldXLowWeight , out float oldXHighWeight ) ;
798
+
799
+ MaskVolumePayload . Resample ( ref oldPayload ,
800
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYLow , oldZLow ) , oldXLowWeight * oldYLowWeight * oldZLowWeight ,
801
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYLow , oldZLow ) , oldXHighWeight * oldYLowWeight * oldZLowWeight ,
802
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYHigh , oldZLow ) , oldXLowWeight * oldYHighWeight * oldZLowWeight ,
803
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYHigh , oldZLow ) , oldXHighWeight * oldYHighWeight * oldZLowWeight ,
804
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYLow , oldZHigh ) , oldXLowWeight * oldYLowWeight * oldZHighWeight ,
805
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYLow , oldZHigh ) , oldXHighWeight * oldYLowWeight * oldZHighWeight ,
806
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXLow , oldYHigh , oldZHigh ) , oldXLowWeight * oldYHighWeight * oldZHighWeight ,
807
+ PayloadIndex ( oldResolutionX , oldResolutionY , oldXHigh , oldYHigh , oldZHigh ) , oldXHighWeight * oldYHighWeight * oldZHighWeight ,
808
+ ref newPayload ,
809
+ PayloadIndex ( parameters . resolutionX , parameters . resolutionY , x , y , z ) ) ;
810
+ }
806
811
}
807
812
}
813
+
814
+ ReleaseFromAtlas ( this ) ;
808
815
}
809
-
810
- ReleaseFromAtlas ( this ) ;
811
816
817
+ maskVolumeAsset . instanceID = GetID ( ) ;
812
818
maskVolumeAsset . resolutionX = parameters . resolutionX ;
813
819
maskVolumeAsset . resolutionY = parameters . resolutionY ;
814
820
maskVolumeAsset . resolutionZ = parameters . resolutionZ ;
0 commit comments