mirror of
https://github.com/cyberboy666/r_e_c_u_r.git
synced 2025-12-11 19:00:04 +01:00
85 lines
2.9 KiB
Python
85 lines
2.9 KiB
Python
import data_centre.plugin_collection
|
|
from data_centre.plugin_collection import ActionsPlugin, SequencePlugin
|
|
import copy
|
|
|
|
class ShaderQuickPresetPlugin(ActionsPlugin): #,SequencePlugin):
|
|
disabled = False
|
|
|
|
MAX_PRESETS = 8
|
|
|
|
def __init__(self, plugin_collection):
|
|
super().__init__(plugin_collection)
|
|
self.PRESET_FILE_NAME = 'ShaderQuickPresetPlugin/presets.json'
|
|
|
|
self.presets = self.load_presets()
|
|
print("loaded presets %s" % self.presets)
|
|
|
|
self.selected_preset = None
|
|
self.last_recalled = None
|
|
|
|
def load_presets(self):
|
|
print("trying load presets? %s " % self.PRESET_FILE_NAME)
|
|
return self.pc.read_json(self.PRESET_FILE_NAME) or ([None]*self.MAX_PRESETS)
|
|
|
|
def save_presets(self):
|
|
self.pc.update_json(self.PRESET_FILE_NAME, self.presets)
|
|
|
|
@property
|
|
def parserlist(self):
|
|
return [
|
|
( r"load_presets", self.load_presets ),
|
|
( r"save_presets", self.save_presets ),
|
|
( r"store_next_preset", self.store_next_preset ),
|
|
( r"store_current_preset", self.store_current_preset ),
|
|
( r"switch_to_preset_([0-%i])"%self.MAX_PRESETS, self.switch_to_preset ),
|
|
( r"select_preset_([0-%i])"%self.MAX_PRESETS, self.select_preset ),
|
|
( r"clear_current_preset", self.clear_current_preset ),
|
|
]
|
|
|
|
def store_next_preset(self):
|
|
res = [i for i, val in enumerate(self.presets) if val == None]
|
|
if res is None or not res:
|
|
self.selected_preset += 1
|
|
self.selected_preset %= self.MAX_PRESETS
|
|
else:
|
|
self.selected_preset = res[0]
|
|
|
|
self.store_current_preset()
|
|
|
|
def clear_current_preset(self):
|
|
if self.selected_preset is None:
|
|
return
|
|
self.presets[self.selected_preset] = None
|
|
|
|
self.save_presets()
|
|
|
|
def store_current_preset(self):
|
|
if self.selected_preset is None: self.selected_preset = 0
|
|
|
|
insert_position = self.selected_preset
|
|
self.presets[insert_position] = self.pc.shaders.get_live_frame()
|
|
#print ("stored %s at position %s" % (self.presets[insert_position], insert_position))
|
|
self.selected_preset = insert_position
|
|
self.last_recalled = insert_position
|
|
|
|
self.save_presets()
|
|
|
|
def select_preset(self, preset):
|
|
self.selected_preset = preset
|
|
|
|
def switch_to_preset(self, preset):
|
|
#if preset>len(self.presets):
|
|
if self.presets[preset] is None:
|
|
print ("no quick shader preset in slot %s!" % preset)
|
|
self.selected_preset = preset
|
|
return
|
|
print ("switching to preset %s" % preset)
|
|
self.selected_preset = preset
|
|
|
|
self.last_recalled = preset
|
|
preset = self.presets[preset]
|
|
|
|
print ("recalled preset %s" % preset)
|
|
self.pc.shaders.recall_frame(preset)
|
|
|