Expand type check in MathVis to also allow subclasses.

MathVis currently only checks objects for basic classes (Matrix, Vector, Quaternion, Euler)
This patch adds also derived classes of the basic classes.\
This makes it possible to use custom classes together with MathVis.

Differential Revision: https://developer.blender.org/D12349
This commit is contained in:
Gaia Clary 2021-08-30 17:58:44 +02:00
parent 4e30cfd306
commit b4e51491e0
1 changed files with 8 additions and 10 deletions

View File

@ -35,7 +35,7 @@ def is_display_list(listvar):
from mathutils import Vector
for var in listvar:
if type(var) is not Vector:
if not isinstance(var, Vector):
return False
return True
@ -120,8 +120,8 @@ def get_math_data():
if len_fn(var) == 0:
continue
if type_var in {Matrix, Vector, Quaternion, Euler} or \
type_var in {tuple, list} and is_display_list(var):
if isinstance(var, (Matrix, Vector, Quaternion, Euler)) or \
isinstance(var, (tuple, list)) and is_display_list(var):
variables[key] = type_var
@ -168,24 +168,22 @@ def console_math_data():
if not disp:
continue
var_type = type(var)
if var_type is Matrix:
if isinstance(var, Matrix):
if len(var.col) != 4 or len(var.row) != 4:
if len(var.col) == len(var.row):
var = var.to_4x4()
else: # todo, support 4x3 matrix
continue
data_matrix[key] = var
elif var_type is Vector:
elif isinstance(var, Vector):
if len(var) < 3:
var = var.to_3d()
data_vector[key] = var
elif var_type is Quaternion:
elif isinstance(var, Quaternion):
data_quat[key] = var
elif var_type is Euler:
elif isinstance(var, Euler):
data_euler[key] = var
elif var_type in {list, tuple} and is_display_list(var):
elif type(var) in {list, tuple} and is_display_list(var):
data_vector_array[key] = var
return data_matrix, data_quat, data_euler, data_vector, data_vector_array