2
0
Mark Sibly 8 жил өмнө
parent
commit
0ec1dd3901

+ 9 - 0
modules/std/geom/mat3.monkey2

@@ -30,6 +30,15 @@ Struct Mat3<T>
 		j.x=jx; j.y=jy; j.z=jz
 		k.x=kx; k.y=ky; k.z=kz
 	End
+
+	Method New( quat:Quat<T> )
+		Local xx:=quat.v.x*quat.v.x , yy:=quat.v.y*quat.v.y , zz:=quat.v.z*quat.v.z
+		Local xy:=quat.v.x*quat.v.y , xz:=quat.v.x*quat.v.z , yz:=quat.v.y*quat.v.z
+		Local wx:=quat.w*quat.v.x   , wy:=quat.w*quat.v.y   , wz:=quat.w*quat.v.z
+		i.x=1-2*(yy+zz) ; i.y=  2*(xy-wz) ; i.z=  2*(xz+wy)
+		j.x=  2*(xy+wz) ; j.y=1-2*(xx+zz) ; j.z=  2*(yz-wx)
+		k.x=  2*(xz-wy) ; k.y=  2*(yz+wx) ; k.z=1-2*(xx+yy)
+	End
 	
 	Operator To<C>:Mat3<C>()
 		Return New Mat3<C>( i,j,k )

+ 7 - 5
modules/std/graphics/pixmap.monkey2

@@ -498,15 +498,17 @@ Class Pixmap Extends Resource
 	Protected
 	
 	Method OnDiscard() Override
-		
-		GCFree( _gcdata )
-		_gcdata=Null
-		_data=null
+
+		If _gcdata		
+			GCFree( _gcdata )
+			_gcdata=Null
+			_data=null
+		Endif
 	End
 	
 	Method Finalize() Override
 		
-		GCFree( _gcdata )
+		If _gcdata GCFree( _gcdata )
 	End
 
 	Private

+ 5 - 2
modules/std/memory/databuffer.monkey2

@@ -523,12 +523,15 @@ Class DataBuffer Extends std.resource.Resource
 	
 	Method OnDiscard() Override
 		
-		GCFree( _data )
+		If _data
+			GCFree( _data )
+			_data=Null
+		Endif
 	End
 
 	Method Finalize() Override
 		
-		GCFree( _data )
+		If _data GCFree( _data )
 	End
 	
 	Private