Custom material shaders
This commit is contained in:
parent
658469fdf6
commit
67f4cae2b7
Binary file not shown.
Binary file not shown.
BIN
blender/__pycache__/scene.cpython-34.pyc
Normal file
BIN
blender/__pycache__/scene.cpython-34.pyc
Normal file
Binary file not shown.
BIN
blender/__pycache__/write_data.cpython-34.pyc
Normal file
BIN
blender/__pycache__/write_data.cpython-34.pyc
Normal file
Binary file not shown.
Binary file not shown.
|
@ -8,6 +8,7 @@ from bpy.props import *
|
|||
import subprocess
|
||||
import atexit
|
||||
import webbrowser
|
||||
import write_data
|
||||
|
||||
def defaultSettings():
|
||||
wrd = bpy.data.worlds[0]
|
||||
|
@ -134,23 +135,10 @@ def exportGameData():
|
|||
a.armature.location.z = a.z
|
||||
|
||||
# Write khafile.js
|
||||
with open('khafile.js', 'w') as f:
|
||||
f.write(
|
||||
"""// Auto-generated
|
||||
var project = new Project('""" + bpy.data.worlds[0]['CGProjectName'] + """');
|
||||
|
||||
project.addSources('Sources');
|
||||
project.addShaders('Sources/Shaders/**');
|
||||
project.addAssets('Assets/**');
|
||||
project.addLibrary('lue');
|
||||
project.addLibrary('cyclesgame');
|
||||
project.addLibrary('haxebullet');
|
||||
|
||||
return project;
|
||||
""")
|
||||
write_data.write_khafilejs()
|
||||
|
||||
# Write Main.hx
|
||||
#write_main()
|
||||
write_data.write_main()
|
||||
|
||||
def buildProject(self, build_type=0):
|
||||
# Save scripts
|
||||
|
|
|
@ -15,9 +15,9 @@ def initObjectProperties():
|
|||
bpy.types.Object.instanced_children = bpy.props.BoolProperty(name="Instanced children", default=False)
|
||||
bpy.types.Material.receive_shadow = bpy.props.BoolProperty(name="Receive shadow", default=True)
|
||||
bpy.types.Material.alpha_test = bpy.props.BoolProperty(name="Alpha test", default=False)
|
||||
bpy.types.Material.custom_shader = bpy.props.BoolProperty(name="Custom shader", default=False)
|
||||
bpy.types.Material.custom_shader_name = bpy.props.StringProperty(name="Name", default="")
|
||||
bpy.types.Material.export_tangents = bpy.props.BoolProperty(name="Export tangents", default=False)
|
||||
bpy.app.handlers.scene_update_post.append(cb_scene_update)
|
||||
#bpy.app.handlers.scene_update_post.remove(cb_scene_update)
|
||||
|
||||
# Menu in object region
|
||||
class ToolsPropsPanel(bpy.types.Panel):
|
||||
|
@ -46,11 +46,16 @@ class MatsPropsPanel(bpy.types.Panel):
|
|||
|
||||
layout.prop(mat, 'receive_shadow')
|
||||
layout.prop(mat, 'alpha_test')
|
||||
layout.prop(mat, 'custom_shader')
|
||||
if mat.custom_shader:
|
||||
layout.prop(mat, 'custom_shader_name')
|
||||
|
||||
# Registration
|
||||
def register():
|
||||
bpy.utils.register_module(__name__)
|
||||
initObjectProperties()
|
||||
bpy.app.handlers.scene_update_post.append(cb_scene_update)
|
||||
|
||||
def unregister():
|
||||
bpy.app.handlers.scene_update_post.remove(cb_scene_update)
|
||||
bpy.utils.unregister_module(__name__)
|
||||
|
|
|
@ -2043,12 +2043,15 @@ class LueExporter(bpy.types.Operator, ExportHelper):
|
|||
ob.geometry_cached = False
|
||||
break
|
||||
|
||||
# Merge duplicates and sort
|
||||
defs = sorted(list(set(defs)))
|
||||
# Select correct shader variant
|
||||
o.shader = "blender_resource/blender"
|
||||
for d in defs:
|
||||
o.shader += d
|
||||
if material.custom_shader == False:
|
||||
# Merge duplicates and sort
|
||||
defs = sorted(list(set(defs)))
|
||||
# Select correct shader variant
|
||||
o.shader = "blender_resource/blender"
|
||||
for d in defs:
|
||||
o.shader += d
|
||||
else:
|
||||
o.shader = material.custom_shader_name
|
||||
|
||||
#intensity = material.specular_intensity
|
||||
#specular = [material.specular_color[0] * intensity, material.specular_color[1] * intensity, material.specular_color[2] * intensity]
|
||||
|
|
59
blender/write_data.py
Normal file
59
blender/write_data.py
Normal file
|
@ -0,0 +1,59 @@
|
|||
import bpy
|
||||
import os
|
||||
|
||||
# Write khafile.js
|
||||
def write_khafilejs():
|
||||
with open('khafile.js', 'w') as f:
|
||||
f.write(
|
||||
"""// Auto-generated
|
||||
var project = new Project('""" + bpy.data.worlds[0]['CGProjectName'] + """');
|
||||
|
||||
project.addSources('Sources');
|
||||
project.addShaders('Sources/Shaders/**');
|
||||
project.addAssets('Assets/**');
|
||||
project.addLibrary('lue');
|
||||
project.addLibrary('cyclesgame');
|
||||
project.addLibrary('haxebullet');
|
||||
|
||||
return project;
|
||||
""")
|
||||
|
||||
# Write Main.hx
|
||||
def write_main():
|
||||
#if not os.path.isfile('Sources/Main.hx'):
|
||||
with open('Sources/Main.hx', 'w') as f:
|
||||
f.write(
|
||||
"""// Auto-generated
|
||||
package ;
|
||||
class Main {
|
||||
static inline var projectName = '""" + bpy.data.worlds[0]['CGProjectPackage'] + """';
|
||||
static inline var projectWidth = """ + str(bpy.data.worlds[0]['CGProjectWidth']) + """;
|
||||
static inline var projectHeight = """ + str(bpy.data.worlds[0]['CGProjectHeight']) + """;
|
||||
public static function main() {
|
||||
lue.sys.CompileTime.importPackage('lue.trait');
|
||||
lue.sys.CompileTime.importPackage('cycles.trait');
|
||||
lue.sys.CompileTime.importPackage('""" + bpy.data.worlds[0]['CGProjectName'] + """');
|
||||
#if js
|
||||
untyped __js__("
|
||||
function loadScript(url, callback) {
|
||||
var head = document.getElementsByTagName('head')[0];
|
||||
var script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = url;
|
||||
script.onreadystatechange = callback;
|
||||
script.onload = callback;
|
||||
head.appendChild(script);
|
||||
}
|
||||
");
|
||||
untyped loadScript('ammo.js', start);
|
||||
#else
|
||||
start();
|
||||
#end
|
||||
}
|
||||
static function start() {
|
||||
kha.System.init(projectName, projectWidth, projectHeight, function() {
|
||||
new lue.App(cycles.Root);
|
||||
});
|
||||
}
|
||||
}
|
||||
""")
|
Loading…
Reference in a new issue