Blender Kitsu: Refactor Shot Builder #183
@ -0,0 +1,41 @@
|
||||
import bpy
|
||||
from pathlib import Path
|
||||
|
||||
from blender_kitsu.types import (
|
||||
Sequence,
|
||||
Shot,
|
||||
TaskType,
|
||||
)
|
||||
|
||||
from blender_kitsu import bkglobals, prefs
|
||||
|
||||
|
||||
def get_task_type(task_type: TaskType) -> str:
|
||||
for key, value in bkglobals.SHOT_TASK_MAPPING.items():
|
||||
if value == task_type.name:
|
||||
return key
|
||||
|
||||
|
||||
def get_shot_task_name(shot: Shot, task_type: TaskType) -> str:
|
||||
return f"{shot.name}{bkglobals.IN_FILE_DELIMITER}{get_task_type(task_type)}"
|
||||
|
||||
|
||||
def get_file_dir(seq: Sequence, shot: Shot, task_type: TaskType) -> Path:
|
||||
"""Returns Path to Directory for Current Shot, will ensure that
|
||||
file path exists if it does not.
|
||||
|
||||
Args:
|
||||
seq (Sequence): Sequence Class from blender_kitsu.types
|
||||
shot (Shot): Shot Class from blender_kitsu.types
|
||||
task_type TaskType Class from blender_kitsu.types
|
||||
|
||||
Returns:
|
||||
Path: Returns Path for Shot Directory
|
||||
"""
|
||||
addon_prefs = prefs.addon_prefs_get(bpy.context)
|
||||
project_root_dir = Path(addon_prefs.project_root_dir).resolve()
|
||||
all_shots_dir = project_root_dir.joinpath('pro').joinpath('shots')
|
||||
shot_dir = all_shots_dir.joinpath(seq.name).joinpath(shot.name)
|
||||
if not shot_dir.exists():
|
||||
shot_dir.mkdir(parents=True)
|
||||
return shot_dir
|
@ -1,7 +1,8 @@
|
||||
import bpy
|
||||
from pathlib import Path
|
||||
from typing import List, Any, Tuple, Set, cast
|
||||
from blender_kitsu import prefs, cache
|
||||
|
||||
from .core import get_shot_task_name, get_file_dir
|
||||
|
||||
active_project = None
|
||||
|
||||
@ -114,13 +115,23 @@ class KITSU_OT_build_new_shot(bpy.types.Operator):
|
||||
return task_type
|
||||
|
||||
def execute(self, context: bpy.types.Context):
|
||||
# Get Properties
|
||||
global active_project
|
||||
sequence = active_project.get_sequence(self.seq_id)
|
||||
seq = active_project.get_sequence(self.seq_id)
|
||||
shot = active_project.get_shot(self.shot_id)
|
||||
task_type = self._get_task_type_for_shot(context, shot)
|
||||
|
||||
# Scene Naming
|
||||
shot_task_name = get_shot_task_name(shot, task_type)
|
||||
context.scene.name = shot_task_name
|
||||
|
||||
# File Path
|
||||
# TODO Only run if saving file
|
||||
dir = get_file_dir(seq, shot, task_type)
|
||||
shot_file_path_str = dir.joinpath(shot_task_name).__str__()
|
||||
|
||||
print("Create shot with the following details") # TODO Remove
|
||||
print(f"Seq Name: '{sequence.name}' Seq ID: '{self.seq_id}'")
|
||||
print(f"Seq Name: '{seq.name}' Seq ID: '{self.seq_id}'")
|
||||
print(f"Shot Name: '{shot.name}' Shot ID: '{self.shot_id}'")
|
||||
print(f"Task Type Name: '{task_type.name}' Task Type ID: `{self.task_type}`")
|
||||
self.report({"INFO"}, f"Execution Complete") # TODO remove
|
||||
|
Loading…
Reference in New Issue
Block a user