Advertisement
Guest User

Untitled

a guest
Apr 1st, 2021
3,947
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 126.53 KB | None | 1 0
  1. # ##### BEGIN LICENSE BLOCK #####
  2. #
  3. #  Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
  4. #
  5. #  This work is licensed under the Creative Commons
  6. #  Attribution-NonCommercial-NoDerivatives 4.0 International License.
  7. #
  8. #  To view a copy of this license,
  9. #  visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
  10. #
  11. # ##### END LICENSE BLOCK #####
  12.  
  13. bl_info = {
  14.     "name": "Shader Library",
  15.     "author": "Darkfall",
  16.     "version": (1, 9),
  17.     "blender": (2, 90, 1),
  18.     "location": "View3D > Toolshelf",
  19.     "description": "Select from the Various Different Shaders, and they will be addded to your selected object",
  20.     "warning": "",
  21.     "wiki_url": "",
  22.     "category": "Add Shader",
  23. }
  24.  
  25. import bpy
  26. from bpy.types import (Panel, Operator, Menu, PropertyGroup)
  27. from bpy.props import (PointerProperty, FloatProperty, FloatVectorProperty, BoolProperty, BoolVectorProperty, StringProperty, IntProperty, EnumProperty)
  28.  
  29. class ShaderLibraryProperties(PropertyGroup):
  30.    
  31.     planet_type: EnumProperty(
  32.         name="Planet Type:",
  33.         description="Select A Planet Type.",
  34.         items=[ ('OP2', "Continental World", "An Earth-like Planet"),
  35.                 ('OP3', "Dust World", "A Barren Planet"),
  36.                 ('OP4', "Moon", "A Moon"),
  37.                 ('OP5', "Rocky World", "A Rocky Planet"),
  38.                 ('OP6', "Stars", "Uhm, Stars!"),
  39.                 ('OP7', "Golden World", "A Sci-fi Planet with a Golden Theme"),
  40.                 ('OP8', "Icy World", "An Icy Planet"),
  41.                ]
  42.         )
  43.  
  44. class ShaderMainPanel(Panel):
  45.     bl_label = " "
  46.     bl_idname = "SHADER_PT_MAINPANEL"
  47.     bl_space_type = 'VIEW_3D'
  48.     bl_region_type = 'UI'
  49.     bl_category = 'Shader Library'
  50.  
  51.     def draw_header(self, context):
  52.         layout = self.layout
  53.         row = layout.row()
  54.         row.label(text="The Shader Library", icon= 'NODE_MATERIAL')
  55.        
  56.     def draw(self, context):
  57.         layout = self.layout
  58.         row = layout.row()
  59.         row = layout.row()
  60.         row.label(text= "Select a Shader to be added.")
  61.         row = layout.row()
  62.         #row.label(text= "(Press Shift F - for Shortcut)")
  63.         row.label(text= "                                           (ver 1.09)")
  64.  
  65. class SubPanelCosmic(Panel):
  66.     bl_label = "Cosmic Shaders"
  67.     bl_idname = "SHADER_PT_COSMICSHADERS"
  68.     bl_space_type = 'VIEW_3D'
  69.     bl_region_type = 'UI'
  70.     bl_category = 'Shader Library'
  71.     bl_parent_id = 'SHADER_PT_MAINPANEL'
  72.     bl_options = {'DEFAULT_CLOSED'}
  73.  
  74.     def draw(self, context):
  75.         layout = self.layout
  76.         scene = context.scene
  77.         mytool = scene.my_tool
  78.        
  79.         layout.scale_y = 1.1
  80.         row = layout.row()
  81.         row.label(text= "Select a Cosmic Shader.")
  82.         row = layout.row()
  83.         row.prop(mytool, "planet_type")
  84.         row = layout.row()
  85.         row.operator("wm.cosmicop", icon= 'WORLD', text= "Add Cosmic Shader")
  86.         row = layout.row()
  87.  
  88. class SubPanelPreciousMetals(Panel):
  89.     bl_label = "Gemstones"
  90.     bl_idname = "SHADER_PT_PRECIOUSMETALS"
  91.     bl_space_type = 'VIEW_3D'
  92.     bl_region_type = 'UI'
  93.     bl_category = 'Shader Library'
  94.     bl_parent_id = 'SHADER_PT_MAINPANEL'
  95.     bl_options = {'DEFAULT_CLOSED'}
  96.  
  97.     def draw(self, context):
  98.         layout = self.layout
  99.         layout.scale_y = 1.1
  100.         row = layout.row()
  101.         row.label(text= "Select a Gemstone Shader.")
  102.         row = layout.row()
  103.         row.operator("wm.diamondop", icon= 'DECORATE_ANIMATE', text= "Diamond")
  104.         row = layout.row()
  105.  
  106. class SubPanelMaterials(Panel):
  107.     bl_label = "Materials"
  108.     bl_idname = "SHADER_PT_MATERIALS"
  109.     bl_space_type = 'VIEW_3D'
  110.     bl_region_type = 'UI'
  111.     bl_category = 'Shader Library'
  112.     bl_parent_id = 'SHADER_PT_MAINPANEL'
  113.     bl_options = {'DEFAULT_CLOSED'}
  114.  
  115.     def draw(self, context):
  116.         layout = self.layout
  117.         layout.scale_y = 1.1
  118.         row = layout.row()
  119.         row.label(text= "Select a Basic Material Shader.")
  120.         row = layout.row()
  121.         row = layout.row()
  122.         row.operator("wm.leatherop", icon= 'OUTLINER_OB_SURFACE', text= "Leather")
  123.         row = layout.row()
  124.         row.operator("shader.brick_operator", icon= 'MOD_BUILD', text= "Brick")
  125.  
  126. class SubPanelMetals(Panel):
  127.     bl_label = "Metallics"
  128.     bl_idname = "SHADER_PT_METALS"
  129.     bl_space_type = 'VIEW_3D'
  130.     bl_region_type = 'UI'
  131.     bl_category = 'Shader Library'
  132.     bl_parent_id = 'SHADER_PT_MAINPANEL'
  133.     bl_options = {'DEFAULT_CLOSED'}
  134.  
  135.     def draw(self, context):
  136.         layout = self.layout
  137.         layout.scale_y = 1.1
  138.         row = layout.row()
  139.         row.label(text= "Select a Basic Metallic Shader.")
  140.         row = layout.row()
  141.         row = layout.row()
  142.         row.operator('shader.gold_operator', icon= 'KEYTYPE_KEYFRAME_VEC')
  143.         row.operator('shader.silver_operator', icon= 'HANDLETYPE_FREE_VEC')
  144.         row.operator('shader.copper_operator', icon= 'KEYTYPE_EXTREME_VEC')
  145.         row = layout.row()
  146.         row.operator('shader.scifigold_operator', icon= 'COLORSET_09_VEC')
  147.  
  148. class SubPanelStylized(Panel):
  149.     bl_label = "Stylized"
  150.     bl_idname = "SHADER_PT_STYLIZED"
  151.     bl_space_type = 'VIEW_3D'
  152.     bl_region_type = 'UI'
  153.     bl_category = 'Shader Library'
  154.     bl_parent_id = 'SHADER_PT_MAINPANEL'
  155.     bl_options = {'DEFAULT_CLOSED'}
  156.  
  157.     def draw(self, context):
  158.         layout = self.layout
  159.         layout.scale_y = 1.1
  160.         row = layout.row()
  161.         row.label(text= "Select a Stylized Shader.")
  162.         row = layout.row()
  163.         row.operator("shader.cloud_operator", icon= 'OUTLINER_DATA_VOLUME', text= "Clouds")
  164.         row = layout.row()
  165.         row.operator("wm.ghostop", icon= 'GHOST_ENABLED', text= "Ghost")
  166.         row.operator("wm.hologramop", icon= 'USER', text= "Hologram")
  167.         row = layout.row()
  168.         row.operator("wm.neonop", icon= 'PARTICLE_PATH', text= "Neon")
  169.         row = layout.row()
  170.         row.operator("wm.potionop", icon= 'SORTTIME', text= "Stylized Potion")
  171.         row = layout.row()
  172.  
  173. class SHADER_OT_COSMIC(Operator):
  174.     """Open the Cosmic Shader Dialog box"""
  175.     bl_label = "             Cosmic Operator"
  176.     bl_idname = "wm.cosmicop"
  177.     bl_options = {'REGISTER', 'UNDO'}
  178.    
  179.     col1 : FloatVectorProperty(name='Color Tint',subtype='COLOR_GAMMA',size=4,default=(1,1,1,1), min= 0, max= 1)
  180.     v_col : FloatVectorProperty(name='Variation Col',subtype='COLOR_GAMMA',size=4, default=(0.181135, 1, 0.0857819, 1), min= 0, max= 1)
  181.     v_bool : BoolProperty(default= False, name= "Enable Color Variation Options")
  182.     v_scale : FloatProperty(default= 8, name= "Variation Size", min= 5, max= 10 )
  183.     atmos : BoolProperty(default= True, name= "Enable Atmospheric Glow")
  184.     m_atmos : BoolProperty(default= True, name= "Enable Atmospheric Glow")
  185.     land_scale : FloatProperty(default= 5)
  186.     land_hue : FloatProperty(default= 0.5, min= 0, max= 1)
  187.     land_sat : FloatProperty(default= 1, min= 0, max= 1)
  188.     d_hue : FloatProperty(default= 0.5, min= 0, max= 1)
  189.     cloud_bool : BoolProperty(default= False, name= "Enable Clouds")
  190.     cloud_scale : FloatProperty(default= 55.400, name= "Cloud Size")
  191.     cloud_vis : FloatProperty(default= 1, name= "Cloud Visibility", min= 0, max= 1)
  192.     atmos_glow : FloatProperty(default= 6.500)
  193.     atmos_col : FloatVectorProperty(default= (0, 0.141263, 0.904661, 1), name='Atmos Color',subtype='COLOR_GAMMA',size=4, min= 0, max= 1)
  194.     d_atmos_col : FloatVectorProperty(default= (0.552012, 0.130136, 0.0451862, 1), name='Atmos Color',subtype='COLOR_GAMMA',size=4)
  195.     d_atmos_glow : FloatProperty(default= 6.500)
  196.     m_atmos_col : FloatVectorProperty(default= (1,1,1,1), name='Atmos Color',subtype='COLOR_GAMMA',size=4, min= 0, max= 1)
  197.     m_atmos_glow : FloatProperty(default= 1.05)
  198.     star_scale : FloatProperty(default= 614)
  199.     m_macro_scale : FloatProperty(default= 8.6, description= "Scale the Macro Surface Detail")
  200.     m_micro_scale : FloatProperty(default= 7.6, description= "Scale the Micro Surface Detail")
  201.     m_seed : FloatProperty(default= 0.5, description= "Generate a Random Variation based of this seed value")
  202.     star_coverage : FloatProperty(default= 0.674, min=0.628, max= 1)
  203.     water_lvl : FloatProperty(default= 0.492, min= 0.35, max= 0.515)
  204.     stripe_amount : FloatProperty(default= 3.500, min= 0, max= 30)
  205.     shadow_bool : BoolProperty(default= False, name= "Enable Shadow")
  206.     m_shadow_bool : BoolProperty(default= False, name= "Enable Shadow", description= "Enable a Shadow simulating Day/Night")
  207.     city_bool : BoolProperty(default= False, name= "Enable City Lights")
  208.     city_lights : FloatProperty(default= 21.980, name= "Scale")
  209.     city_brightness : FloatProperty(default= 7.9, name= "Light Strength")
  210.     shadow_coverage : FloatProperty(default= 0, min= -1, max= 1)
  211.     shadow_vis : FloatProperty(default= 0.962, min= 0.3, max= 1)
  212.     m_shadow_coverage : FloatProperty(default= 0.5, min= 0.046, max= 1)
  213.     m_shadow_vis : FloatProperty(default= 0.962, min= 0.3, max= 1)
  214.     r_scale : FloatProperty(default= 7, min= 1, max= 20, name= "Scale")
  215.     r_soften : FloatProperty(default= 0.150, min= 0, max= 1, name= "Soften Landmass")
  216.     r_land_height : FloatProperty(default= 0.337, min= 0.041, max= 0.4)
  217.     r_land_col1 : FloatVectorProperty(name='Color 1',subtype='COLOR_GAMMA',size=4,default=(0.38643, 0.0953075, 0.0251869, 1), min= 0, max= 1)
  218.     r_land_col2 : FloatVectorProperty(name='Color 2',subtype='COLOR_GAMMA',size=4,default=(1, 0.533275, 0.0666201, 1), min= 0, max= 1)
  219.     r_land_col3 : FloatVectorProperty(name='Color 3',subtype='COLOR_GAMMA',size=4,default=(1, 0.930111, 0.428691, 1), min= 0, max= 1)
  220.     r_land_col4 : FloatVectorProperty(name='Color 4',subtype='COLOR_GAMMA',size=4,default=(0.991102, 1, 0.366253, 1), min= 0, max= 1)
  221.     r_water_col : FloatVectorProperty(name='Water Color',subtype='COLOR_GAMMA',size=4,default=(0.144129, 0.0802198, 0, 1), min= 0, max= 1)
  222.     r_atmos : BoolProperty(default= True, name= "Enable Atmospheric Glow")
  223.     r_atmos_col : FloatVectorProperty(default= (0.513397, 0.30397, 0.118823, 1), name='Atmos Color',subtype='COLOR_GAMMA',size=4, min= 0, max= 1)
  224.     r_atmos_glow : FloatProperty(default= 1.280)
  225.     g_scale : FloatProperty(default= 4.861, min= 1, max= 20, name= "Scale")
  226.     g_soften : FloatProperty(default= 0.318, min= 0, max= 1, name= "Soften Landmass")
  227.     g_land_height : FloatProperty(default= 0.154, min= 0.041, max= 0.4)
  228.     g_land_col1 : FloatVectorProperty(name='Color 1',subtype='COLOR_GAMMA',size=4,default=(0.198069, 0.0953075, 0.0703601, 1), min= 0, max= 1)
  229.     g_land_col2 : FloatVectorProperty(name='Color 2',subtype='COLOR_GAMMA',size=4,default=(0.48515, 0.238398, 0.0648033, 1), min= 0, max= 1)
  230.     g_land_col3 : FloatVectorProperty(name='Color 3',subtype='COLOR_GAMMA',size=4,default=(1, 0.467784, 0.066626, 1), min= 0, max= 1)
  231.     g_land_col4 : FloatVectorProperty(name='Color 4',subtype='COLOR_GAMMA',size=4,default=(1, 0.745404, 0.23074, 1), min= 0, max= 1)
  232.     g_water_col : FloatVectorProperty(name='Water Color',subtype='COLOR_GAMMA',size=4,default=(0.144129, 0.0802198, 0, 1), min= 0, max= 1)
  233.     g_atmos : BoolProperty(default= True, name= "Enable Atmospheric Glow")
  234.     g_atmos_col : FloatVectorProperty(default= (1, 0.693872, 0.212231, 1), name='Atmos Color',subtype='COLOR_GAMMA',size=4, min= 0, max= 1)
  235.     g_atmos_glow : FloatProperty(default= 2.420)
  236.     i_scale : FloatProperty(default= 3.692, min= 1, max= 20, name= "Scale")
  237.     i_soften : FloatProperty(default= 0.238, min= 0, max= 1, name= "Soften Landmass")
  238.     i_land_height : FloatProperty(default= 0.238, min= 0.041, max= 0.4)
  239.     i_land_col1 : FloatVectorProperty(name='Color 1',subtype='COLOR_GAMMA',size=4,default=(0.00334653, 0.0152085, 0.0975874, 1), min= 0, max= 1)
  240.     i_land_col2 : FloatVectorProperty(name='Color 2',subtype='COLOR_GAMMA',size=4,default=(0.0409151, 0.304987, 0.48515, 1), min= 0, max= 1)
  241.     i_land_col3 : FloatVectorProperty(name='Color 3',subtype='COLOR_GAMMA',size=4,default=(0.381326, 0.527115, 1, 1), min= 0, max= 1)
  242.     i_land_col4 : FloatVectorProperty(name='Color 4',subtype='COLOR_GAMMA',size=4,default=(0.745404, 0.991102, 1, 1), min= 0, max= 1)
  243.     i_water_col : FloatVectorProperty(name='Water Color',subtype='COLOR_GAMMA',size=4,default=(0.0122865, 0.0343398, 0.0802199, 1), min= 0, max= 1)
  244.     i_atmos : BoolProperty(default= True, name= "Enable Atmospheric Glow")
  245.     i_atmos_col : FloatVectorProperty(default= (0.0761853, 0.456411, 1, 1), name='Atmos Color',subtype='COLOR_GAMMA',size=4, min= 0, max= 1)
  246.     i_atmos_glow : FloatProperty(default= 2.420)
  247.     c_shader_type : EnumProperty(
  248.         name="Shader Type:",
  249.         description="Select a Shader Type",
  250.         items=[ ('OP1', "Emission", ""),
  251.                 ('OP2', "Principled", ""),
  252.                ]
  253.         )
  254.    
  255.     def draw(self, context):
  256.         layout = self.layout
  257.         scene = context.scene
  258.         mytool = scene.my_tool
  259.        
  260.         if mytool.planet_type == 'OP2':
  261.             layout.prop(self, "c_shader_type", text= "Shader Type", expand= True)
  262.             layout.prop(self, "land_hue", slider= True, text= "Land Hue")
  263.             layout.prop(self, "land_sat", slider= True, text= "Land Saturation")
  264.             layout.prop(self, "land_scale", text= "Land Scale")
  265.             layout.prop(self, "water_lvl", slider= True, text= "Water Level")
  266.             layout.prop(self, "v_bool")
  267.             if self.v_bool == True:
  268.                 layout.prop(self, "v_col")
  269.                 layout.prop(self, "v_scale", slider= True)
  270.             layout.prop(self, "shadow_bool")
  271.             if self.shadow_bool == True:
  272.                 layout.prop(self, "shadow_coverage", slider= True, text= "Shadow Position")
  273.                 layout.prop(self, "shadow_vis", slider= True, text= "Shadow Visibility")
  274.                 layout.prop(self, "city_bool")
  275.                 if self.city_bool == True:
  276.                     layout.prop(self, "city_lights")
  277.                     layout.prop(self, "city_brightness")        
  278.             layout.prop(self, "atmos")
  279.             if self.atmos == True:
  280.                 layout.prop(self, "atmos_col", text= "Atmos Color")
  281.                 layout.prop(self, "atmos_glow", text= "Glow Amount")
  282.             layout.prop(self, "cloud_bool")    
  283.             if self.cloud_bool == True:
  284.                 layout.prop(self, "cloud_scale")
  285.                 layout.prop(self, "cloud_vis", slider= True)
  286.        
  287.         if mytool.planet_type == 'OP3':
  288.             layout.prop(self, "d_hue", text= "Planet Hue", slider= True)
  289.             layout.prop(self, "stripe_amount", text= "Stripe Amount", slider= True)
  290.             layout.prop(self, "atmos")
  291.             if self.atmos == True:
  292.                 layout.prop(self, "d_atmos_col", text= "Atmos Color")
  293.                 layout.prop(self, "d_atmos_glow", text= "Glow Amount")    
  294.                
  295.         if mytool.planet_type == 'OP4':
  296.             layout.prop(self, "m_seed", text= "Seed")
  297.             layout.prop(self, "m_macro_scale", text= "Moon Macro Scale")
  298.             layout.prop(self, "m_micro_scale", text= "Moon Micro Scale")
  299.             layout.prop(self, "m_atmos")
  300.             if self.m_atmos == True:
  301.                 layout.prop(self, "m_atmos_col", text= "Atmos Color")
  302.                 layout.prop(self, "m_atmos_glow", text= "Glow Amount")
  303.             layout.prop(self, "m_shadow_bool")
  304.             if self.m_shadow_bool == True:
  305.                 layout.prop(self, "m_shadow_coverage", text= "Shdow Position", slider= True)
  306.                 layout.prop(self, "m_shadow_vis", text= "Shdow Visibility", slider= True)
  307.                  
  308.         if mytool.planet_type == 'OP5':
  309.             layout.prop(self, "r_scale", text= "Noise Scale", slider= True)
  310.             layout.prop(self, "r_land_height", text= "Land Height", slider= True)
  311.             layout.prop(self, "r_land_col1", text= "Land Color 1")
  312.             layout.prop(self, "r_land_col2", text= "Land Color 2")
  313.             layout.prop(self, "r_land_col3", text= "Land Color 3")
  314.             layout.prop(self, "r_land_col4", text= "Land Color 4")
  315.             layout.prop(self, "r_water_col", text= "Water Color")
  316.             layout.prop(self, "r_soften", text= "Soften Noise Pattern", slider= True)
  317.             layout.prop(self, "r_atmos", text= "Enable Atmospheric Glow")
  318.             if self.r_atmos == True:
  319.                 layout.prop(self, "r_atmos_col", text= "Amospheric Color")
  320.                 layout.prop(self, "r_atmos_glow", text= "Atmos Strength")
  321.        
  322.         if mytool.planet_type == 'OP6':
  323.             layout.prop(self, "star_scale", text= "Star Scale")
  324.             layout.prop(self, "star_coverage", slider= True, text= "Star Density")
  325.            
  326.         if mytool.planet_type == 'OP7':
  327.             layout.prop(self, "g_scale", text= "Noise Scale", slider= True)
  328.             layout.prop(self, "g_land_height", text= "Land Height", slider= True)
  329.             layout.prop(self, "g_land_col1", text= "Land Color 1")
  330.             layout.prop(self, "g_land_col2", text= "Land Color 2")
  331.             layout.prop(self, "g_land_col3", text= "Land Color 3")
  332.             layout.prop(self, "g_land_col4", text= "Land Color 4")
  333.             layout.prop(self, "g_water_col", text= "Water Color")
  334.             layout.prop(self, "g_soften", text= "Soften Noise Pattern", slider= True)
  335.             layout.prop(self, "g_atmos", text= "Enable Atmospheric Glow")
  336.             if self.g_atmos == True:
  337.                 layout.prop(self, "g_atmos_col", text= "Amospheric Color")
  338.                 layout.prop(self, "g_atmos_glow", text= "Atmos Strength")
  339.        
  340.         if mytool.planet_type == 'OP8':
  341.             layout.prop(self, "i_scale", text= "Noise Scale", slider= True)
  342.             layout.prop(self, "i_land_height", text= "Land Height", slider= True)
  343.             layout.prop(self, "i_land_col1", text= "Land Color 1")
  344.             layout.prop(self, "i_land_col2", text= "Land Color 2")
  345.             layout.prop(self, "i_land_col3", text= "Land Color 3")
  346.             layout.prop(self, "i_land_col4", text= "Land Color 4")
  347.             layout.prop(self, "i_water_col", text= "Water Color")
  348.             layout.prop(self, "i_soften", text= "Soften Noise Pattern", slider= True)
  349.             layout.prop(self, "i_atmos", text= "Enable Atmospheric Glow")
  350.             if self.i_atmos == True:
  351.                 layout.prop(self, "i_atmos_col", text= "Amospheric Color")
  352.                 layout.prop(self, "i_atmos_glow", text= "Atmos Strength")        
  353.                        
  354.    
  355.     def execute(self, context):
  356.         c = self.col1
  357.         cv = self.cloud_vis
  358.         scene = context.scene
  359.         mytool = scene.my_tool
  360.        
  361.         if mytool.planet_type == 'OP1':
  362.             material_cosmic = bpy.data.materials.new(name= "Coming Soon")
  363.             material_cosmic.use_nodes = True
  364.             material_cosmic.node_tree.nodes.remove(material_cosmic.node_tree.nodes.get('Principled BSDF'))
  365.             material_output = material_cosmic.node_tree.nodes.get('Material Output')
  366.             material_output.location = (1000,0)
  367.             glass1_node = material_cosmic.node_tree.nodes.new('ShaderNodeBsdfGlass')
  368.             glass1_node.location = (-600,0)
  369.             glass1_node.inputs[0].default_value = (1, 0, 0, 1)
  370.             glass1_node.inputs[2].default_value = 1.446
  371.             #material_cosmic.node_tree.links.new(glass1_node.outputs[0], add1_node.inputs[0])
  372.             #material_cosmic.node_tree.links.new(mix1_node.outputs[0], material_output.inputs[0])
  373.             bpy.context.object.active_material = material_cosmic
  374.             bpy.context.object.active_material.diffuse_color = c
  375.             bpy.context.object.active_material.metallic = 0.3
  376.        
  377.         if mytool.planet_type == 'OP2':
  378.             if self.c_shader_type== 'OP1':
  379.                 material_cosmic2 = bpy.data.materials.new(name= "Continental")
  380.                 material_cosmic2.use_nodes = True
  381.                 material_cosmic2.node_tree.nodes.remove(material_cosmic2.node_tree.nodes.get('Principled BSDF'))
  382.                 material_output = material_cosmic2.node_tree.nodes.get('Material Output')
  383.                 material_output.location = (3200,0)
  384.                 noise1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  385.                 noise1_node.location = (-1000,0)
  386.                 noise1_node.inputs[2].default_value = self.land_scale
  387.                 noise1_node.inputs[3].default_value = 16
  388.                 noise1_node.inputs[4].default_value = 0.848
  389.                 noise1_node.inputs[5].default_value = 0
  390.                 noise2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  391.                 noise2_node.location = (-800, 0)
  392.                 noise2_node.inputs[2].default_value = 12.5
  393.                 noise2_node.inputs[3].default_value = 2
  394.                 noise2_node.inputs[4].default_value = 0.890
  395.                 noise2_node.inputs[5].default_value = 0
  396.                 cr1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  397.                 cr1_node.location = (-900, -200)
  398.                 cr1_node.color_ramp.elements[0].position= 0.133
  399.                 cr1_node.color_ramp.elements[1].position= self.water_lvl
  400.                 cr1_node.color_ramp.elements.new(position= 0.516)
  401.                 cr2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  402.                 cr2_node.location = (-650, -200)
  403.                 cr2_node.color_ramp.elements[0].position= 0.505
  404.                 cr2_node.color_ramp.elements[1].position= 0.650
  405.                 mixrgb_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  406.                 mixrgb_node.location = (-600, 0)
  407.                 mixrgb_node.inputs[2].default_value = (0, 0.0202886, 0.502886, 1)
  408.                 multiply_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  409.                 multiply_node.location = (-400, 200)
  410.                 multiply_node.blend_type = 'BURN'
  411.                 multiply_node.inputs[2].default_value = (0.391573, 0.799103, 0, 1)
  412.                 hue_node = material_cosmic2.node_tree.nodes.new('ShaderNodeHueSaturation')
  413.                 hue_node.location = (800, 100)
  414.                 hue_node.inputs[0].default_value = self.land_hue
  415.                 hue_node.inputs[1].default_value = self.land_sat
  416.                 cr3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  417.                 cr3_node.location = (-400, -200)
  418.                 cr3_node.color_ramp.elements[0].position= 0.402
  419.                 cr3_node.color_ramp.elements[1].position= 0.418
  420.                 overlay_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  421.                 overlay_node.location = (1000, 0)
  422.                 overlay_node.blend_type = 'LIGHTEN'
  423.                 overlay_node.inputs[2].default_value = (0, 0.0152085, 0.0528607, 1)
  424.                 dark_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  425.                 dark_node.location = (1200, 0)
  426.                 dark_node.blend_type = 'DARKEN'
  427.                 dark_node.inputs[2].default_value = (0,0,0,1)
  428.                 dark_node.use_clamp = True
  429.                 if self.shadow_bool == False:
  430.                     dark_node.mute= True
  431.                 grad1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexGradient')
  432.                 grad1_node.location= (800, 500)
  433.                 mapping2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMapping')
  434.                 mapping2_node.location = (600, 500)
  435.                 mapping2_node.inputs[1].default_value[0] = self.shadow_coverage
  436.                 mapping2_node.inputs[3].default_value[0] = 1
  437.                 mapping2_node.inputs[3].default_value[1] = 1
  438.                 mapping2_node.inputs[3].default_value[2] = 1
  439.                 coord2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexCoord')
  440.                 coord2_node.location = (400, 500)
  441.                 sv = self.shadow_vis
  442.                 cr7_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  443.                 cr7_node.location = (1200, 300)
  444.                 cr7_node.color_ramp.elements[0].position= 0.096
  445.                 cr7_node.color_ramp.elements[1].position= 0.551
  446.                 cr7_node.color_ramp.elements[1].color= (sv, sv, sv, 1)
  447.                 cr8_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  448.                 cr8_node.location = (1400, 500)
  449.                 cr8_node.color_ramp.elements[0].position= 0.421
  450.                 cr8_node.color_ramp.elements[1].position= 0.435
  451.                 cr8_node.color_ramp.elements[0].color= (1,1,1,1)
  452.                 cr8_node.color_ramp.elements[1].color= (0,0,0,1)
  453.                 math2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  454.                 math2_node.location = (1700, 600)
  455.                 math2_node.operation = 'SUBTRACT'
  456.                 math3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  457.                 math3_node.location = (1500, 700)
  458.                 math3_node.operation = 'MULTIPLY'
  459.                 math4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  460.                 math4_node.location = (900, 900)
  461.                 math4_node.operation = 'MULTIPLY'
  462.                 cr9_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  463.                 cr9_node.location = (600, 900)
  464.                 cr9_node.color_ramp.elements[0].position= 0.598
  465.                 cr9_node.color_ramp.elements[1].position= 0.606
  466.                 noise4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  467.                 noise4_node.location = (400, 900)
  468.                 noise4_node.inputs[2].default_value = 96.100
  469.                 noise4_node.inputs[3].default_value = 2
  470.                 noise4_node.inputs[4].default_value = 1
  471.                 noise4_node.inputs[5].default_value = 2.4
  472.                 math5_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  473.                 math5_node.location = (200, 900)
  474.                 math5_node.operation = 'ADD'
  475.                 musgrave2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexMusgrave')
  476.                 musgrave2_node.location = (0, 1000)
  477.                 musgrave2_node.inputs[2].default_value = self.city_lights
  478.                 musgrave2_node.inputs[3].default_value = 2
  479.                 musgrave2_node.inputs[4].default_value = 2
  480.                 musgrave2_node.inputs[5].default_value = 2
  481.                 musgrave3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexMusgrave')
  482.                 musgrave3_node.location = (0, 800)
  483.                 musgrave3_node.inputs[2].default_value = -5.80
  484.                 musgrave3_node.inputs[3].default_value = 2
  485.                 musgrave3_node.inputs[4].default_value = 9.2
  486.                 musgrave3_node.inputs[5].default_value = 9.8
  487.                 mixs3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixShader')
  488.                 mixs3_node.location = (3000, 0)
  489.                 if self.city_bool == False:
  490.                     mixs3_node.mute= True
  491.                 emiss4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  492.                 emiss4_node.location = (2800, -200)
  493.                 emiss4_node.inputs[1].default_value = self.city_brightness
  494.                 mixrgb3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  495.                 mixrgb3_node.location = (2600, -200)
  496.                 mixrgb3_node.inputs[2].default_value = (1, 0.694074, 0.220557, 1)
  497.                 cr10_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  498.                 cr10_node.location = (2800, 500)
  499.                 cr10_node.color_ramp.elements[1].position= 0.027
  500.                 emiss1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  501.                 emiss1_node.location = (1700, 200)
  502.                 emiss1_node.inputs[1].default_value = 2.800
  503.                 emiss2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  504.                 emiss2_node.location = (1900, -200)
  505.                 emiss2_node.inputs[0].default_value = self.atmos_col
  506.                 emiss2_node.inputs[1].default_value = self.atmos_glow
  507.                 emiss3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  508.                 emiss3_node.location = (1900, 0)
  509.                 emiss3_node.inputs[0].default_value = (1, 1, 1, 1)
  510.                 emiss3_node.inputs[1].default_value = 6.500
  511.                 mixs2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixShader')
  512.                 mixs2_node.location = (2500, 0)
  513.                 if self.cloud_bool == False:
  514.                     mixs2_node.mute= True
  515.                 lweight_node = material_cosmic2.node_tree.nodes.new('ShaderNodeLayerWeight')
  516.                 lweight_node.location = (2200, 400)
  517.                 lweight_node.inputs[0].default_value = 0.370
  518.                 cr4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  519.                 cr4_node.location = (2500, 400)
  520.                 cr4_node.color_ramp.elements[0].position= 0.056739
  521.                 mixs_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixShader')
  522.                 mixs_node.location = (2700, 0)
  523.                 if self.atmos == False:
  524.                     mixs_node.mute= True
  525.                 cr5_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  526.                 cr5_node.location = (-400, -500)
  527.                 cr5_node.color_ramp.elements[0].position= 0.540761
  528.                 cr5_node.color_ramp.elements[1].position= 0.769022
  529.                 cr5_node.color_ramp.elements[1].color = (cv, cv, cv, cv)
  530.                 noise3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  531.                 noise3_node.location = (-600, -500)
  532.                 noise3_node.inputs[2].default_value = self.cloud_scale
  533.                 noise3_node.inputs[3].default_value = 7.100
  534.                 noise3_node.inputs[4].default_value = 0.995
  535.                 noise3_node.inputs[5].default_value = 0.8
  536.                 mapping_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMapping')
  537.                 mapping_node.location = (-800, -500)
  538.                 mapping_node.inputs[3].default_value[0] = 0.18
  539.                 mapping_node.inputs[3].default_value[1] = 0.18
  540.                 mapping_node.inputs[3].default_value[2] = 0.18
  541.                 coord_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexCoord')
  542.                 coord_node.location = (-1000, -500)
  543.                 mixrgb2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  544.                 mixrgb2_node.location = (600, 0)
  545.                 mixrgb2_node.inputs[2].default_value = self.v_col
  546.                 math_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  547.                 math_node.location = (400, 0)
  548.                 math_node.operation = 'MULTIPLY'
  549.                 musgrave1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexMusgrave')
  550.                 musgrave1_node.location = (200, -200)
  551.                 musgrave1_node.inputs[2].default_value = self.v_scale
  552.                 musgrave1_node.inputs[3].default_value = 16
  553.                 musgrave1_node.inputs[4].default_value = 0.030
  554.                 musgrave1_node.inputs[5].default_value = 1.2
  555.                 musgrave1_node.musgrave_type = 'MULTIFRACTAL'
  556.                 cr6_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  557.                 cr6_node.location = (200, 200)
  558.                 cr6_node.color_ramp.elements[0].position= 0.092
  559.                 cr6_node.color_ramp.elements[1].position= 0.122
  560.                 bw_node = material_cosmic2.node_tree.nodes.new('ShaderNodeRGBToBW')
  561.                 bw_node.location = (0, 200)
  562.                 link = material_cosmic2.node_tree.links.new
  563.                 link(mixrgb3_node.outputs[0], emiss4_node.inputs[0])
  564.                 link(overlay_node.outputs[0], dark_node.inputs[1])
  565.                 link(math2_node.outputs[0], mixrgb3_node.inputs[1])
  566.                 link(math2_node.outputs[0], cr10_node.inputs[0])
  567.                 link(math4_node.outputs[0], math3_node.inputs[0])
  568.                 link(math5_node.outputs[0], math4_node.inputs[1])
  569.                 link(cr9_node.outputs[0], math4_node.inputs[0])
  570.                 link(noise4_node.outputs[0], cr9_node.inputs[0])
  571.                 link(math5_node.outputs[0], noise4_node.inputs[1])
  572.                 link(musgrave3_node.outputs[0], math5_node.inputs[1])
  573.                 link(musgrave2_node.outputs[0], math5_node.inputs[0])
  574.                 link(cr6_node.outputs[0], math3_node.inputs[1])
  575.                 link(math3_node.outputs[0], math2_node.inputs[0])
  576.                 link(cr8_node.outputs[0], math2_node.inputs[1])
  577.                 link(grad1_node.outputs[0], cr8_node.inputs[0])
  578.                 link(cr10_node.outputs[0], mixs3_node.inputs[0])
  579.                 link(emiss4_node.outputs[0], mixs3_node.inputs[2])
  580.                 link(mixs_node.outputs[0], mixs3_node.inputs[1])
  581.                 link(coord2_node.outputs[0], mapping2_node.inputs[0])
  582.                 link(mapping2_node.outputs[0], grad1_node.inputs[0])
  583.                 link(grad1_node.outputs[0], cr7_node.inputs[0])
  584.                 link(dark_node.outputs[0], emiss1_node.inputs[0])
  585.                 link(cr7_node.outputs[0], dark_node.inputs[0])
  586.                 link(math_node.outputs[0], mixrgb2_node.inputs[0])
  587.                 link(cr6_node.outputs[0], math_node.inputs[0])
  588.                 link(musgrave1_node.outputs[0], math_node.inputs[1])
  589.                 link(bw_node.outputs[0], cr6_node.inputs[0])
  590.                 link(math_node.outputs[0], mixrgb2_node.inputs[0])
  591.                 link(multiply_node.outputs[0], bw_node.inputs[0])
  592.                 link(multiply_node.outputs[0], mixrgb2_node.inputs[1])
  593.                 link(emiss1_node.outputs[0], mixs2_node.inputs[1])
  594.                 link(emiss3_node.outputs[0], mixs2_node.inputs[2])
  595.                 link(mixs2_node.outputs[0], mixs_node.inputs[1])
  596.                 link(emiss2_node.outputs[0], mixs_node.inputs[2])
  597.                 link(cr5_node.outputs[0], mixs2_node.inputs[0])
  598.                 link(noise3_node.outputs[0], cr5_node.inputs[0])
  599.                 link(mapping_node.outputs[0], noise3_node.inputs[0])
  600.                 link(coord_node.outputs[0], mapping_node.inputs[0])
  601.                 link(cr4_node.outputs[0], mixs_node.inputs[0])
  602.                 link(lweight_node.outputs[0], cr4_node.inputs[0])
  603.                 link(dark_node.outputs[0], emiss1_node.inputs[0])
  604.                 link(mixrgb2_node.outputs[0], hue_node.inputs[4])
  605.                 link(hue_node.outputs[0], overlay_node.inputs[1])
  606.                 link(cr3_node.outputs[0], overlay_node.inputs[0])
  607.                 link(mixrgb_node.outputs[0], multiply_node.inputs[1])
  608.                 link(noise2_node.outputs[0], multiply_node.inputs[0])
  609.                 link(cr2_node.outputs[0], mixrgb_node.inputs[1])
  610.                 link(noise1_node.outputs[0], mixrgb_node.inputs[0])
  611.                 link(noise2_node.outputs[0], cr2_node.inputs[0])
  612.                 link(noise2_node.outputs[0], cr3_node.inputs[0])
  613.                 link(cr1_node.outputs[0], noise2_node.inputs[0])
  614.                 link(noise1_node.outputs[0], cr1_node.inputs[0])
  615.                 link(mixs3_node.outputs[0], material_output.inputs[0])
  616.                 bpy.context.object.active_material = material_cosmic2
  617.                 bpy.context.object.active_material.diffuse_color = (0, 1, 0, 1)
  618.                 bpy.context.object.active_material.metallic = 0.3
  619.             else:
  620.                 material_cosmic2 = bpy.data.materials.new(name= "Continental")
  621.                 material_cosmic2.use_nodes = True
  622.                 bdsf_node = material_cosmic2.node_tree.nodes.get('Principled BSDF')
  623.                 bdsf_node.location = (1700, 200)
  624.                 material_output = material_cosmic2.node_tree.nodes.get('Material Output')
  625.                 cr11_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  626.                 cr11_node.location = (1600, 200)
  627.                 cr11_node.color_ramp.elements[0].color= (0.527,0.527,0.527,1)
  628.                 bw2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeRGBToBW')
  629.                 bw2_node.location = (1500, 200)
  630.                 bump_node = material_cosmic2.node_tree.nodes.new('ShaderNodeBump')
  631.                 bump_node.location = (1500, 0)
  632.                 material_output.location = (3200,0)
  633.                 noise1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  634.                 noise1_node.location = (-1000,0)
  635.                 noise1_node.inputs[2].default_value = self.land_scale
  636.                 noise1_node.inputs[3].default_value = 16
  637.                 noise1_node.inputs[4].default_value = 0.848
  638.                 noise1_node.inputs[5].default_value = 0
  639.                 noise2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  640.                 noise2_node.location = (-800, 0)
  641.                 noise2_node.inputs[2].default_value = 12.5
  642.                 noise2_node.inputs[3].default_value = 2
  643.                 noise2_node.inputs[4].default_value = 0.890
  644.                 noise2_node.inputs[5].default_value = 0
  645.                 cr1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  646.                 cr1_node.location = (-900, -200)
  647.                 cr1_node.color_ramp.elements[0].position= 0.133
  648.                 cr1_node.color_ramp.elements[1].position= self.water_lvl
  649.                 cr1_node.color_ramp.elements.new(position= 0.516)
  650.                 cr2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  651.                 cr2_node.location = (-650, -200)
  652.                 cr2_node.color_ramp.elements[0].position= 0.505
  653.                 cr2_node.color_ramp.elements[1].position= 0.650
  654.                 mixrgb_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  655.                 mixrgb_node.location = (-600, 0)
  656.                 mixrgb_node.inputs[2].default_value = (0, 0.0202886, 0.502886, 1)
  657.                 multiply_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  658.                 multiply_node.location = (-400, 200)
  659.                 multiply_node.blend_type = 'BURN'
  660.                 multiply_node.inputs[2].default_value = (0.391573, 0.799103, 0, 1)
  661.                 hue_node = material_cosmic2.node_tree.nodes.new('ShaderNodeHueSaturation')
  662.                 hue_node.location = (800, 100)
  663.                 hue_node.inputs[0].default_value = self.land_hue
  664.                 hue_node.inputs[1].default_value = self.land_sat
  665.                 cr3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  666.                 cr3_node.location = (-400, -200)
  667.                 cr3_node.color_ramp.elements[0].position= 0.402
  668.                 cr3_node.color_ramp.elements[1].position= 0.418
  669.                 overlay_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  670.                 overlay_node.location = (1000, 0)
  671.                 overlay_node.blend_type = 'LIGHTEN'
  672.                 overlay_node.inputs[2].default_value = (0, 0.0152085, 0.0528607, 1)
  673.                 dark_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  674.                 dark_node.location = (1200, 0)
  675.                 dark_node.blend_type = 'DARKEN'
  676.                 dark_node.inputs[2].default_value = (0,0,0,1)
  677.                 dark_node.use_clamp = True
  678.                 if self.shadow_bool == False:
  679.                     dark_node.mute= True
  680.                 grad1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexGradient')
  681.                 grad1_node.location= (800, 500)
  682.                 mapping2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMapping')
  683.                 mapping2_node.location = (600, 500)
  684.                 mapping2_node.inputs[1].default_value[0] = self.shadow_coverage
  685.                 mapping2_node.inputs[3].default_value[0] = 1
  686.                 mapping2_node.inputs[3].default_value[1] = 1
  687.                 mapping2_node.inputs[3].default_value[2] = 1
  688.                 coord2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexCoord')
  689.                 coord2_node.location = (400, 500)
  690.                 sv = self.shadow_vis
  691.                 cr7_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  692.                 cr7_node.location = (1200, 300)
  693.                 cr7_node.color_ramp.elements[0].position= 0.096
  694.                 cr7_node.color_ramp.elements[1].position= 0.551
  695.                 cr7_node.color_ramp.elements[1].color= (sv, sv, sv, 1)
  696.                 cr8_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  697.                 cr8_node.location = (1400, 500)
  698.                 cr8_node.color_ramp.elements[0].position= 0.421
  699.                 cr8_node.color_ramp.elements[1].position= 0.435
  700.                 cr8_node.color_ramp.elements[0].color= (1,1,1,1)
  701.                 cr8_node.color_ramp.elements[1].color= (0,0,0,1)
  702.                 math2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  703.                 math2_node.location = (1700, 600)
  704.                 math2_node.operation = 'SUBTRACT'
  705.                 math3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  706.                 math3_node.location = (1500, 700)
  707.                 math3_node.operation = 'MULTIPLY'
  708.                 math4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  709.                 math4_node.location = (900, 900)
  710.                 math4_node.operation = 'MULTIPLY'
  711.                 cr9_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  712.                 cr9_node.location = (600, 900)
  713.                 cr9_node.color_ramp.elements[0].position= 0.598
  714.                 cr9_node.color_ramp.elements[1].position= 0.606
  715.                 noise4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  716.                 noise4_node.location = (400, 900)
  717.                 noise4_node.inputs[2].default_value = 96.100
  718.                 noise4_node.inputs[3].default_value = 2
  719.                 noise4_node.inputs[4].default_value = 1
  720.                 noise4_node.inputs[5].default_value = 2.4
  721.                 math5_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  722.                 math5_node.location = (200, 900)
  723.                 math5_node.operation = 'ADD'
  724.                 musgrave2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexMusgrave')
  725.                 musgrave2_node.location = (0, 1000)
  726.                 musgrave2_node.inputs[2].default_value = self.city_lights
  727.                 musgrave2_node.inputs[3].default_value = 2
  728.                 musgrave2_node.inputs[4].default_value = 2
  729.                 musgrave2_node.inputs[5].default_value = 2
  730.                 musgrave3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexMusgrave')
  731.                 musgrave3_node.location = (0, 800)
  732.                 musgrave3_node.inputs[2].default_value = -5.80
  733.                 musgrave3_node.inputs[3].default_value = 2
  734.                 musgrave3_node.inputs[4].default_value = 9.2
  735.                 musgrave3_node.inputs[5].default_value = 9.8
  736.                 mixs3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixShader')
  737.                 mixs3_node.location = (3000, 0)
  738.                 if self.city_bool == False:
  739.                     mixs3_node.mute= True
  740.                 emiss4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  741.                 emiss4_node.location = (2800, -200)
  742.                 emiss4_node.inputs[1].default_value = self.city_brightness
  743.                 mixrgb3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  744.                 mixrgb3_node.location = (2600, -200)
  745.                 mixrgb3_node.inputs[2].default_value = (1, 0.694074, 0.220557, 1)
  746.                 cr10_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  747.                 cr10_node.location = (2800, 500)
  748.                 cr10_node.color_ramp.elements[1].position= 0.027
  749.                 emiss2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  750.                 emiss2_node.location = (1900, -200)
  751.                 emiss2_node.inputs[0].default_value = self.atmos_col
  752.                 emiss2_node.inputs[1].default_value = self.atmos_glow
  753.                 emiss3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeEmission')
  754.                 emiss3_node.location = (1900, 0)
  755.                 emiss3_node.inputs[0].default_value = (1, 1, 1, 1)
  756.                 emiss3_node.inputs[1].default_value = 6.500
  757.                 mixs2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixShader')
  758.                 mixs2_node.location = (2500, 0)
  759.                 if self.cloud_bool == False:
  760.                     mixs2_node.mute= True
  761.                 lweight_node = material_cosmic2.node_tree.nodes.new('ShaderNodeLayerWeight')
  762.                 lweight_node.location = (2200, 400)
  763.                 lweight_node.inputs[0].default_value = 0.160
  764.                 cr4_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  765.                 cr4_node.location = (2500, 400)
  766.                 cr4_node.color_ramp.elements[0].position= 0.005435
  767.                 mixs_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixShader')
  768.                 mixs_node.location = (2700, 0)
  769.                 if self.atmos == False:
  770.                     mixs_node.mute= True
  771.                 cr5_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  772.                 cr5_node.location = (-400, -500)
  773.                 cr5_node.color_ramp.elements[0].position= 0.540761
  774.                 cr5_node.color_ramp.elements[1].position= 0.769022
  775.                 cr5_node.color_ramp.elements[1].color = (cv, cv, cv, cv)
  776.                 noise3_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexNoise')
  777.                 noise3_node.location = (-600, -500)
  778.                 noise3_node.inputs[2].default_value = self.cloud_scale
  779.                 noise3_node.inputs[3].default_value = 7.100
  780.                 noise3_node.inputs[4].default_value = 0.995
  781.                 noise3_node.inputs[5].default_value = 0.8
  782.                 mapping_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMapping')
  783.                 mapping_node.location = (-800, -500)
  784.                 mapping_node.inputs[3].default_value[0] = 0.18
  785.                 mapping_node.inputs[3].default_value[1] = 0.18
  786.                 mapping_node.inputs[3].default_value[2] = 0.18
  787.                 coord_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexCoord')
  788.                 coord_node.location = (-1000, -500)
  789.                 mixrgb2_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMixRGB')
  790.                 mixrgb2_node.location = (600, 0)
  791.                 mixrgb2_node.inputs[2].default_value = self.v_col
  792.                 math_node = material_cosmic2.node_tree.nodes.new('ShaderNodeMath')
  793.                 math_node.location = (400, 0)
  794.                 math_node.operation = 'MULTIPLY'
  795.                 musgrave1_node = material_cosmic2.node_tree.nodes.new('ShaderNodeTexMusgrave')
  796.                 musgrave1_node.location = (200, -200)
  797.                 musgrave1_node.inputs[2].default_value = self.v_scale
  798.                 musgrave1_node.inputs[3].default_value = 16
  799.                 musgrave1_node.inputs[4].default_value = 0.030
  800.                 musgrave1_node.inputs[5].default_value = 1.2
  801.                 musgrave1_node.musgrave_type = 'MULTIFRACTAL'
  802.                 cr6_node = material_cosmic2.node_tree.nodes.new('ShaderNodeValToRGB')
  803.                 cr6_node.location = (200, 200)
  804.                 cr6_node.color_ramp.elements[0].position= 0.092
  805.                 cr6_node.color_ramp.elements[1].position= 0.122
  806.                 bw_node = material_cosmic2.node_tree.nodes.new('ShaderNodeRGBToBW')
  807.                 bw_node.location = (0, 200)
  808.                 link = material_cosmic2.node_tree.links.new
  809.                 link(mixrgb3_node.outputs[0], emiss4_node.inputs[0])
  810.                 link(overlay_node.outputs[0], dark_node.inputs[1])
  811.                 link(math2_node.outputs[0], mixrgb3_node.inputs[1])
  812.                 link(math2_node.outputs[0], cr10_node.inputs[0])
  813.                 link(math4_node.outputs[0], math3_node.inputs[0])
  814.                 link(math5_node.outputs[0], math4_node.inputs[1])
  815.                 link(cr9_node.outputs[0], math4_node.inputs[0])
  816.                 link(noise4_node.outputs[0], cr9_node.inputs[0])
  817.                 link(math5_node.outputs[0], noise4_node.inputs[1])
  818.                 link(musgrave3_node.outputs[0], math5_node.inputs[1])
  819.                 link(musgrave2_node.outputs[0], math5_node.inputs[0])
  820.                 link(cr6_node.outputs[0], math3_node.inputs[1])
  821.                 link(math3_node.outputs[0], math2_node.inputs[0])
  822.                 link(cr8_node.outputs[0], math2_node.inputs[1])
  823.                 link(grad1_node.outputs[0], cr8_node.inputs[0])
  824.                 link(cr10_node.outputs[0], mixs3_node.inputs[0])
  825.                 link(emiss4_node.outputs[0], mixs3_node.inputs[2])
  826.                 link(mixs_node.outputs[0], mixs3_node.inputs[1])
  827.                 link(coord2_node.outputs[0], mapping2_node.inputs[0])
  828.                 link(mapping2_node.outputs[0], grad1_node.inputs[0])
  829.                 link(grad1_node.outputs[0], cr7_node.inputs[0])
  830.                 link(dark_node.outputs[0], bdsf_node.inputs[0])
  831.                 link(cr11_node.outputs[0], bdsf_node.inputs[7])
  832.                 link(bump_node.outputs[0], bdsf_node.inputs[19])
  833.                 link(dark_node.outputs[0], bdsf_node.inputs[0])
  834.                 link(dark_node.outputs[0], bw2_node.inputs[0])
  835.                 link(bw2_node.outputs[0], cr11_node.inputs[0])
  836.                 link(dark_node.outputs[0], bump_node.inputs[2])
  837.                 link(cr7_node.outputs[0], dark_node.inputs[0])
  838.                 link(math_node.outputs[0], mixrgb2_node.inputs[0])
  839.                 link(cr6_node.outputs[0], math_node.inputs[0])
  840.                 link(musgrave1_node.outputs[0], math_node.inputs[1])
  841.                 link(bw_node.outputs[0], cr6_node.inputs[0])
  842.                 link(math_node.outputs[0], mixrgb2_node.inputs[0])
  843.                 link(multiply_node.outputs[0], bw_node.inputs[0])
  844.                 link(multiply_node.outputs[0], mixrgb2_node.inputs[1])
  845.                 link(bdsf_node.outputs[0], mixs2_node.inputs[1])
  846.                 link(emiss3_node.outputs[0], mixs2_node.inputs[2])
  847.                 link(mixs2_node.outputs[0], mixs_node.inputs[1])
  848.                 link(emiss2_node.outputs[0], mixs_node.inputs[2])
  849.                 link(cr5_node.outputs[0], mixs2_node.inputs[0])
  850.                 link(noise3_node.outputs[0], cr5_node.inputs[0])
  851.                 link(mapping_node.outputs[0], noise3_node.inputs[0])
  852.                 link(coord_node.outputs[0], mapping_node.inputs[0])
  853.                 link(cr4_node.outputs[0], mixs_node.inputs[0])
  854.                 link(lweight_node.outputs[0], cr4_node.inputs[0])
  855.                 link(mixrgb2_node.outputs[0], hue_node.inputs[4])
  856.                 link(hue_node.outputs[0], overlay_node.inputs[1])
  857.                 link(cr3_node.outputs[0], overlay_node.inputs[0])
  858.                 link(mixrgb_node.outputs[0], multiply_node.inputs[1])
  859.                 link(noise2_node.outputs[0], multiply_node.inputs[0])
  860.                 link(cr2_node.outputs[0], mixrgb_node.inputs[1])
  861.                 link(noise1_node.outputs[0], mixrgb_node.inputs[0])
  862.                 link(noise2_node.outputs[0], cr2_node.inputs[0])
  863.                 link(noise2_node.outputs[0], cr3_node.inputs[0])
  864.                 link(cr1_node.outputs[0], noise2_node.inputs[0])
  865.                 link(noise1_node.outputs[0], cr1_node.inputs[0])
  866.                 link(mixs3_node.outputs[0], material_output.inputs[0])
  867.                 bpy.context.object.active_material = material_cosmic2
  868.                 bpy.context.object.active_material.diffuse_color = (0, 1, 0, 1)
  869.                 bpy.context.object.active_material.metallic = 0.3
  870.                
  871.         if mytool.planet_type == 'OP3':
  872.             material_cosmic3 = bpy.data.materials.new(name= "Dust World")
  873.             material_cosmic3.use_nodes = True
  874.             material_cosmic3.node_tree.nodes.remove(material_cosmic3.node_tree.nodes.get('Principled BSDF'))
  875.             material_output = material_cosmic3.node_tree.nodes.get('Material Output')
  876.             material_output.location = (1000,0)
  877.             cr1_node = material_cosmic3.node_tree.nodes.new('ShaderNodeValToRGB')
  878.             cr1_node.location = (-300, 500)
  879.             cr1_node.color_ramp.elements[0].position= 0.858544
  880.             cr1_node.color_ramp.elements[1].position= 0.970109
  881.             magic_node = material_cosmic3.node_tree.nodes.new('ShaderNodeTexMagic')
  882.             magic_node.location = (-500, 500)
  883.             magic_node.inputs[1].default_value = self.stripe_amount
  884.             magic_node.inputs[2].default_value = 0.130
  885.             magic_node.turbulence_depth = 1
  886.             mapping_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMapping')
  887.             mapping_node.location = (-700, 500)
  888.             mapping_node.inputs[2].default_value[0] = -42.4
  889.             mapping_node.inputs[2].default_value[1] = 47.6
  890.             mapping_node.inputs[2].default_value[2] = 0
  891.             mapping_node.inputs[3].default_value[0] = 0.6
  892.             coord_node = material_cosmic3.node_tree.nodes.new('ShaderNodeTexCoord')
  893.             coord_node.location = (-900, 500)
  894.             voronoi_node = material_cosmic3.node_tree.nodes.new('ShaderNodeTexVoronoi')
  895.             voronoi_node.location = (-700, 0)
  896.             voronoi_node.feature = 'SMOOTH_F1'
  897.             voronoi_node.distance = 'CHEBYCHEV'
  898.             voronoi_node.inputs[2].default_value = 21.690
  899.             voronoi_node.inputs[3].default_value = 1
  900.             voronoi_node.inputs[4].default_value = 1
  901.             mapping2_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMapping')
  902.             mapping2_node.location = (-900, 0)
  903.             mapping2_node.inputs[3].default_value[0] = 0.140
  904.             coord2_node = material_cosmic3.node_tree.nodes.new('ShaderNodeTexCoord')
  905.             coord2_node.location = (-1100, 0)
  906.             bw_node = material_cosmic3.node_tree.nodes.new('ShaderNodeRGBToBW')
  907.             bw_node.location = (-550, 0)
  908.             multiply1_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMixRGB')
  909.             multiply1_node.location = (-400, 200)
  910.             multiply1_node.inputs[0].default_value = 1
  911.             multiply1_node.inputs[2].default_value = (0.552012, 0.130136, 0.0451862, 1)
  912.             multiply1_node.blend_type= 'MULTIPLY'
  913.             multiply2_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMixRGB')
  914.             multiply2_node.location = (-400, -200)
  915.             multiply2_node.inputs[0].default_value = 1
  916.             multiply2_node.inputs[2].default_value = (0.187821, 0.0684782, 0, 1)
  917.             multiply2_node.blend_type= 'MULTIPLY'
  918.             mixrgb_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMixRGB')
  919.             mixrgb_node.location = (-200, 0)
  920.             overlay_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMixRGB')
  921.             overlay_node.location = (0, 0)
  922.             overlay_node.inputs[0].default_value = 0.595
  923.             overlay_node.blend_type= 'OVERLAY'
  924.             darken_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMixRGB')
  925.             darken_node.location = (200, 0)
  926.             darken_node.inputs[2].default_value = (0.035037, 0.0133497, 0.00550307, 1)
  927.             darken_node.blend_type= 'MULTIPLY'
  928.             noise1_node = material_cosmic3.node_tree.nodes.new('ShaderNodeTexNoise')
  929.             noise1_node.location = (0, -200)
  930.             noise1_node.inputs[2].default_value = 8.600
  931.             noise1_node.inputs[3].default_value = 16
  932.             noise1_node.inputs[4].default_value = 0.830
  933.             noise1_node.inputs[5].default_value = 0
  934.             cr3_node = material_cosmic3.node_tree.nodes.new('ShaderNodeValToRGB')
  935.             cr3_node.location = (200, -200)
  936.             cr3_node.color_ramp.elements[0].position= 0.366848
  937.             cr3_node.color_ramp.elements[1].position= 0.608695
  938.             hue_node = material_cosmic3.node_tree.nodes.new('ShaderNodeHueSaturation')
  939.             hue_node.location = (400, 200)
  940.             hue_node.inputs[0].default_value = self.d_hue
  941.             emiss1_node = material_cosmic3.node_tree.nodes.new('ShaderNodeEmission')
  942.             emiss1_node.location = (600, 200)
  943.             emiss1_node.inputs[1].default_value = 2.800
  944.             emiss2_node = material_cosmic3.node_tree.nodes.new('ShaderNodeEmission')
  945.             emiss2_node.location = (600, -200)
  946.             emiss2_node.inputs[0].default_value = self.d_atmos_col
  947.             emiss2_node.inputs[1].default_value = self.d_atmos_glow
  948.             lweight_node = material_cosmic3.node_tree.nodes.new('ShaderNodeLayerWeight')
  949.             lweight_node.location = (200, 400)
  950.             lweight_node.inputs[0].default_value= 0.160
  951.             mixs_node = material_cosmic3.node_tree.nodes.new('ShaderNodeMixShader')
  952.             mixs_node.location = (800, 0)
  953.             if self.atmos == False:
  954.                 mixs_node.mute= True
  955.             cr2_node = material_cosmic3.node_tree.nodes.new('ShaderNodeValToRGB')
  956.             cr2_node.location = (500, 400)
  957.             cr2_node.color_ramp.elements[0].position= 0.013587
  958.             cr2_node.color_ramp.elements[1].position= 1
  959.             link = material_cosmic3.node_tree.links.new
  960.             link(voronoi_node.outputs[0], mixrgb_node.inputs[0])
  961.             link(mixrgb_node.outputs[0], overlay_node.inputs[1])
  962.             link(voronoi_node.outputs[0], mapping_node.inputs[0])
  963.             link(mapping2_node.outputs[0], voronoi_node.inputs[0])
  964.             link(coord2_node.outputs[0], mapping2_node.inputs[0])
  965.             link(bw_node.outputs[0], multiply2_node.inputs[1])
  966.             link(bw_node.outputs[0], multiply1_node.inputs[1])
  967.             link(voronoi_node.outputs[1], bw_node.inputs[0])
  968.             link(coord_node.outputs[0], mapping_node.inputs[0])
  969.             link(mapping_node.outputs[0], magic_node.inputs[0])
  970.             link(magic_node.outputs[0], cr1_node.inputs[0])
  971.             link(cr1_node.outputs[0], overlay_node.inputs[2])
  972.             link(multiply2_node.outputs[0], mixrgb_node.inputs[2])
  973.             link(multiply1_node.outputs[0], mixrgb_node.inputs[1])
  974.             link(overlay_node.outputs[0], darken_node.inputs[1])
  975.             link(cr3_node.outputs[0], darken_node.inputs[0])
  976.             link(darken_node.outputs[0], hue_node.inputs[4])
  977.             link(hue_node.outputs[0], emiss1_node.inputs[0])
  978.             link(noise1_node.outputs[0], cr3_node.inputs[0])
  979.             link(lweight_node.outputs[0], cr2_node.inputs[0])
  980.             link(cr2_node.outputs[0], mixs_node.inputs[0])
  981.             link(emiss2_node.outputs[0], mixs_node.inputs[2])
  982.             link(emiss1_node.outputs[0], mixs_node.inputs[1])
  983.             link(mixs_node.outputs[0], material_output.inputs[0])
  984.             bpy.context.object.active_material = material_cosmic3
  985.             bpy.context.object.active_material.diffuse_color = (1, 0.3, 0.004, 1)
  986.             bpy.context.object.active_material.metallic = 0.3
  987.            
  988.         if mytool.planet_type == 'OP4':
  989.             material_cosmic4 = bpy.data.materials.new(name= "Moon")
  990.             material_cosmic4.use_nodes = True
  991.             material_cosmic4.node_tree.nodes.remove(material_cosmic4.node_tree.nodes.get('Principled BSDF'))
  992.             material_output = material_cosmic4.node_tree.nodes.get('Material Output')
  993.             material_output.location = (1000,0)
  994.             mus1_node = material_cosmic4.node_tree.nodes.new('ShaderNodeTexMusgrave')
  995.             mus1_node.location = (-1600,400)
  996.             mus1_node.musgrave_type= 'MULTIFRACTAL'
  997.             mus1_node.inputs[2].default_value = self.m_macro_scale
  998.             mus1_node.inputs[3].default_value = 16
  999.             mus1_node.inputs[4].default_value = 0.720
  1000.             mus1_node.inputs[5].default_value = 2.610
  1001.             mus2_node = material_cosmic4.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1002.             mus2_node.location = (-1400,400)
  1003.             mus2_node.musgrave_dimensions = '4D'
  1004.             mus2_node.musgrave_type= 'MULTIFRACTAL'
  1005.             mus2_node.inputs[1].default_value = self.m_seed
  1006.             mus2_node.inputs[2].default_value = 0.740
  1007.             mus2_node.inputs[3].default_value = 16
  1008.             mus2_node.inputs[4].default_value = 0.350
  1009.             mus2_node.inputs[5].default_value = 2.610
  1010.             mus3_node = material_cosmic4.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1011.             mus3_node.location = (-1200,400)
  1012.             mus3_node.musgrave_dimensions = '4D'
  1013.             mus3_node.inputs[1].default_value = 0
  1014.             mus3_node.inputs[2].default_value = 6.990
  1015.             mus3_node.inputs[3].default_value = 12
  1016.             mus3_node.inputs[4].default_value = 6.830
  1017.             mus3_node.inputs[5].default_value = 2
  1018.             cr1_node = material_cosmic4.node_tree.nodes.new('ShaderNodeValToRGB')
  1019.             cr1_node.location = (-1000, 400)
  1020.             cr1_node.color_ramp.elements[0].position= 0
  1021.             cr1_node.color_ramp.elements.new(position= 0.035)
  1022.             cr1_node.color_ramp.elements[1].color= (1,1,1,1)
  1023.             mus4_node = material_cosmic4.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1024.             mus4_node.location = (-1600,-400)
  1025.             mus4_node.musgrave_type= 'MULTIFRACTAL'
  1026.             mus4_node.inputs[2].default_value = self.m_micro_scale
  1027.             mus4_node.inputs[3].default_value = 16
  1028.             mus4_node.inputs[4].default_value = 0.900
  1029.             mus4_node.inputs[5].default_value = 1.400
  1030.             mus5_node = material_cosmic4.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1031.             mus5_node.location = (-1400,-400)
  1032.             mus5_node.musgrave_type= 'HETERO_TERRAIN'
  1033.             mus5_node.inputs[2].default_value = 19.00
  1034.             mus5_node.inputs[3].default_value = 16
  1035.             mus5_node.inputs[4].default_value = 2.000
  1036.             mus5_node.inputs[5].default_value = 1.4
  1037.             cr2_node = material_cosmic4.node_tree.nodes.new('ShaderNodeValToRGB')
  1038.             cr2_node.location = (-1200, -400)
  1039.             cr2_node.color_ramp.elements[1].position= 0.057
  1040.             cr2_node.color_ramp.elements[1].color= (0.421482, 0.421482, 0.421482, 1)
  1041.             screen_node = material_cosmic4.node_tree.nodes.new('ShaderNodeMixRGB')
  1042.             screen_node.location = (-1000, -400)
  1043.             screen_node.blend_type = 'SCREEN'            
  1044.             screen_node.inputs[2].default_value = (0.391528, 0.391528, 0.391528, 1)
  1045.             screen_node.use_clamp = True
  1046.             multiply_node = material_cosmic4.node_tree.nodes.new('ShaderNodeMixRGB')
  1047.             multiply_node.location = (-800, -0)
  1048.             multiply_node.blend_type = 'MULTIPLY'
  1049.             multiply_node.inputs[2].default_value = (0,0,0,1)
  1050.             multiply_node.use_clamp = True
  1051.             grad1_node = material_cosmic4.node_tree.nodes.new('ShaderNodeTexGradient')
  1052.             grad1_node.location= (-600, 200)
  1053.             sv = self.m_shadow_vis
  1054.             cr3_node = material_cosmic4.node_tree.nodes.new('ShaderNodeValToRGB')
  1055.             cr3_node.location = (-400, 200)
  1056.             cr3_node.color_ramp.elements[1].position= self.m_shadow_coverage
  1057.             cr3_node.color_ramp.elements[1].color= (sv, sv, sv, 1)
  1058.             dark_node = material_cosmic4.node_tree.nodes.new('ShaderNodeMixRGB')
  1059.             dark_node.location = (-200, 0)
  1060.             dark_node.blend_type = 'MULTIPLY'
  1061.             dark_node.inputs[2].default_value = (0,0,0,1)
  1062.             dark_node.use_clamp = True
  1063.             if self.m_shadow_bool == False:
  1064.                 dark_node.mute= True
  1065.             emiss1_node = material_cosmic4.node_tree.nodes.new('ShaderNodeEmission')
  1066.             emiss1_node.location = (0, 200)
  1067.             emiss1_node.inputs[1].default_value = 3
  1068.             emiss2_node = material_cosmic4.node_tree.nodes.new('ShaderNodeEmission')
  1069.             emiss2_node.location = (0, -200)
  1070.             emiss2_node.inputs[0].default_value = self.m_atmos_col
  1071.             emiss2_node.inputs[1].default_value = self.m_atmos_glow
  1072.             lweight_node = material_cosmic4.node_tree.nodes.new('ShaderNodeLayerWeight')
  1073.             lweight_node.location = (400, 400)
  1074.             lweight_node.inputs[0].default_value = 0.570
  1075.             cr4_node = material_cosmic4.node_tree.nodes.new('ShaderNodeValToRGB')
  1076.             cr4_node.location = (600, 400)
  1077.             cr4_node.color_ramp.elements[0].position= 0.158
  1078.             cr4_node.color_ramp.elements[1].position= 0.416
  1079.             mixs_node = material_cosmic4.node_tree.nodes.new('ShaderNodeMixShader')
  1080.             mixs_node.location = (800, 0)
  1081.             if self.m_atmos == False:
  1082.                 mixs_node.mute= True
  1083.             link = material_cosmic4.node_tree.links.new
  1084.             link(mus1_node.outputs[0], mus2_node.inputs[0])
  1085.             link(mus2_node.outputs[0], mus3_node.inputs[0])
  1086.             link(mus4_node.outputs[0], mus5_node.inputs[0])
  1087.             link(mus3_node.outputs[0], cr1_node.inputs[0])
  1088.             link(mus5_node.outputs[0], cr2_node.inputs[0])
  1089.             link(cr1_node.outputs[0], multiply_node.inputs[0])
  1090.             link(cr2_node.outputs[0], screen_node.inputs[1])
  1091.             link(screen_node.outputs[0], multiply_node.inputs[1])
  1092.             link(grad1_node.outputs[0], cr3_node.inputs[0])
  1093.             link(cr3_node.outputs[0], dark_node.inputs[0])
  1094.             link(multiply_node.outputs[0], dark_node.inputs[1])
  1095.             link(dark_node.outputs[0], emiss1_node.inputs[0])
  1096.             link(emiss1_node.outputs[0], mixs_node.inputs[1])
  1097.             link(emiss2_node.outputs[0], mixs_node.inputs[2])
  1098.             link(cr4_node.outputs[0], mixs_node.inputs[0])
  1099.             link(lweight_node.outputs[0], cr4_node.inputs[0])
  1100.             link(mixs_node.outputs[0], material_output.inputs[0])
  1101.             bpy.context.object.active_material = material_cosmic4
  1102.             bpy.context.object.active_material.metallic = 0.3
  1103.            
  1104.         if mytool.planet_type == 'OP5':
  1105.             material_cosmic5 = bpy.data.materials.new(name= "Rocky Planet")
  1106.             material_cosmic5.use_nodes = True
  1107.             bsdf_node = material_cosmic5.node_tree.nodes.get('Principled BSDF')
  1108.             bsdf_node.location = (400, 0)
  1109.             material_output = material_cosmic5.node_tree.nodes.get('Material Output')
  1110.             material_output.location = (1000, 0)
  1111.             mus_node = material_cosmic5.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1112.             mus_node.location = (-1400, 0)
  1113.             mus_node.musgrave_type = 'RIDGED_MULTIFRACTAL'
  1114.             mus_node.inputs[2].default_value = self.r_scale
  1115.             mus_node.inputs[3].default_value = 20
  1116.             mus_node.inputs[4].default_value = self.r_soften
  1117.             mus_node.inputs[5].default_value = 2.830
  1118.             mus_node.inputs[6].default_value = 0
  1119.             mus_node.inputs[7].default_value = 12.870
  1120.             cr1_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1121.             cr1_node.location = (-1200, 200)
  1122.             cr1_node.color_ramp.elements[1].position= 0.005
  1123.             lh = self.r_land_height
  1124.             cr2_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1125.             cr2_node.location = (-1200, -200)
  1126.             cr2_node.color_ramp.elements[0].color= (0.071, 0.071, 0.071, 1)
  1127.             cr2_node.color_ramp.elements.new(position= 0.337)
  1128.             cr2_node.color_ramp.elements[1].color = (lh, lh, lh, 1)
  1129.             cr2_node.color_ramp.elements[1].position = 0.856
  1130.             cr2_node.color_ramp.elements[2].color = (0.4, 0.4, 0.4, 1)
  1131.             math1_node = material_cosmic5.node_tree.nodes.new('ShaderNodeMath')
  1132.             math1_node.location= (-1000, 0)
  1133.             math1_node.operation= 'MULTIPLY'
  1134.             math1_node.use_clamp= True
  1135.             cr3_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1136.             cr3_node.location = (-800, 200)
  1137.             cr3_node.color_ramp.elements[1].color= (0.059, 0.059, 0.059, 1)
  1138.             multiply1_node = material_cosmic5.node_tree.nodes.new('ShaderNodeMixRGB')
  1139.             multiply1_node.location = (-600, -200)
  1140.             multiply1_node.blend_type= 'MULTIPLY'
  1141.             multiply1_node.inputs[0].default_value= 0.860
  1142.             multiply1_node.inputs[2].default_value= (0.5691, 0.150605, 0, 1)
  1143.             c1 = self.r_land_col1
  1144.             c2 = self.r_land_col2
  1145.             c3 = self.r_land_col3
  1146.             c4 = self.r_land_col4
  1147.             cr4_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1148.             cr4_node.location = (-600, -400)
  1149.             cr4_node.color_ramp.elements.new(position= 0.082)
  1150.             cr4_node.color_ramp.elements.new(position= 0.209)
  1151.             cr4_node.color_ramp.elements.new(position= 0.647)
  1152.             cr4_node.color_ramp.elements[1].color = c1
  1153.             cr4_node.color_ramp.elements[2].color = c2
  1154.             cr4_node.color_ramp.elements[3].color = c3
  1155.             cr4_node.color_ramp.elements[4].color = c4
  1156.             cr4_node.color_ramp.elements[3].position= 0.476
  1157.             cr4_node.color_ramp.elements[4].position= 0.647
  1158.             bump_node = material_cosmic5.node_tree.nodes.new('ShaderNodeBump')
  1159.             bump_node.location = (-600, -600)
  1160.             bump_node.inputs[1].default_value= 0.050
  1161.             mix1_node = material_cosmic5.node_tree.nodes.new('ShaderNodeMixRGB')
  1162.             mix1_node.location = (-400, -300)
  1163.             mix1_node.inputs[0].default_value= 0.440
  1164.             bw1_node = material_cosmic5.node_tree.nodes.new('ShaderNodeRGBToBW')
  1165.             bw1_node.location = (-200, -300)
  1166.             cr5_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1167.             cr5_node.location = (0, -300)
  1168.             cr5_node.color_ramp.elements[1].position = 0.019
  1169.             mix2_node = material_cosmic5.node_tree.nodes.new('ShaderNodeMixRGB')
  1170.             mix2_node.location = (200, -100)
  1171.             mix2_node.inputs[1].default_value= self.r_water_col
  1172.             cr6_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1173.             cr6_node.location = (200, -500)
  1174.             cr6_node.color_ramp.elements[0].color = (0.345, 0.345, 0.345, 1)
  1175.             lw_node = material_cosmic5.node_tree.nodes.new('ShaderNodeLayerWeight')
  1176.             lw_node.location = (600, 200)
  1177.             lw_node.inputs[0].default_value = 0.160
  1178.             cr7_node = material_cosmic5.node_tree.nodes.new('ShaderNodeValToRGB')
  1179.             cr7_node.location = (600, 400)
  1180.             cr7_node.color_ramp.elements[0].position = 0.005
  1181.             emiss1_node = material_cosmic5.node_tree.nodes.new('ShaderNodeEmission')
  1182.             emiss1_node.location = (600, -200)
  1183.             emiss1_node.inputs[0].default_value= self.r_atmos_col
  1184.             emiss1_node.inputs[1].default_value= self.r_atmos_glow
  1185.             mixs_node = material_cosmic5.node_tree.nodes.new('ShaderNodeMixShader')
  1186.             mixs_node.location = (800, 0)
  1187.             if self.r_atmos == False:
  1188.                 mixs_node.mute= True
  1189.             link = material_cosmic5.node_tree.links.new
  1190.             link(mus_node.outputs[0], cr1_node.inputs[0])
  1191.             link(mus_node.outputs[0], cr2_node.inputs[0])
  1192.             link(mus_node.outputs[0], cr4_node.inputs[0])
  1193.             link(mus_node.outputs[0], bump_node.inputs[2])
  1194.             link(cr1_node.outputs[0], math1_node.inputs[0])
  1195.             link(cr2_node.outputs[0], math1_node.inputs[1])
  1196.             link(math1_node.outputs[0], cr3_node.inputs[0])
  1197.             link(math1_node.outputs[0], multiply1_node.inputs[1])
  1198.             link(multiply1_node.outputs[0], mix1_node.inputs[1])
  1199.             link(cr4_node.outputs[0], mix1_node.inputs[2])
  1200.             link(mix1_node.outputs[0], bw1_node.inputs[0])
  1201.             link(bw1_node.outputs[0], cr5_node.inputs[0])
  1202.             link(cr5_node.outputs[0], mix2_node.inputs[0])
  1203.             link(cr5_node.outputs[0], cr6_node.inputs[0])
  1204.             link(mix1_node.outputs[0], mix2_node.inputs[2])
  1205.             link(mix2_node.outputs[0], bsdf_node.inputs[0])
  1206.             link(cr6_node.outputs[0], bsdf_node.inputs[7])
  1207.             link(bump_node.outputs[0], bsdf_node.inputs[19])
  1208.             link(lw_node.outputs[0], cr7_node.inputs[0])
  1209.             link(cr7_node.outputs[0], mixs_node.inputs[0])
  1210.             link(emiss1_node.outputs[0], mixs_node.inputs[2])
  1211.             link(bsdf_node.outputs[0], mixs_node.inputs[1])
  1212.             link(cr3_node.outputs[0], material_output.inputs[2])
  1213.             link(mixs_node.outputs[0], material_output.inputs[0])
  1214.             bpy.context.object.active_material = material_cosmic5
  1215.             bpy.context.object.active_material.diffuse_color = (0.8, 0.225265, 0.0318058, 1)
  1216.             bpy.context.object.active_material.metallic = 0.3
  1217.            
  1218.         if mytool.planet_type == 'OP6':
  1219.             material_cosmic6 = bpy.data.materials.new(name= "Star Sphere")
  1220.             material_cosmic6.use_nodes = True
  1221.             material_cosmic6.node_tree.nodes.remove(material_cosmic6.node_tree.nodes.get('Principled BSDF'))
  1222.             material_output = material_cosmic6.node_tree.nodes.get('Material Output')
  1223.             material_output.location = (0,0)
  1224.             emiss_node = material_cosmic6.node_tree.nodes.new('ShaderNodeEmission')
  1225.             emiss_node.location = (-200,0)
  1226.             emiss_node.inputs[0].default_value = (1, 0, 0, 1)
  1227.             cr_node = material_cosmic6.node_tree.nodes.new('ShaderNodeValToRGB')
  1228.             cr_node.location = (-400,0)
  1229.             cr_node.color_ramp.elements[0].position = 0.624
  1230.             cr_node.color_ramp.elements[1].position = self.star_coverage
  1231.             noise_node = material_cosmic6.node_tree.nodes.new('ShaderNodeTexNoise')
  1232.             noise_node.location = (-600, 0)
  1233.             noise_node.inputs[2].default_value = self.star_scale
  1234.             noise_node.inputs[3].default_value = 16
  1235.             noise_node.inputs[4].default_value = 0.740
  1236.             noise_node.inputs[5].default_value = 0
  1237.             link = material_cosmic6.node_tree.links.new
  1238.             link(cr_node.outputs[0], emiss_node.inputs[0])
  1239.             link(noise_node.outputs[0], cr_node.inputs[0])
  1240.             link(emiss_node.outputs[0], material_output.inputs[0])
  1241.             bpy.context.object.active_material = material_cosmic6
  1242.             bpy.context.object.active_material.diffuse_color = (0, 0, 0, 1)
  1243.             bpy.context.object.active_material.metallic = 0.3
  1244.            
  1245.         if mytool.planet_type == 'OP7':
  1246.             material_cosmic7 = bpy.data.materials.new(name= "Golden World")
  1247.             material_cosmic7.use_nodes = True
  1248.             bsdf_node = material_cosmic7.node_tree.nodes.get('Principled BSDF')
  1249.             bsdf_node.location = (400, 0)
  1250.             material_output = material_cosmic7.node_tree.nodes.get('Material Output')
  1251.             material_output.location = (1000, 0)
  1252.             mus_node = material_cosmic7.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1253.             mus_node.location = (-1400, 0)
  1254.             mus_node.musgrave_type = 'RIDGED_MULTIFRACTAL'
  1255.             mus_node.inputs[2].default_value = self.g_scale
  1256.             mus_node.inputs[3].default_value = 20
  1257.             mus_node.inputs[4].default_value = self.g_soften
  1258.             mus_node.inputs[5].default_value = 2.310
  1259.             mus_node.inputs[6].default_value = -0.070
  1260.             mus_node.inputs[7].default_value = 10.010
  1261.             cr1_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1262.             cr1_node.location = (-1200, 200)
  1263.             cr1_node.color_ramp.elements[1].position= 0.005
  1264.             lh = self.g_land_height
  1265.             cr2_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1266.             cr2_node.location = (-1200, -200)
  1267.             cr2_node.color_ramp.elements[0].color= (0.071, 0.071, 0.071, 1)
  1268.             cr2_node.color_ramp.elements.new(position= 0.337)
  1269.             cr2_node.color_ramp.elements[1].color = (lh, lh, lh, 1)
  1270.             cr2_node.color_ramp.elements[2].color = (0.318, 0.318, 0.318, 1)
  1271.             math1_node = material_cosmic7.node_tree.nodes.new('ShaderNodeMath')
  1272.             math1_node.location= (-1000, 0)
  1273.             math1_node.operation= 'MULTIPLY'
  1274.             math1_node.use_clamp= True
  1275.             cr3_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1276.             cr3_node.location = (-800, 200)
  1277.             cr3_node.color_ramp.elements[1].color= (0.059, 0.059, 0.059, 1)
  1278.             multiply1_node = material_cosmic7.node_tree.nodes.new('ShaderNodeMixRGB')
  1279.             multiply1_node.location = (-600, -200)
  1280.             multiply1_node.blend_type= 'MULTIPLY'
  1281.             multiply1_node.inputs[0].default_value= 1
  1282.             multiply1_node.inputs[2].default_value= (0.00856812, 0.0684782, 0.127438, 1)
  1283.             c1 = self.g_land_col1
  1284.             c2 = self.g_land_col2
  1285.             c3 = self.g_land_col3
  1286.             c4 = self.g_land_col4
  1287.             cr4_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1288.             cr4_node.location = (-600, -400)
  1289.             cr4_node.color_ramp.elements.new(position= 0.041)
  1290.             cr4_node.color_ramp.elements.new(position= 0.098)
  1291.             cr4_node.color_ramp.elements.new(position= 0.275)
  1292.             cr4_node.color_ramp.elements[1].color = c1
  1293.             cr4_node.color_ramp.elements[2].color = c2
  1294.             cr4_node.color_ramp.elements[3].color = c3
  1295.             cr4_node.color_ramp.elements[3].position= 0.201
  1296.             cr4_node.color_ramp.elements[4].color = c4
  1297.             cr4_node.color_ramp.elements[4].position = 0.275
  1298.             math2_node = material_cosmic7.node_tree.nodes.new('ShaderNodeMath')
  1299.             math2_node.location= (-800, -400)
  1300.             math2_node.operation= 'MULTIPLY'
  1301.             math2_node.use_clamp= True
  1302.             noise_node = material_cosmic7.node_tree.nodes.new('ShaderNodeTexNoise')
  1303.             noise_node.location = (-1000, -600)
  1304.             noise_node.inputs[2].default_value = 19
  1305.             noise_node.inputs[3].default_value = 2
  1306.             noise_node.inputs[4].default_value = 0.5
  1307.             noise_node.inputs[5].default_value = 2.2
  1308.             bump_node = material_cosmic7.node_tree.nodes.new('ShaderNodeBump')
  1309.             bump_node.location = (-600, -600)
  1310.             bump_node.inputs[1].default_value= 0.050
  1311.             mix1_node = material_cosmic7.node_tree.nodes.new('ShaderNodeMixRGB')
  1312.             mix1_node.location = (-400, -300)
  1313.             mix1_node.inputs[0].default_value= 0.640
  1314.             bw1_node = material_cosmic7.node_tree.nodes.new('ShaderNodeRGBToBW')
  1315.             bw1_node.location = (-200, -300)
  1316.             cr5_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1317.             cr5_node.location = (0, -300)
  1318.             cr5_node.color_ramp.elements[0].position = 0.079
  1319.             cr5_node.color_ramp.elements[1].position = 0.160
  1320.             mix2_node = material_cosmic7.node_tree.nodes.new('ShaderNodeMixRGB')
  1321.             mix2_node.location = (200, -100)
  1322.             mix2_node.inputs[1].default_value= self.g_water_col
  1323.             cr6_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1324.             cr6_node.location = (200, -500)
  1325.             cr6_node.color_ramp.elements[0].color = (0.345, 0.345, 0.345, 1)
  1326.             lw_node = material_cosmic7.node_tree.nodes.new('ShaderNodeLayerWeight')
  1327.             lw_node.location = (600, 200)
  1328.             lw_node.inputs[0].default_value = 0.160
  1329.             cr7_node = material_cosmic7.node_tree.nodes.new('ShaderNodeValToRGB')
  1330.             cr7_node.location = (600, 400)
  1331.             cr7_node.color_ramp.elements[0].position = 0.005
  1332.             emiss1_node = material_cosmic7.node_tree.nodes.new('ShaderNodeEmission')
  1333.             emiss1_node.location = (600, -200)
  1334.             emiss1_node.inputs[0].default_value= self.g_atmos_col
  1335.             emiss1_node.inputs[1].default_value= self.g_atmos_glow
  1336.             mixs_node = material_cosmic7.node_tree.nodes.new('ShaderNodeMixShader')
  1337.             mixs_node.location = (800, 0)
  1338.             if self.g_atmos == False:
  1339.                 mixs_node.mute= True
  1340.             link = material_cosmic7.node_tree.links.new
  1341.             link(mus_node.outputs[0], cr1_node.inputs[0])
  1342.             link(mus_node.outputs[0], cr2_node.inputs[0])
  1343.             link(mus_node.outputs[0], math2_node.inputs[0])
  1344.             link(math2_node.outputs[0], cr4_node.inputs[0])
  1345.             link(noise_node.outputs[0], math2_node.inputs[1])
  1346.             link(mus_node.outputs[0], bump_node.inputs[2])
  1347.             link(cr1_node.outputs[0], math1_node.inputs[0])
  1348.             link(cr2_node.outputs[0], math1_node.inputs[1])
  1349.             link(math1_node.outputs[0], cr3_node.inputs[0])
  1350.             link(math1_node.outputs[0], multiply1_node.inputs[1])
  1351.             link(multiply1_node.outputs[0], mix1_node.inputs[1])
  1352.             link(cr4_node.outputs[0], mix1_node.inputs[2])
  1353.             link(mix1_node.outputs[0], bw1_node.inputs[0])
  1354.             link(bw1_node.outputs[0], cr5_node.inputs[0])
  1355.             link(cr5_node.outputs[0], mix2_node.inputs[0])
  1356.             link(cr5_node.outputs[0], cr6_node.inputs[0])
  1357.             link(mix1_node.outputs[0], mix2_node.inputs[2])
  1358.             link(mix2_node.outputs[0], bsdf_node.inputs[0])
  1359.             link(cr6_node.outputs[0], bsdf_node.inputs[7])
  1360.             link(bump_node.outputs[0], bsdf_node.inputs[19])
  1361.             link(lw_node.outputs[0], cr7_node.inputs[0])
  1362.             link(cr7_node.outputs[0], mixs_node.inputs[0])
  1363.             link(emiss1_node.outputs[0], mixs_node.inputs[2])
  1364.             link(bsdf_node.outputs[0], mixs_node.inputs[1])
  1365.             link(cr3_node.outputs[0], material_output.inputs[2])
  1366.             link(mixs_node.outputs[0], material_output.inputs[0])
  1367.             bpy.context.object.active_material = material_cosmic7
  1368.             bpy.context.object.active_material.diffuse_color = (0.8, 0.517521, 0.0242545, 1)
  1369.             bpy.context.object.active_material.metallic = 0.3
  1370.            
  1371.         if mytool.planet_type == 'OP8':
  1372.             material_cosmic8 = bpy.data.materials.new(name= "Icy World")
  1373.             material_cosmic8.use_nodes = True
  1374.             bsdf_node = material_cosmic8.node_tree.nodes.get('Principled BSDF')
  1375.             bsdf_node.location = (400, 0)
  1376.             material_output = material_cosmic8.node_tree.nodes.get('Material Output')
  1377.             material_output.location = (1000, 0)
  1378.             mus_node = material_cosmic8.node_tree.nodes.new('ShaderNodeTexMusgrave')
  1379.             mus_node.location = (-1400, 0)
  1380.             mus_node.musgrave_type = 'RIDGED_MULTIFRACTAL'
  1381.             mus_node.inputs[2].default_value = self.i_scale
  1382.             mus_node.inputs[3].default_value = 90
  1383.             mus_node.inputs[4].default_value = self.i_soften
  1384.             mus_node.inputs[5].default_value = 2.910
  1385.             mus_node.inputs[6].default_value = -0.120
  1386.             mus_node.inputs[7].default_value = 10.010
  1387.             cr1_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1388.             cr1_node.location = (-1200, 200)
  1389.             cr1_node.color_ramp.elements[1].position= 0.005
  1390.             lh = self.i_land_height
  1391.             cr2_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1392.             cr2_node.location = (-1200, -200)
  1393.             cr2_node.color_ramp.elements[0].color= (0.071, 0.071, 0.071, 1)
  1394.             cr2_node.color_ramp.elements.new(position= 0.337)
  1395.             cr2_node.color_ramp.elements[1].color = (lh, lh, lh, 1)
  1396.             cr2_node.color_ramp.elements[2].color = (0.306, 0.306, 0.306, 1)
  1397.             math1_node = material_cosmic8.node_tree.nodes.new('ShaderNodeMath')
  1398.             math1_node.location= (-1000, 0)
  1399.             math1_node.operation= 'MULTIPLY'
  1400.             math1_node.use_clamp= True
  1401.             cr3_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1402.             cr3_node.location = (-800, 200)
  1403.             cr3_node.color_ramp.elements[1].color= (0.059, 0.059, 0.059, 1)
  1404.             multiply1_node = material_cosmic8.node_tree.nodes.new('ShaderNodeMixRGB')
  1405.             multiply1_node.location = (-600, -200)
  1406.             multiply1_node.blend_type= 'MULTIPLY'
  1407.             multiply1_node.inputs[0].default_value= 1
  1408.             multiply1_node.inputs[2].default_value= (0.144129, 0.0231533, 0.00182117, 1)
  1409.             c1 = self.i_land_col1
  1410.             c2 = self.i_land_col2
  1411.             c3 = self.i_land_col3
  1412.             c4 = self.i_land_col4
  1413.             cr4_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1414.             cr4_node.location = (-600, -400)
  1415.             cr4_node.color_ramp.elements.new(position= 0.041)
  1416.             cr4_node.color_ramp.elements.new(position= 0.098)
  1417.             cr4_node.color_ramp.elements.new(position= 0.275)
  1418.             cr4_node.color_ramp.elements[1].color = c1
  1419.             cr4_node.color_ramp.elements[2].color = c2
  1420.             cr4_node.color_ramp.elements[3].color = c3
  1421.             cr4_node.color_ramp.elements[3].position= 0.201
  1422.             cr4_node.color_ramp.elements[4].color = c4
  1423.             cr4_node.color_ramp.elements[4].position = 0.275
  1424.             math2_node = material_cosmic8.node_tree.nodes.new('ShaderNodeMath')
  1425.             math2_node.location= (-800, -400)
  1426.             math2_node.operation= 'MULTIPLY'
  1427.             math2_node.use_clamp= True
  1428.             noise_node = material_cosmic8.node_tree.nodes.new('ShaderNodeTexNoise')
  1429.             noise_node.location = (-1000, -600)
  1430.             noise_node.inputs[2].default_value = 19
  1431.             noise_node.inputs[3].default_value = 2
  1432.             noise_node.inputs[4].default_value = 0.5
  1433.             noise_node.inputs[5].default_value = 2.2
  1434.             bump_node = material_cosmic8.node_tree.nodes.new('ShaderNodeBump')
  1435.             bump_node.location = (-600, -600)
  1436.             bump_node.inputs[1].default_value= 0.050
  1437.             mix1_node = material_cosmic8.node_tree.nodes.new('ShaderNodeMixRGB')
  1438.             mix1_node.location = (-400, -300)
  1439.             mix1_node.inputs[0].default_value= 0.640
  1440.             bw1_node = material_cosmic8.node_tree.nodes.new('ShaderNodeRGBToBW')
  1441.             bw1_node.location = (-200, -300)
  1442.             cr5_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1443.             cr5_node.location = (0, -300)
  1444.             cr5_node.color_ramp.elements[0].position = 0.079
  1445.             cr5_node.color_ramp.elements[1].position = 0.160
  1446.             mix2_node = material_cosmic8.node_tree.nodes.new('ShaderNodeMixRGB')
  1447.             mix2_node.location = (200, -100)
  1448.             mix2_node.inputs[1].default_value= self.i_water_col
  1449.             cr6_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1450.             cr6_node.location = (200, -500)
  1451.             cr6_node.color_ramp.elements[0].color = (0.345, 0.345, 0.345, 1)
  1452.             lw_node = material_cosmic8.node_tree.nodes.new('ShaderNodeLayerWeight')
  1453.             lw_node.location = (600, 200)
  1454.             lw_node.inputs[0].default_value = 0.160
  1455.             cr7_node = material_cosmic8.node_tree.nodes.new('ShaderNodeValToRGB')
  1456.             cr7_node.location = (600, 400)
  1457.             cr7_node.color_ramp.elements[0].position = 0.005
  1458.             emiss1_node = material_cosmic8.node_tree.nodes.new('ShaderNodeEmission')
  1459.             emiss1_node.location = (600, -200)
  1460.             emiss1_node.inputs[0].default_value= self.i_atmos_col
  1461.             emiss1_node.inputs[1].default_value= self.i_atmos_glow
  1462.             mixs_node = material_cosmic8.node_tree.nodes.new('ShaderNodeMixShader')
  1463.             mixs_node.location = (800, 0)
  1464.             if self.i_atmos == False:
  1465.                 mixs_node.mute= True
  1466.             link = material_cosmic8.node_tree.links.new
  1467.             link(mus_node.outputs[0], cr1_node.inputs[0])
  1468.             link(mus_node.outputs[0], cr2_node.inputs[0])
  1469.             link(mus_node.outputs[0], math2_node.inputs[0])
  1470.             link(math2_node.outputs[0], cr4_node.inputs[0])
  1471.             link(noise_node.outputs[0], math2_node.inputs[1])
  1472.             link(mus_node.outputs[0], bump_node.inputs[2])
  1473.             link(cr1_node.outputs[0], math1_node.inputs[0])
  1474.             link(cr2_node.outputs[0], math1_node.inputs[1])
  1475.             link(math1_node.outputs[0], cr3_node.inputs[0])
  1476.             link(math1_node.outputs[0], multiply1_node.inputs[1])
  1477.             link(multiply1_node.outputs[0], mix1_node.inputs[1])
  1478.             link(cr4_node.outputs[0], mix1_node.inputs[2])
  1479.             link(mix1_node.outputs[0], bw1_node.inputs[0])
  1480.             link(bw1_node.outputs[0], cr5_node.inputs[0])
  1481.             link(cr5_node.outputs[0], mix2_node.inputs[0])
  1482.             link(cr5_node.outputs[0], cr6_node.inputs[0])
  1483.             link(mix1_node.outputs[0], mix2_node.inputs[2])
  1484.             link(mix2_node.outputs[0], bsdf_node.inputs[0])
  1485.             link(cr6_node.outputs[0], bsdf_node.inputs[7])
  1486.             link(bump_node.outputs[0], bsdf_node.inputs[19])
  1487.             link(lw_node.outputs[0], cr7_node.inputs[0])
  1488.             link(cr7_node.outputs[0], mixs_node.inputs[0])
  1489.             link(emiss1_node.outputs[0], mixs_node.inputs[2])
  1490.             link(bsdf_node.outputs[0], mixs_node.inputs[1])
  1491.             link(cr3_node.outputs[0], material_output.inputs[2])
  1492.             link(mixs_node.outputs[0], material_output.inputs[0])
  1493.             bpy.context.object.active_material = material_cosmic8
  1494.             bpy.context.object.active_material.diffuse_color = (0.100548, 0.562905, 0.8, 1)
  1495.             bpy.context.object.active_material.metallic = 0.3
  1496.            
  1497.         return {'FINISHED'}
  1498.    
  1499.     def invoke(self, context, event):
  1500.         return context.window_manager.invoke_props_dialog(self, width= 210)
  1501.  
  1502. class SHADER_OT_DIAMOND(Operator):
  1503.     """Open the Diamond Dialog box"""
  1504.     bl_label = "             Diamond Operator"
  1505.     bl_idname = "wm.diamondop"
  1506.     bl_options = {'REGISTER', 'UNDO'}
  1507.    
  1508.     col : FloatVectorProperty(name='Color Tint',subtype='COLOR_GAMMA',size=4,default=(1,1,1,1), min= 0, max= 1)
  1509.    
  1510.     def execute(self, context):
  1511.         c = self.col
  1512.         material_diamond = bpy.data.materials.new(name= "Diamond")
  1513.         material_diamond.use_nodes = True
  1514.         material_diamond.node_tree.nodes.remove(material_diamond.node_tree.nodes.get('Principled BSDF'))
  1515.         material_output = material_diamond.node_tree.nodes.get('Material Output')
  1516.         material_output.location = (400,0)
  1517.         glass1_node = material_diamond.node_tree.nodes.new('ShaderNodeBsdfGlass')
  1518.         glass1_node.location = (-600,0)
  1519.         glass1_node.inputs[0].default_value = (1, 0, 0, 1)
  1520.         glass1_node.inputs[2].default_value = 1.446
  1521.         glass2_node = material_diamond.node_tree.nodes.new('ShaderNodeBsdfGlass')
  1522.         glass2_node.location = (-600,-150)
  1523.         glass2_node.inputs[0].default_value = (0, 1, 0, 1)
  1524.         glass2_node.inputs[2].default_value = 1.450
  1525.         glass3_node = material_diamond.node_tree.nodes.new('ShaderNodeBsdfGlass')
  1526.         glass3_node.location = (-600,-300)
  1527.         glass3_node.inputs[0].default_value = (0, 0, 1, 1)
  1528.         glass3_node.inputs[2].default_value = 1.545        
  1529.         add1_node = material_diamond.node_tree.nodes.new('ShaderNodeAddShader')
  1530.         add1_node.location = (-400,-50)
  1531.         add1_node.label = "Add 1"
  1532.         add1_node.hide = True
  1533.         add1_node.select = False      
  1534.         add2_node = material_diamond.node_tree.nodes.new('ShaderNodeAddShader')
  1535.         add2_node.location = (-100,0)
  1536.         add2_node.label = "Add 2"
  1537.         add2_node.hide = True
  1538.         add2_node.select = False      
  1539.         glass4_node = material_diamond.node_tree.nodes.new('ShaderNodeBsdfGlass')
  1540.         glass4_node.location = (-150,-150)
  1541.         glass4_node.inputs[2].default_value = 1.450
  1542.         glass4_node.select = False      
  1543.         mix1_node = material_diamond.node_tree.nodes.new('ShaderNodeMixShader')
  1544.         mix1_node.location = (200,0)
  1545.         mix1_node.select = False
  1546.         material_diamond.node_tree.links.new(glass1_node.outputs[0], add1_node.inputs[0])
  1547.         material_diamond.node_tree.links.new(glass2_node.outputs[0], add1_node.inputs[1])
  1548.         material_diamond.node_tree.links.new(add1_node.outputs[0], add2_node.inputs[0])
  1549.         material_diamond.node_tree.links.new(glass3_node.outputs[0], add2_node.inputs[1])
  1550.         material_diamond.node_tree.links.new(add2_node.outputs[0], mix1_node.inputs[1])
  1551.         material_diamond.node_tree.links.new(glass4_node.outputs[0], mix1_node.inputs[2])
  1552.         material_diamond.node_tree.links.new(mix1_node.outputs[0], material_output.inputs[0])
  1553.         bpy.context.object.active_material = material_diamond
  1554.         bpy.context.object.active_material.diffuse_color = c
  1555.         bpy.context.object.active_material.metallic = 0.3
  1556.         if context.scene.render.engine == 'BLENDER_EEVEE':
  1557.             context.object.active_material.blend_method = 'HASHED'
  1558.         return {'FINISHED'}
  1559.    
  1560.     def invoke(self, context, event):
  1561.         return context.window_manager.invoke_props_dialog(self, width= 210)
  1562.  
  1563.  
  1564. class SHADER_OT_GOLD(Operator):
  1565.     """Add the Basic Gold Shader to your selected Object."""
  1566.     bl_label = "Gold"
  1567.     bl_idname = 'shader.gold_operator'
  1568.     bl_options = {'REGISTER', 'UNDO'}
  1569.    
  1570.     roughness : FloatProperty(name='Roughness', default= 0.5, min= 0, max= 1)
  1571.     preset_bool : BoolProperty(name= "Set Roughness", default= False)
  1572.    
  1573.     def draw(self, context):
  1574.         layout= self.layout
  1575.         layout.separator(factor= 0.1)
  1576.         box = layout.box()
  1577.         box.prop(self, "preset_bool")
  1578.         if self.preset_bool == True:
  1579.             box.label(text= "0 - Glossy                              1 - Rough")
  1580.             box.prop(self, "roughness", slider= True)
  1581.         layout.separator(factor= 1)    
  1582.    
  1583.     def execute(self, context):
  1584.         r = self.roughness
  1585.         material_gold = bpy.data.materials.new(name= "Gold")
  1586.         material_gold.use_nodes = True
  1587.         material_output = material_gold.node_tree.nodes.get('Material Output')
  1588.         material_output.location = (600,0)
  1589.         material_output.select = False    
  1590.         rgb_node = material_gold.node_tree.nodes.new('ShaderNodeRGB')
  1591.         rgb_node.location = (0,-100)
  1592.         rgb_node.outputs[0].default_value = (1, 0.766, 0.336, 1)
  1593.         rgb_node.select = False
  1594.         rgb_node.hide = True
  1595.         principled = material_gold.node_tree.nodes.get('Principled BSDF')
  1596.         principled.location = (200,0)
  1597.         principled.select = False
  1598.         principled.inputs[4].default_value = 1
  1599.         principled.inputs[7].default_value = r
  1600.         material_gold.node_tree.links.new(rgb_node.outputs[0], principled.inputs[0])
  1601.         bpy.context.object.active_material = material_gold
  1602.         bpy.context.object.active_material.diffuse_color = (1, 0.766, 0.336, 1)
  1603.         bpy.context.object.active_material.metallic = 0.45082
  1604.         return {'FINISHED'}
  1605.    
  1606.     def invoke(self, context, event):
  1607.         return context.window_manager.invoke_props_dialog(self, width= 210)
  1608.  
  1609.  
  1610. class SHADER_OT_SILVER(Operator):
  1611.     """Add the Basic Silver Shader to your selected Object."""
  1612.     bl_label = "Silver"
  1613.     bl_idname = 'shader.silver_operator'
  1614.     bl_options = {'REGISTER', 'UNDO'}
  1615.    
  1616.     roughness : FloatProperty(name='Roughness', default= 0.5, min= 0, max= 1)
  1617.     preset_bool : BoolProperty(name= "Set Roughness", default= False)
  1618.    
  1619.     def draw(self, context):
  1620.         layout= self.layout
  1621.         layout.separator(factor= 0.1)
  1622.         box = layout.box()
  1623.         box.prop(self, "preset_bool")
  1624.         if self.preset_bool == True:
  1625.             box.label(text= "0 - Glossy                              1 - Rough")
  1626.             box.prop(self, "roughness", slider= True)
  1627.         layout.separator(factor= 1)    
  1628.    
  1629.     def execute(self, context):
  1630.         r = self.roughness
  1631.         material_silver = bpy.data.materials.new(name= "Silver")
  1632.         material_silver.use_nodes = True
  1633.         material_output = material_silver.node_tree.nodes.get('Material Output')
  1634.         material_output.location = (600,0)
  1635.         material_output.select = False      
  1636.         rgb_node = material_silver.node_tree.nodes.new('ShaderNodeRGB')
  1637.         rgb_node.location = (0,-100)
  1638.         rgb_node.outputs[0].default_value = (0.972, 0.960, 0.915, 1)
  1639.         rgb_node.select = False
  1640.         rgb_node.hide = True
  1641.         principled = material_silver.node_tree.nodes.get('Principled BSDF')
  1642.         principled.location = (200,0)
  1643.         principled.select = False
  1644.         principled.inputs[4].default_value = 1.0
  1645.         principled.inputs[7].default_value = r
  1646.         material_silver.node_tree.links.new(rgb_node.outputs[0], principled.inputs[0])
  1647.         bpy.context.object.active_material = material_silver
  1648.         bpy.context.object.active_material.diffuse_color = (0.972, 0.960, 0.915, 1)
  1649.         bpy.context.object.active_material.metallic = 0.45082
  1650.         return {'FINISHED'}
  1651.    
  1652.     def invoke(self, context, event):
  1653.         return context.window_manager.invoke_props_dialog(self, width= 210)
  1654.  
  1655.  
  1656. class SHADER_OT_COPPER(Operator):
  1657.     """Add the Basic Copper Shader to your selected Object."""
  1658.     bl_label = "Copper"
  1659.     bl_idname = 'shader.copper_operator'
  1660.     bl_options = {'REGISTER', 'UNDO'}
  1661.    
  1662.     roughness : FloatProperty(name='Roughness', default= 0.5, min= 0, max= 1)
  1663.     preset_bool : BoolProperty(name= "Set Roughness", default= False)
  1664.    
  1665.     def draw(self, context):
  1666.         layout= self.layout
  1667.         layout.separator(factor= 0.1)
  1668.         box = layout.box()
  1669.         box.prop(self, "preset_bool")
  1670.         if self.preset_bool == True:
  1671.             box.label(text= "0 - Glossy                              1 - Rough")
  1672.             box.prop(self, "roughness", slider= True)
  1673.         layout.separator(factor= 1)    
  1674.    
  1675.     def execute(self, context):
  1676.         r = self.roughness
  1677.         material_copper = bpy.data.materials.new(name= "Copper")
  1678.         material_copper.use_nodes = True
  1679.         material_output = material_copper.node_tree.nodes.get('Material Output')
  1680.         material_output.location = (600,0)
  1681.         material_output.select = False    
  1682.         rgb_node = material_copper.node_tree.nodes.new('ShaderNodeRGB')
  1683.         rgb_node.location = (0,-100)
  1684.         rgb_node.outputs[0].default_value = (0.955, 0.637, 0.538, 1)
  1685.         rgb_node.select = False
  1686.         rgb_node.hide = True
  1687.         principled = material_copper.node_tree.nodes.get('Principled BSDF')
  1688.         principled.location = (200,0)
  1689.         principled.select = False
  1690.         principled.inputs[4].default_value = 1.0
  1691.         principled.inputs[7].default_value = r
  1692.         material_copper.node_tree.links.new(rgb_node.outputs[0], principled.inputs[0])
  1693.         bpy.context.object.active_material = material_copper
  1694.         bpy.context.object.active_material.diffuse_color = (0.955, 0.637, 0.538, 1)
  1695.         bpy.context.object.active_material.metallic = 0.45082
  1696.         return {'FINISHED'}
  1697.    
  1698.     def invoke(self, context, event):
  1699.         return context.window_manager.invoke_props_dialog(self, width= 210)
  1700.  
  1701.  
  1702. class WM_OT_ghostOp(Operator):
  1703.     """Open the Ghost Dialog box"""
  1704.     bl_label = "                  Ghost Operator"
  1705.     bl_idname = "wm.ghostop"
  1706.     bl_options = {'REGISTER', 'UNDO'}
  1707.    
  1708.     col1 : FloatVectorProperty(name='Outer Color',subtype='COLOR_GAMMA',size=4,default=(0.224322, 0.812741, 1, 1), min= 0, max= 1)
  1709.     col2 : FloatVectorProperty(name='Inner Color',subtype='COLOR_GAMMA',size=4,default=(0.137478, 0.345533, 1, 1), min= 0, max= 1)
  1710.     trans : FloatProperty(min= 0, max= 1, default= 0.5, description= "Transparancy Value. At 0 the Shader will still have some transparancy but at 1 the Shader will fully Transparent")
  1711.     enable_bool : BoolProperty(default= False, description= "This Option will add a subtle effect to the shader. The Whole Object will be Visible through itself.")
  1712.    
  1713.     def draw(self, context):
  1714.         layout = self.layout
  1715.         layout.separator(factor=2)
  1716.         layout.prop(self, "col1")
  1717.         layout.prop(self, "col2")
  1718.         layout.prop(self, "trans", text= "Transparency:", slider= True)
  1719.         if context.scene.render.engine == 'CYCLES':
  1720.             layout.separator(factor=0.5)
  1721.             box = layout.box()
  1722.             box.prop(self, "enable_bool", text= "Variant")
  1723.             if self.enable_bool == True:
  1724.                 box.label(text= "This Option will add a subtle effect")
  1725.                 box.label(text= "to the shader. ")
  1726.                 box.label(text= "The Whole Object will be Visible.")
  1727.         layout.separator(factor=1)
  1728.    
  1729.     def execute(self, context):
  1730.         c1 = self.col1
  1731.         c2 = self.col2
  1732.         a = self.trans
  1733.         material_ghost = bpy.data.materials.new(name= "Ghost")
  1734.         material_ghost.use_nodes = True
  1735.         material_output = material_ghost.node_tree.nodes.get('Material Output')
  1736.         material_output.location = (1000,0)
  1737.         material_output.select = False
  1738.         material_ghost.node_tree.nodes.remove(material_ghost.node_tree.nodes.get('Principled BSDF'))      
  1739.         emiss_node = material_ghost.node_tree.nodes.new('ShaderNodeEmission')
  1740.         emiss_node.location = (-200,-90)
  1741.         emiss_node.inputs[0].default_value = c1
  1742.         emiss_node.inputs[1].default_value = 2
  1743.         emiss_node.select = False        
  1744.         trans_node = material_ghost.node_tree.nodes.new('ShaderNodeBsdfTransparent')
  1745.         trans_node.location = (-200,10)
  1746.         trans_node.inputs[0].default_value = c2
  1747.         trans_node.select = False      
  1748.         mix_node = material_ghost.node_tree.nodes.new('ShaderNodeMixShader')
  1749.         mix_node.location = (400,50)
  1750.         mix_node.select = False      
  1751.         layerw_node = material_ghost.node_tree.nodes.new('ShaderNodeLayerWeight')
  1752.         layerw_node.location = (0,150)
  1753.         layerw_node.inputs[0].default_value = 0.1
  1754.         layerw_node.select = False      
  1755.         math_node = material_ghost.node_tree.nodes.new('ShaderNodeMath')
  1756.         math_node.location = (200,100)
  1757.         math_node.inputs[0].default_value = 0.1
  1758.         math_node.select = False
  1759.         math_node.hide = True      
  1760.         mix2_node = material_ghost.node_tree.nodes.new('ShaderNodeMixShader')
  1761.         mix2_node.location = (800,50)
  1762.         mix2_node.select = False      
  1763.         trans2_node = material_ghost.node_tree.nodes.new('ShaderNodeBsdfTransparent')
  1764.         trans2_node.location = (500,-100)
  1765.         trans2_node.inputs[0].default_value = (1, 1, 1, 1)
  1766.         trans2_node.select = False      
  1767.         light_node = material_ghost.node_tree.nodes.new('ShaderNodeLightPath')
  1768.         light_node.location = (500,500)
  1769.         light_node.select = False
  1770.         colramp_node = material_ghost.node_tree.nodes.new('ShaderNodeValToRGB')
  1771.         colramp_node.location = (700, 200)
  1772.         colramp_node.select = False
  1773.         colramp_node.color_ramp.elements[0].color = (a, a, a, 1)
  1774.         if self.enable_bool == True:
  1775.             colramp_node.color_ramp.elements[1].color = (0.85, 0.85, 0.85, 1)
  1776.         material_ghost.node_tree.links.new(trans_node.outputs[0], mix_node.inputs[1])
  1777.         material_ghost.node_tree.links.new(emiss_node.outputs[0], mix_node.inputs[2])
  1778.         material_ghost.node_tree.links.new(layerw_node.outputs[0], math_node.inputs[0])
  1779.         material_ghost.node_tree.links.new(layerw_node.outputs[1], math_node.inputs[1])
  1780.         material_ghost.node_tree.links.new(math_node.outputs[0], mix_node.inputs[0])
  1781.         material_ghost.node_tree.links.new(mix_node.outputs[0], mix2_node.inputs[1])
  1782.         material_ghost.node_tree.links.new(trans2_node.outputs[0], mix2_node.inputs[2])
  1783.         material_ghost.node_tree.links.new(light_node.outputs[11], colramp_node.inputs[0])
  1784.         material_ghost.node_tree.links.new(colramp_node.outputs[0], mix2_node.inputs[0])
  1785.         material_ghost.node_tree.links.new(mix2_node.outputs[0], material_output.inputs[0])
  1786.         bpy.context.object.active_material = material_ghost
  1787.         bpy.context.object.active_material.diffuse_color = c1
  1788.         if context.scene.render.engine == 'BLENDER_EEVEE':
  1789.             context.object.active_material.blend_method = 'HASHED'
  1790.         return {'FINISHED'}
  1791.    
  1792.     def invoke(self, context, event):
  1793.         return context.window_manager.invoke_props_dialog(self, width= 200)
  1794.  
  1795.  
  1796. class WM_OT_hologramOp(Operator):
  1797.     """Open the Hologram Dialog box"""
  1798.     bl_label = "       Hologram Operator"
  1799.     bl_idname = "wm.hologramop"
  1800.     bl_options = {'REGISTER', 'UNDO'}
  1801.    
  1802.     col1 : FloatVectorProperty(name='Color 1',subtype='COLOR_GAMMA',size=4,default=(0.0927682, 1, 0.566671, 1), min= 0, max= 1)
  1803.     col2 : FloatVectorProperty(name='Color 2',subtype='COLOR_GAMMA',size=4,default=(0.381055, 1, 0.697353, 1), min= 0, max= 1)
  1804.     wire_amount : FloatProperty(default= 0.050, min= 0, soft_max= 1)
  1805.    
  1806.     def draw(self, context):
  1807.         layout = self.layout
  1808.         layout.separator(factor=2)
  1809.         layout.prop(self, "col1")
  1810.         layout.prop(self, "col2")
  1811.         layout.prop(self, "wire_amount", slider= True, text= "Wireframe Size:")
  1812.         layout.separator(factor=1)
  1813.    
  1814.     def execute(self, context):
  1815.         c1 = self.col1
  1816.         c2 = self.col2
  1817.         material_hologram = bpy.data.materials.new(name= "Hologram")
  1818.         material_hologram.use_nodes = True
  1819.         material_output = material_hologram.node_tree.nodes.get('Material Output')
  1820.         material_output.location = (1000,0)
  1821.         material_output.select = False
  1822.         material_hologram.node_tree.nodes.remove(material_hologram.node_tree.nodes.get('Principled BSDF'))    
  1823.         emiss_node = material_hologram.node_tree.nodes.new('ShaderNodeEmission')
  1824.         emiss_node.location = (-200,-90)
  1825.         emiss_node.inputs[0].default_value = c1        
  1826.         emiss_node.inputs[1].default_value = 2
  1827.         emiss_node.select = False  
  1828.         trans1_node = material_hologram.node_tree.nodes.new('ShaderNodeBsdfTransparent')
  1829.         trans1_node.location = (-200,10)
  1830.         trans1_node.inputs[0].default_value = c2
  1831.         trans1_node.select = False      
  1832.         mix1_node = material_hologram.node_tree.nodes.new('ShaderNodeMixShader')
  1833.         mix1_node.location = (400,50)
  1834.         mix1_node.select = False        
  1835.         layerw_node = material_hologram.node_tree.nodes.new('ShaderNodeLayerWeight')
  1836.         layerw_node.location = (0,150)
  1837.         layerw_node.inputs[0].default_value = 0.1
  1838.         layerw_node.select = False      
  1839.         math_node = material_hologram.node_tree.nodes.new('ShaderNodeMath')
  1840.         math_node.location = (200,100)
  1841.         math_node.inputs[0].default_value = 0.1
  1842.         math_node.select = False
  1843.         math_node.hide = True      
  1844.         mix2_node = material_hologram.node_tree.nodes.new('ShaderNodeMixShader')
  1845.         mix2_node.location = (600,50)
  1846.         mix2_node.select = False      
  1847.         wire_node = material_hologram.node_tree.nodes.new('ShaderNodeWireframe')
  1848.         wire_node.location = (100,200)
  1849.         wire_node.select = False
  1850.         wire_node.use_pixel_size = True
  1851.         wire_node.inputs[0].default_value = self.wire_amount
  1852.         reroute = material_hologram.node_tree.nodes.new('NodeReroute')
  1853.         reroute.location = (-150,-90)
  1854.         material_hologram.node_tree.links.new(trans1_node.outputs[0], mix1_node.inputs[1])
  1855.         material_hologram.node_tree.links.new(emiss_node.outputs[0], reroute.inputs[0])
  1856.         material_hologram.node_tree.links.new(reroute.outputs[0], mix1_node.inputs[2])
  1857.         material_hologram.node_tree.links.new(reroute.outputs[0], mix2_node.inputs[2])
  1858.         material_hologram.node_tree.links.new(layerw_node.outputs[0], math_node.inputs[0])
  1859.         material_hologram.node_tree.links.new(layerw_node.outputs[1], math_node.inputs[1])
  1860.         material_hologram.node_tree.links.new(math_node.outputs[0], mix1_node.inputs[0])
  1861.         material_hologram.node_tree.links.new(mix1_node.outputs[0], mix2_node.inputs[1])
  1862.         material_hologram.node_tree.links.new(wire_node.outputs[0], mix2_node.inputs[0])
  1863.         material_hologram.node_tree.links.new(mix2_node.outputs[0], material_output.inputs[0])
  1864.         bpy.context.object.active_material = material_hologram
  1865.         bpy.context.object.active_material.diffuse_color = c1
  1866.         if context.scene.render.engine == 'BLENDER_EEVEE':
  1867.             context.object.active_material.blend_method = 'HASHED'
  1868.         return {'FINISHED'}
  1869.    
  1870.     def invoke(self, context, event):
  1871.         return context.window_manager.invoke_props_dialog(self, width= 180)
  1872.  
  1873.  
  1874. class WM_OT_neonOp(Operator):
  1875.     """Open the Neon Dialog box"""
  1876.     bl_label = "         Neon Operator"
  1877.     bl_idname = "wm.neonop"
  1878.     bl_options = {'REGISTER', 'UNDO'}
  1879.    
  1880.     col : FloatVectorProperty(name='Color',subtype='COLOR_GAMMA',size=4,default=(0.269619, 0.601632, 0.8, 1), min= 0, max= 1)
  1881.    
  1882.     def execute(self, context):
  1883.         c = self.col
  1884.         cur_frame = bpy.context.scene.frame_current
  1885.         material_neon = bpy.data.materials.new(name= "Neon")
  1886.         material_neon.use_nodes = True
  1887.         tree = material_neon.node_tree
  1888.         material_neon.node_tree.nodes.remove(material_neon.node_tree.nodes.get('Principled BSDF'))
  1889.         material_output = material_neon.node_tree.nodes.get('Material Output')
  1890.         material_output.location = (400,0)
  1891.         emiss_node = material_neon.node_tree.nodes.new('ShaderNodeEmission')
  1892.         emiss_node.location = (200,0)
  1893.         emiss_node.inputs[0].default_value = c
  1894.         emiss_node.inputs[1].default_value = 1.5
  1895.         emiss_node.inputs[1].keyframe_insert("default_value", frame= cur_frame)
  1896.         data_path = f'nodes["{emiss_node.name}"].inputs[1].default_value'
  1897.         fcurves = tree.animation_data.action.fcurves
  1898.         fc = fcurves.find(data_path)
  1899.         if fc:
  1900.             new_mod = fc.modifiers.new('NOISE')
  1901.             new_mod.strength = 10
  1902.             new_mod.depth = 1
  1903.         material_neon.node_tree.links.new(emiss_node.outputs[0], material_output.inputs[0])
  1904.         bpy.context.object.active_material = material_neon
  1905.         bpy.context.object.active_material.diffuse_color = c
  1906.         return {'FINISHED'}
  1907.    
  1908.     def invoke(self, context, event):
  1909.         return context.window_manager.invoke_props_dialog(self, width= 150)
  1910.  
  1911.  
  1912. class WM_OT_potionOp(Operator):
  1913.     """Open the Stylized Potion Dialog box"""
  1914.     bl_label = "                       Stylized Potion Operator"
  1915.     bl_idname = "wm.potionop"
  1916.     bl_options = {'REGISTER', 'UNDO'}
  1917.    
  1918.     col1 : FloatVectorProperty(name='',subtype='COLOR_GAMMA',size=4,default=(1, 0, 0.0018755, 1), min= 0, max= 1, description= "Select the First Color")
  1919.     col2 : FloatVectorProperty(name='',subtype='COLOR_GAMMA',size=4,default=(0.255103, 0, 0.000564289, 1), min= 0, max= 1, description= "Select the Second Color")
  1920.     animate : BoolProperty(name= "Animate Shader", default= False, description= "Enable the Animation for the Shader")
  1921.     start : IntProperty(name= "Start Frame", default = 0, description= "Set the Start Frame for your animation")
  1922.     end : IntProperty(name= "End Frame", default = 250, description= "Set the End Frame for your Animation")
  1923.    
  1924.     def invoke(self, context, event):
  1925.         return context.window_manager.invoke_props_dialog(self)
  1926.    
  1927.     def draw(self, context):
  1928.         layout = self.layout
  1929.         layout.separator(factor= 2)
  1930.         row= layout.row()
  1931.         split = row.split(factor= 0.7)
  1932.         split.label(text= "                                             Color 1: ")
  1933.         split.prop(self, "col1")
  1934.         row= layout.row()
  1935.         split = row.split(factor= 0.7)
  1936.         split.label(text= "                                             Color 2:" )
  1937.         split.prop(self, "col2")  
  1938.         row= layout.row()
  1939.         row.separator(factor= 2)
  1940.         box = layout.box()
  1941.         row = box.row()
  1942.         row.prop(self, "animate")
  1943.         if self.animate == False:
  1944.             row.label(text= "(Shader is Not Animated)")
  1945.         if self.animate == True:
  1946.             row.label(text= "(Shader is Animated)")  
  1947.             row = box.row()  
  1948.             box.prop(self, "start")
  1949.             box.prop(self, "end")
  1950.         layout.separator(factor= 1)
  1951.    
  1952.     def execute(self, context):
  1953.         s = self.start
  1954.         e = self.end
  1955.         c1 = self.col1
  1956.         c2 = self.col2
  1957.         a = self.animate
  1958.         m1 = " : (animated)"
  1959.         if a == True:    
  1960.             material_potion = bpy.data.materials.new(name= "Stylized Potion" + m1)
  1961.         else:
  1962.             material_potion = bpy.data.materials.new(name= "Stylized Potion")    
  1963.         material_potion.use_nodes = True
  1964.         tree = material_potion.node_tree
  1965.         prin_node = material_potion.node_tree.nodes.get('Principled BSDF')
  1966.         prin_node.location = (200,0)
  1967.         prin_node.inputs[0].default_value = (0.8, 0.000897912, 0, 1)
  1968.         prin_node.inputs[3].default_value = (0.8, 0.1332, 0.0936454, 1)
  1969.         prin_node.inputs[7].default_value = 0.076
  1970.         prin_node.inputs[15].default_value = 0.947
  1971.         material_output = material_potion.node_tree.nodes.get('Material Output')
  1972.         material_output.location = (500,0)
  1973.         rgb1_node = material_potion.node_tree.nodes.new('ShaderNodeRGB')
  1974.         rgb1_node.location = (-200,0)
  1975.         rgb1_node.outputs[0].default_value = c1  
  1976.         rgb2_node = material_potion.node_tree.nodes.new('ShaderNodeRGB')
  1977.         rgb2_node.location = (-200,-200)
  1978.         rgb2_node.outputs[0].default_value = c2
  1979.         mix_node = material_potion.node_tree.nodes.new('ShaderNodeMixRGB')
  1980.         mix_node.location = (0,0)
  1981.         noise_node = material_potion.node_tree.nodes.new('ShaderNodeTexNoise')
  1982.         noise_node.location = (-500, 200)
  1983.         noise_node.inputs[2].default_value = 5
  1984.         noise_node.inputs[3].default_value = 5
  1985.         noise_node.inputs[5].default_value = 0.2
  1986.         if a == True:
  1987.             noise_node.inputs[5].keyframe_insert("default_value", frame= s-150)
  1988.             noise_node.inputs[5].default_value = 1.2
  1989.             noise_node.inputs[5].keyframe_insert("default_value", frame= e+50)
  1990.         ramp_node = material_potion.node_tree.nodes.new('ShaderNodeValToRGB')
  1991.         ramp_node.location = (-300, 200)
  1992.         ramp_node.color_ramp.elements[0].position = 0.454
  1993.         ramp_node.color_ramp.elements[1].position = 0.522
  1994.         link = material_potion.node_tree.links.new
  1995.         link(rgb1_node.outputs[0], mix_node.inputs[1])
  1996.         link(rgb2_node.outputs[0], mix_node.inputs[2])
  1997.         link(noise_node.outputs[0], ramp_node.inputs[0])
  1998.         link(ramp_node.outputs[0], mix_node.inputs[0])
  1999.         link(mix_node.outputs[0], prin_node.inputs[0])
  2000.         link(prin_node.outputs[0], material_output.inputs[0])
  2001.         bpy.context.object.active_material = material_potion
  2002.         bpy.context.object.active_material.diffuse_color = c1
  2003.         return {'FINISHED'}
  2004.  
  2005.  
  2006. class SHADER_OT_LEATHER(Operator):
  2007.     """Open the Leather Shader Dialog box"""
  2008.     bl_label = "             Leather Operator"
  2009.     bl_idname = "wm.leatherop"
  2010.     bl_options = {'REGISTER', 'UNDO'}
  2011.    
  2012.     col : FloatVectorProperty(name='Color',subtype='COLOR_GAMMA',size=4,default=(0.123239, 0.071147, 0.0570714, 1), min= 0, max= 1)
  2013.    
  2014.     def execute(self, context):
  2015.         c = self.col
  2016.         material_leather = bpy.data.materials.new(name= "Leather")
  2017.         material_leather.use_nodes = True
  2018.         principled = material_leather.node_tree.nodes.get('Principled BSDF')
  2019.         principled.inputs[0].default_value = c
  2020.         principled.inputs[5].default_value = 0.161
  2021.         principled.inputs[7].default_value = 0.367
  2022.         material_output = material_leather.node_tree.nodes.get('Material Output')
  2023.         material_output.location = (400,0)
  2024.         mus_node = material_leather.node_tree.nodes.new('ShaderNodeTexMusgrave')
  2025.         mus_node.location = (-600,0)
  2026.         mus_node.musgrave_type = 'MULTIFRACTAL'
  2027.         mus_node.inputs[2].default_value = 148
  2028.         mus_node.inputs[3].default_value = 12.6
  2029.         mus_node.inputs[4].default_value = 92
  2030.         mus_node.inputs[5].default_value = 2.3
  2031.         disp_node = material_leather.node_tree.nodes.new('ShaderNodeDisplacement')
  2032.         disp_node.location = (-400,0)
  2033.         disp_node.inputs[2].default_value= 0.190
  2034.         material_leather.node_tree.links.new(mus_node.outputs[0], disp_node.inputs[0])
  2035.         material_leather.node_tree.links.new(disp_node.outputs[0], material_output.inputs[2])
  2036.         bpy.context.object.active_material = material_leather
  2037.         bpy.context.object.active_material.diffuse_color = c
  2038.         bpy.context.object.active_material.metallic = 0.3
  2039.         return {'FINISHED'}
  2040.    
  2041.     def invoke(self, context, event):
  2042.         return context.window_manager.invoke_props_dialog(self, width= 210)
  2043.  
  2044.  
  2045. class SHADER_OT_CLOUD(Operator):
  2046.     """Add the Basic Cloud Shader to your selected Object."""
  2047.     bl_label = "Cloud"
  2048.     bl_idname = 'shader.cloud_operator'
  2049.     bl_options = {'REGISTER', 'UNDO'}
  2050.    
  2051.     def execute(self, context):
  2052.         material_cloud = bpy.data.materials.new(name= "Clouds")
  2053.         material_cloud.use_nodes = True
  2054.         material_output = material_cloud.node_tree.nodes.get('Material Output')
  2055.         material_output.location = (100,0)
  2056.         material_output.select = False
  2057.         material_cloud.node_tree.nodes.remove(material_cloud.node_tree.nodes.get('Principled BSDF'))
  2058.         volume_node = material_cloud.node_tree.nodes.new('ShaderNodeVolumePrincipled')
  2059.         volume_node.location = (-200,0)
  2060.         volume_node.select = False
  2061.         colramp_node = material_cloud.node_tree.nodes.new('ShaderNodeValToRGB')
  2062.         colramp_node.location = (-500,0)
  2063.         colramp_node.color_ramp.elements[0].position = 0.503798
  2064.         colramp_node.color_ramp.elements[1].position = 0.58481
  2065.         noise_node = material_cloud.node_tree.nodes.new('ShaderNodeTexNoise')
  2066.         noise_node.location = (-700,0)
  2067.         noise_node.inputs[2].default_value = 1
  2068.         noise_node.inputs[3].default_value = 20
  2069.         mapping_node = material_cloud.node_tree.nodes.new('ShaderNodeMapping')
  2070.         mapping_node.location = (-900, 0)
  2071.         coord_node = material_cloud.node_tree.nodes.new('ShaderNodeTexCoord')
  2072.         coord_node.location = (-1100,0)
  2073.         material_cloud.node_tree.links.new(colramp_node.outputs[0], volume_node.inputs[2])
  2074.         material_cloud.node_tree.links.new(noise_node.outputs[1], colramp_node.inputs[0])
  2075.         material_cloud.node_tree.links.new(mapping_node.outputs[0], noise_node.inputs[0])
  2076.         material_cloud.node_tree.links.new(coord_node.outputs[3], mapping_node.inputs[0])
  2077.         material_cloud.node_tree.links.new(volume_node.outputs[0], material_output.inputs[1])
  2078.         bpy.context.object.active_material = material_cloud
  2079.         return {'FINISHED'}
  2080.  
  2081.  
  2082. class SHADER_OT_SCIFIGOLD(Operator):
  2083.     """Add the Basic Scifi Gold Shader to your selected Object."""
  2084.     bl_label = "Sci-fi Gold"
  2085.     bl_idname = 'shader.scifigold_operator'
  2086.     bl_options = {'REGISTER', 'UNDO'}
  2087.    
  2088.     def execute(self, context):
  2089.         material_scifigold = bpy.data.materials.new(name= "Sci-fi Gold")
  2090.         material_scifigold.use_nodes = True
  2091.         material_output = material_scifigold.node_tree.nodes.get('Material Output')
  2092.         material_output.location = (600,0)
  2093.         material_output.select = False      
  2094.         rgb_node = material_scifigold.node_tree.nodes.new('ShaderNodeRGB')
  2095.         rgb_node.location = (-200,0)
  2096.         rgb_node.outputs[0].default_value = (1, 0.766, 0.336, 1)
  2097.         rgb_node.select = False
  2098.         rgb_node.hide = True
  2099.         principled = material_scifigold.node_tree.nodes.get('Principled BSDF')
  2100.         principled.location = (200,0)
  2101.         principled.select = False
  2102.         principled.inputs[4].default_value = 1.0
  2103.         bump_node = material_scifigold.node_tree.nodes.new('ShaderNodeBump')
  2104.         bump_node.location = (0, -600)
  2105.         bump_node.inputs[0].default_value = 0.270
  2106.         brick_node = material_scifigold.node_tree.nodes.new('ShaderNodeTexBrick')
  2107.         brick_node.location = (-400, -600)
  2108.         noise_node = material_scifigold.node_tree.nodes.new('ShaderNodeTexNoise')
  2109.         noise_node.location = (-600, -800)
  2110.         colramp_node = material_scifigold.node_tree.nodes.new('ShaderNodeValToRGB')
  2111.         colramp_node.location = (-100, -300)
  2112.         colramp_node.color_ramp.elements[0].color = (0.293851, 0.293851, 0.293851, 1)
  2113.         colramp_node.color_ramp.elements[1].color = (0.373086, 0.373086, 0.373086, 1)
  2114.         mix_node = material_scifigold.node_tree.nodes.new('ShaderNodeMixRGB')
  2115.         mix_node.location = (0, 0)
  2116.         mix_node.blend_type = 'MULTIPLY'
  2117.         mix_node.inputs[2].default_value = (0.412679, 0.412679, 0.412679, 1)
  2118.         mix_node.use_clamp = True
  2119.         link = material_scifigold.node_tree.links.new
  2120.         link(mix_node.outputs[0], principled.inputs[0])
  2121.         link(rgb_node.outputs[0], mix_node.inputs[1])
  2122.         link(colramp_node.outputs[0], principled.inputs[7])
  2123.         link(bump_node.outputs[0], principled.inputs[19])
  2124.         link(brick_node.outputs[0], bump_node.inputs[2])
  2125.         link(brick_node.outputs[1], colramp_node.inputs[0])
  2126.         link(brick_node.outputs[1], mix_node.inputs[0])
  2127.         link(noise_node.outputs[0], brick_node.inputs[0])
  2128.         bpy.context.object.active_material = material_scifigold
  2129.         return {'FINISHED'}
  2130.  
  2131.  
  2132. class SHADER_OT_BRICK(Operator):
  2133.     """Add the Basic Brick Shader to your selected Object."""
  2134.     bl_label = "Brick"
  2135.     bl_idname = 'shader.brick_operator'
  2136.     bl_options = {'REGISTER', 'UNDO'}
  2137.    
  2138.     def execute(self, context):
  2139.         material_brick = bpy.data.materials.new(name= "Brick")
  2140.         material_brick.use_nodes = True
  2141.         material_output = material_brick.node_tree.nodes.get('Material Output')
  2142.         material_output.location = (600,0)
  2143.         material_output.select = False      
  2144.         rgb_node = material_brick.node_tree.nodes.new('ShaderNodeRGB')
  2145.         rgb_node.location = (-400,0)
  2146.         rgb_node.outputs[0].default_value = (1, 0.90445, 0.70086, 1)
  2147.         rgb_node.select = False
  2148.         rgb_node.hide = True
  2149.         principled = material_brick.node_tree.nodes.get('Principled BSDF')
  2150.         principled.location = (200,0)
  2151.         principled.select = False
  2152.         principled.inputs[7].default_value = 0.796203
  2153.         bump_node = material_brick.node_tree.nodes.new('ShaderNodeBump')
  2154.         bump_node.location = (0, -600)
  2155.         bump_node.inputs[0].default_value = 0.5
  2156.         brick_node = material_brick.node_tree.nodes.new('ShaderNodeTexBrick')
  2157.         brick_node.location = (-400, -600)
  2158.         brick_node.inputs[4].default_value = 2.9
  2159.         brick_node.inputs[5].default_value = 0.01
  2160.         noise_node = material_brick.node_tree.nodes.new('ShaderNodeTexNoise')
  2161.         noise_node.location = (-400, -200)
  2162.         noise_node.inputs[1].default_value = -9.740
  2163.         noise_node.inputs[2].default_value = 4.5
  2164.         noise_node.inputs[3].default_value = 0
  2165.         mix_node = material_brick.node_tree.nodes.new('ShaderNodeMixRGB')
  2166.         mix_node.location = (0, 0)
  2167.         mix_node.blend_type = 'MULTIPLY'
  2168.         mix_node.inputs[2].default_value = (0.440389, 0.440389, 0.440389, 1)
  2169.         mix_node.use_clamp = True
  2170.         mix2_node = material_brick.node_tree.nodes.new('ShaderNodeMixRGB')
  2171.         mix2_node.location = (-200, 0)
  2172.         mix_node.use_clamp = True
  2173.         mix_node.inputs[0].default_value = 0.4
  2174.         coord_node = material_brick.node_tree.nodes.new('ShaderNodeTexCoord')
  2175.         coord_node.location = (-1000,-600)
  2176.         mapping_node = material_brick.node_tree.nodes.new('ShaderNodeMapping')
  2177.         mapping_node.location = (-800,-600)
  2178.         mapping_node.inputs[3].default_value[0] = 2.5
  2179.         mapping_node.inputs[3].default_value[1] = 2.5
  2180.         mapping_node.inputs[3].default_value[2] = 2.5
  2181.         link = material_brick.node_tree.links.new
  2182.         link(mix_node.outputs[0], principled.inputs[0])
  2183.         link(bump_node.outputs[0], principled.inputs[19])
  2184.         link(brick_node.outputs[0], bump_node.inputs[2])
  2185.         link(brick_node.outputs[1], mix_node.inputs[0])
  2186.         link(mapping_node.outputs[0], brick_node.inputs[0])
  2187.         link(coord_node.outputs[2], mapping_node.inputs[0])
  2188.         link(mix2_node.outputs[0], mix_node.inputs[1])
  2189.         link(rgb_node.outputs[0], mix2_node.inputs[1])
  2190.         link(noise_node.outputs[0], mix2_node.inputs[2])
  2191.         bpy.context.object.active_material = material_brick
  2192.         return {'FINISHED'}
  2193.  
  2194.  
  2195. class NODE_MT_materials(Menu):
  2196.     """The Materials section contains: Leather."""
  2197.     bl_label = "Materials"
  2198.     bl_idname = "node.mat_MT_menu"
  2199.  
  2200.     def draw(self, context):
  2201.         layout = self.layout
  2202.         layout.operator("wm.leatherop", text= "Leather Shader", icon= 'OUTLINER_OB_SURFACE')
  2203.  
  2204.  
  2205. class NODE_MT_metallics(Menu):
  2206.     """The Metallics section contains: Gold, Silver and Copper."""
  2207.     bl_label = "Metallics"
  2208.     bl_idname = "node.met_MT_menu"
  2209.  
  2210.     def draw(self, context):
  2211.         layout = self.layout
  2212.         layout.operator("shader.gold_operator", text= "Gold Shader", icon= 'KEYTYPE_KEYFRAME_VEC')
  2213.         layout.operator("shader.silver_operator", text= "Silver Shader", icon= 'HANDLETYPE_FREE_VEC')
  2214.         layout.operator("shader.copper_operator", text= "Copper Shader", icon= 'KEYTYPE_EXTREME_VEC')
  2215.  
  2216.  
  2217. class NODE_MT_gems(Menu):
  2218.     """The Gemstones section contains: The Diamond Shader."""
  2219.     bl_label = "Gemstones"
  2220.     bl_idname = "node.gem_MT_menu"
  2221.  
  2222.     def draw(self, context):
  2223.         layout = self.layout
  2224.         layout.operator("wm.diamondop", text= "Diamond Shader", icon= 'DECORATE_ANIMATE')
  2225.  
  2226.  
  2227. class NODE_MT_stylized(Menu):
  2228.     """The Stylized section contains: The Ghost Shader, The Hologram Shader, The Neon Shader and the Stylized Potion Shader."""
  2229.     bl_label = "Stylized"
  2230.     bl_idname = "node.stylized_MT_menu"
  2231.  
  2232.     def draw(self, context):
  2233.         layout = self.layout
  2234.         layout.operator("wm.ghostop", text= "Ghost Shader", icon= 'GHOST_ENABLED')  
  2235.         layout.operator("wm.hologramop", text= "Hologram Shader", icon= 'USER')
  2236.         layout.operator("wm.neonop", text= "Neon Shader", icon= 'MOD_SMOOTH')
  2237.         layout.operator("wm.potionop", text= "Potion Shader", icon= 'SORTTIME')      
  2238.  
  2239.  
  2240. class WM_OT_Shortcut(Operator):
  2241.     """Custom Operator"""
  2242.     bl_label = "Add Shader Menu"
  2243.     bl_idname = "wm.call_shader_menu"
  2244.     bl_options = {'REGISTER', 'UNDO'}
  2245.  
  2246.     def draw(self, context):
  2247.         layout = self.layout
  2248.         box = layout.box()
  2249.         box.menu("node.gem_MT_menu")
  2250.         box.menu("node.mat_MT_menu")
  2251.         box.menu("node.met_MT_menu")
  2252.         box.menu("node.stylized_MT_menu")
  2253.        
  2254.     def execute(self, context):
  2255.         return {'FINISHED'}
  2256.    
  2257.     def invoke(self, context, event):
  2258.         wm = context.window_manager
  2259.         return wm.invoke_props_dialog(self)
  2260.  
  2261.  
  2262. addon_keymaps = []
  2263.  
  2264. classes = [ShaderLibraryProperties, WM_OT_Shortcut, NODE_MT_gems, NODE_MT_materials, NODE_MT_metallics, NODE_MT_stylized, ShaderMainPanel, SubPanelCosmic, SubPanelMaterials, SubPanelMetals, SubPanelPreciousMetals, SubPanelStylized, SHADER_OT_LEATHER, SHADER_OT_DIAMOND, SHADER_OT_GOLD, SHADER_OT_SILVER, SHADER_OT_COPPER, SHADER_OT_CLOUD, SHADER_OT_SCIFIGOLD, SHADER_OT_BRICK, WM_OT_ghostOp, WM_OT_hologramOp, WM_OT_neonOp, WM_OT_potionOp, SHADER_OT_COSMIC]
  2265.  
  2266.  
  2267. def register():
  2268.     for cls in classes:
  2269.         bpy.utils.register_class(cls)
  2270.     wm = bpy.context.window_manager
  2271.     kc = wm.keyconfigs.addon
  2272.     if kc:
  2273.         km = kc.keymaps.new(name='3D View', space_type= 'VIEW_3D')
  2274.         kmi = km.keymap_items.new("wm.call_shader_menu", type= 'F', value= 'PRESS', shift= True)
  2275.         addon_keymaps.append((km, kmi))
  2276.     bpy.types.Scene.my_tool = PointerProperty(type= ShaderLibraryProperties)    
  2277.    
  2278.  
  2279.  
  2280. def unregister():
  2281.     del bpy.types.Scene.my_tool
  2282.     for km,kmi in addon_keymaps:
  2283.         km.keymap_items.remove(kmi)
  2284.     addon_keymaps.clear()
  2285.     for cls in classes:
  2286.         bpy.utils.unregister_class(cls)
  2287.        
  2288.  
  2289. if __name__ == "__main__":
  2290.     register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement