armory/blender/assets.py

103 lines
2.9 KiB
Python
Raw Normal View History

2016-10-27 01:11:11 +02:00
import armutils
2016-10-19 13:28:06 +02:00
import shutil
import os
2017-01-18 14:52:51 +01:00
import bpy
2016-10-19 13:28:06 +02:00
2016-07-19 19:42:46 +02:00
assets = []
2016-07-28 13:21:27 +02:00
khafile_defs = []
2017-01-18 14:52:51 +01:00
khafile_defs_last = []
2016-09-14 11:49:32 +02:00
embedded_data = []
shaders = []
2017-01-18 14:52:51 +01:00
shaders_last = []
shader_datas = []
2016-07-19 19:42:46 +02:00
def reset():
global assets
global khafile_defs
2017-01-18 14:52:51 +01:00
global khafile_defs_last
global embedded_data
global shaders
2017-01-18 14:52:51 +01:00
global shaders_last
global shader_datas
assets = []
2017-01-18 14:52:51 +01:00
khafile_defs_last = khafile_defs
khafile_defs = []
embedded_data = []
2017-01-18 14:52:51 +01:00
shaders_last = shaders
shaders = []
shader_datas = []
2016-07-19 19:42:46 +02:00
def add(file):
global assets
if file not in assets:
assets.append(file)
2016-07-28 13:21:27 +02:00
def add_khafile_def(d):
global khafile_defs
2017-01-18 14:52:51 +01:00
global khafile_defs_last
if d not in khafile_defs:
khafile_defs.append(d)
2016-09-14 11:49:32 +02:00
2017-01-18 14:52:51 +01:00
wrd = bpy.data.worlds['Arm']
if not wrd.arm_recompile_trigger and d not in khafile_defs_last:
wrd.arm_recompile_trigger = True
2016-09-14 11:49:32 +02:00
def add_embedded_data(file):
global embedded_data
if file not in embedded_data:
embedded_data.append(file)
def add_shader(file):
global shaders
2017-01-18 14:52:51 +01:00
global shaders_last
if file not in shaders:
shaders.append(file)
2017-01-18 14:52:51 +01:00
wrd = bpy.data.worlds['Arm']
if not wrd.arm_recompile_trigger and file not in shaders_last:
wrd.arm_recompile_trigger = True
def add_shader_data(file):
global shader_datas
if file not in shader_datas:
shader_datas.append(file)
2016-10-17 00:02:51 +02:00
def add_shader2(dir_name, data_name):
2017-03-14 20:43:54 +01:00
add_shader_data('build/compiled/Shaders/' + dir_name + '/' + data_name + '.arm')
2016-10-17 00:02:51 +02:00
full_name = 'build/compiled/Shaders/' + dir_name + '/' + data_name
add_shader(full_name + '.vert.glsl')
add_shader(full_name + '.frag.glsl')
2016-10-19 13:28:06 +02:00
invalidate_enabled = True # Disable invalidating during build process
def invalidate_shader_cache(self, context):
# compiled.glsl changed, recompile all shaders next time
global invalidate_enabled
if invalidate_enabled == False:
return
2016-10-27 01:11:11 +02:00
fp = armutils.get_fp()
2017-03-14 20:43:54 +01:00
if os.path.isdir(fp + '/build/compiled/Shaders'):
shutil.rmtree(fp + '/build/compiled/Shaders')
2016-12-23 02:51:24 +01:00
if os.path.isdir(fp + '/build/compiled/ShaderRaws'):
shutil.rmtree(fp + '/build/compiled/ShaderRaws')
2016-10-19 13:28:06 +02:00
def invalidate_compiled_data(self, context):
global invalidate_enabled
if invalidate_enabled == False:
return
2016-10-27 01:11:11 +02:00
fp = armutils.get_fp()
2016-10-19 13:28:06 +02:00
if os.path.isdir(fp + '/build/compiled/Assets'):
shutil.rmtree(fp + '/build/compiled/Assets')
2017-03-14 20:43:54 +01:00
if os.path.isdir(fp + '/build/compiled/Shaders'):
shutil.rmtree(fp + '/build/compiled/Shaders')
2016-10-19 13:28:06 +02:00
def invalidate_mesh_data(self, context):
2016-10-27 01:11:11 +02:00
fp = armutils.get_fp()
2016-10-19 13:28:06 +02:00
if os.path.isdir(fp + '/build/compiled/Assets/meshes'):
shutil.rmtree(fp + '/build/compiled/Assets/meshes')
2016-11-08 11:45:25 +01:00
def invalidate_envmap_data(self, context):
fp = armutils.get_fp()
if os.path.isdir(fp + '/build/compiled/Assets/envmaps'):
shutil.rmtree(fp + '/build/compiled/Assets/envmaps')