Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPullusb <bernou.samuel@gmail.com>2022-10-01 17:12:56 +0300
committerPullusb <bernou.samuel@gmail.com>2022-10-01 17:12:56 +0300
commit9a87195949ccad14e2de83fb563064725760b2ad (patch)
tree2dc946c28ffa0aa780ee85e383357ec7a5a0f241
parentf1520a9a78d9e83cb9c05022f330880e5315cb4a (diff)
GPencil Tools: Fixed empty keyframe error
Fixed error when no keyframes to draw (gpu_extras.batch.batch_for_shader does not accept empty list in 3.4). Fixed warning messages from error in some operator's poll.
-rw-r--r--greasepencil_tools/__init__.py2
-rw-r--r--greasepencil_tools/draw_tools.py3
-rw-r--r--greasepencil_tools/rotate_canvas.py7
-rw-r--r--greasepencil_tools/timeline_scrub.py86
4 files changed, 51 insertions, 47 deletions
diff --git a/greasepencil_tools/__init__.py b/greasepencil_tools/__init__.py
index c75d0442..25363439 100644
--- a/greasepencil_tools/__init__.py
+++ b/greasepencil_tools/__init__.py
@@ -4,7 +4,7 @@ bl_info = {
"name": "Grease Pencil Tools",
"description": "Extra tools for Grease Pencil",
"author": "Samuel Bernou, Antonio Vazquez, Daniel Martinez Lara, Matias Mendiola",
-"version": (1, 6, 1),
+"version": (1, 6, 2),
"blender": (3, 0, 0),
"location": "Sidebar > Grease Pencil > Grease Pencil Tools",
"warning": "",
diff --git a/greasepencil_tools/draw_tools.py b/greasepencil_tools/draw_tools.py
index 6d2cf3a9..375b4332 100644
--- a/greasepencil_tools/draw_tools.py
+++ b/greasepencil_tools/draw_tools.py
@@ -10,7 +10,8 @@ class GP_OT_camera_flip_x(bpy.types.Operator):
@classmethod
def poll(cls, context):
- return context.space_data.region_3d.view_perspective == 'CAMERA'
+ return context.area.type == 'VIEW_3D' \
+ and context.space_data.region_3d.view_perspective == 'CAMERA'
def execute(self, context):
context.scene.camera.scale.x *= -1
diff --git a/greasepencil_tools/rotate_canvas.py b/greasepencil_tools/rotate_canvas.py
index c2482fbd..812aa025 100644
--- a/greasepencil_tools/rotate_canvas.py
+++ b/greasepencil_tools/rotate_canvas.py
@@ -283,7 +283,8 @@ class RC_OT_Set_rotation(bpy.types.Operator):
@classmethod
def poll(cls, context):
- return context.space_data.region_3d.view_perspective == 'CAMERA'
+ return context.area.type == 'VIEW_3D' \
+ and context.space_data.region_3d.view_perspective == 'CAMERA'
def execute(self, context):
cam_ob = context.scene.camera
@@ -306,7 +307,9 @@ class RC_OT_Reset_rotation(bpy.types.Operator):
@classmethod
def poll(cls, context):
- return context.space_data.region_3d.view_perspective == 'CAMERA' and context.scene.camera.get('stored_rotation')
+ return context.area.type == 'VIEW_3D' \
+ and context.space_data.region_3d.view_perspective == 'CAMERA' \
+ and context.scene.camera.get('stored_rotation')
def execute(self, context):
cam_ob = context.scene.camera
diff --git a/greasepencil_tools/timeline_scrub.py b/greasepencil_tools/timeline_scrub.py
index 1f6c2a41..3336e16d 100644
--- a/greasepencil_tools/timeline_scrub.py
+++ b/greasepencil_tools/timeline_scrub.py
@@ -48,7 +48,7 @@ def draw_callback_px(self, context):
self.batch_timeline.draw(shader)
# Display keyframes
- if self.use_hud_keyframes:
+ if self.use_hud_keyframes and self.batch_keyframes:
if self.keyframe_aspect == 'LINE':
gpu.state.line_width_set(3.0)
shader.bind()
@@ -302,50 +302,50 @@ class GPTS_OT_time_scrub(bpy.types.Operator):
else:
ui_key_pos = self.pos[:-2]
+ self.batch_keyframes = None # init if there are no keyframe to draw
+ if ui_key_pos:
+ if self.keyframe_aspect == 'LINE':
+ key_lines = []
+ # Slice off position of start/end frame added last (in list for snapping)
+ for i in ui_key_pos:
+ key_lines.append(
+ (self.init_mouse_x + ((i-self.init_frame) * self.px_step), my - (key_height/2)))
+ key_lines.append(
+ (self.init_mouse_x + ((i-self.init_frame) * self.px_step), my + (key_height/2)))
- # keyframe display
- if self.keyframe_aspect == 'LINE':
- key_lines = []
- # Slice off position of start/end frame added last (in list for snapping)
- for i in ui_key_pos:
- key_lines.append(
- (self.init_mouse_x + ((i-self.init_frame) * self.px_step), my - (key_height/2)))
- key_lines.append(
- (self.init_mouse_x + ((i-self.init_frame) * self.px_step), my + (key_height/2)))
-
- self.batch_keyframes = batch_for_shader(
- shader, 'LINES', {"pos": key_lines})
+ self.batch_keyframes = batch_for_shader(
+ shader, 'LINES', {"pos": key_lines})
- else:
- # diamond and square
- # keysize5 for square, 4 or 6 for diamond
- keysize = 6 if self.keyframe_aspect == 'DIAMOND' else 5
- upper = 0
-
- shaped_key = []
- indices = []
- idx_offset = 0
- for i in ui_key_pos:
- center = self.init_mouse_x + ((i-self.init_frame)*self.px_step)
- if self.keyframe_aspect == 'DIAMOND':
- # +1 on x is to correct pixel alignment
- shaped_key += [(center-keysize, my+upper),
- (center+1, my+keysize+upper),
- (center+keysize, my+upper),
- (center+1, my-keysize+upper)]
-
- elif self.keyframe_aspect == 'SQUARE':
- shaped_key += [(center-keysize+1, my-keysize+upper),
- (center-keysize+1, my+keysize+upper),
- (center+keysize, my+keysize+upper),
- (center+keysize, my-keysize+upper)]
-
- indices += [(0+idx_offset, 1+idx_offset, 2+idx_offset),
- (0+idx_offset, 2+idx_offset, 3+idx_offset)]
- idx_offset += 4
-
- self.batch_keyframes = batch_for_shader(
- shader, 'TRIS', {"pos": shaped_key}, indices=indices)
+ else:
+ # diamond and square
+ # keysize5 for square, 4 or 6 for diamond
+ keysize = 6 if self.keyframe_aspect == 'DIAMOND' else 5
+ upper = 0
+
+ shaped_key = []
+ indices = []
+ idx_offset = 0
+ for i in ui_key_pos:
+ center = self.init_mouse_x + ((i-self.init_frame)*self.px_step)
+ if self.keyframe_aspect == 'DIAMOND':
+ # +1 on x is to correct pixel alignment
+ shaped_key += [(center-keysize, my+upper),
+ (center+1, my+keysize+upper),
+ (center+keysize, my+upper),
+ (center+1, my-keysize+upper)]
+
+ elif self.keyframe_aspect == 'SQUARE':
+ shaped_key += [(center-keysize+1, my-keysize+upper),
+ (center-keysize+1, my+keysize+upper),
+ (center+keysize, my+keysize+upper),
+ (center+keysize, my-keysize+upper)]
+
+ indices += [(0+idx_offset, 1+idx_offset, 2+idx_offset),
+ (0+idx_offset, 2+idx_offset, 3+idx_offset)]
+ idx_offset += 4
+
+ self.batch_keyframes = batch_for_shader(
+ shader, 'TRIS', {"pos": shaped_key}, indices=indices)
# Trim snapping list of frame outside of frame range if range lock activated
# (after drawing batch so those are still showed)