<s> import bpy <EOL> from bpy . types import PropertyGroup <EOL> from bpy . props import StringProperty <EOL> from bpy . props import IntProperty <EOL> from bpy . props import FloatVectorProperty <EOL> from bpy . props import FloatProperty <EOL> from bpy . props import CollectionProperty <EOL> from bpy . props import EnumProperty <EOL> from mmd_tools . core . model import Model as FnModel <EOL> from mmd_tools . core . bone import FnBone <EOL> from mmd_tools . core . material import FnMaterial <EOL> def _get_bone ( prop ) : <EOL> bone_id = prop . get ( '<STR_LIT>' , - <NUM_LIT:1> ) <EOL> if bone_id < <NUM_LIT:0> : <EOL> return '<STR_LIT>' <EOL> root = prop . id_data <EOL> fnModel = FnModel ( root ) <EOL> arm = fnModel . armature ( ) <EOL> fnBone = FnBone . from_bone_id ( arm , bone_id ) <EOL> if not fnBone : <EOL> return '<STR_LIT>' <EOL> return fnBone . pose_bone . name <EOL> def _set_bone ( prop , value ) : <EOL> root = prop . id_data <EOL> fnModel = FnModel ( root ) <EOL> arm = fnModel . armature ( ) <EOL> if value not in arm . pose . bones . keys ( ) : <EOL> prop [ '<STR_LIT>' ] = - <NUM_LIT:1> <EOL> return <EOL> pose_bone = arm . pose . bones [ value ] <EOL> fnBone = FnBone ( pose_bone ) <EOL> prop [ '<STR_LIT>' ] = fnBone . bone_id <EOL> class BoneMorphData ( PropertyGroup ) : <EOL> """<STR_LIT:U+0020>""" <EOL> bone = StringProperty ( <EOL> name = '<STR_LIT>' , <EOL> set = _set_bone , <EOL> get = _get_bone , <EOL> ) <EOL> bone_id = IntProperty ( <EOL> name = '<STR_LIT>' , <EOL> ) <EOL> location = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:3> , <EOL> ) <EOL> rotation = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> ) <EOL> class BoneMorph ( PropertyGroup ) : <EOL> """<STR_LIT>""" <EOL> name_e = StringProperty ( <EOL> name = '<STR_LIT>' , <EOL> description = '<STR_LIT>' , <EOL> default = '<STR_LIT>' , <EOL> ) <EOL> category = EnumProperty ( <EOL> name = '<STR_LIT>' , <EOL> items = [ <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:1> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:2> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:3> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:4> ) , <EOL> ] , <EOL> default = '<STR_LIT>' , <EOL> ) <EOL> data = CollectionProperty ( <EOL> name = '<STR_LIT>' , <EOL> type = BoneMorphData , <EOL> ) <EOL> active_bone_data = IntProperty ( <EOL> name = '<STR_LIT>' , <EOL> default = <NUM_LIT:0> , <EOL> ) <EOL> def _get_material ( prop ) : <EOL> mat_id = prop . get ( '<STR_LIT>' ) <EOL> if mat_id < <NUM_LIT:0> : <EOL> return '<STR_LIT>' <EOL> fnMat = FnMaterial . from_material_id ( mat_id ) <EOL> if not fnMat : <EOL> return '<STR_LIT>' <EOL> return fnMat . material . name <EOL> def _set_material ( prop , value ) : <EOL> if value not in bpy . data . materials . keys ( ) : <EOL> prop [ '<STR_LIT>' ] = - <NUM_LIT:1> <EOL> return <EOL> mat = bpy . data . materials [ value ] <EOL> fnMat = FnMaterial ( mat ) <EOL> prop [ '<STR_LIT>' ] = fnMat . material_id <EOL> class MaterialMorphData ( PropertyGroup ) : <EOL> """<STR_LIT:U+0020>""" <EOL> offset_type = EnumProperty ( <EOL> name = '<STR_LIT>' , <EOL> items = [ <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:1> ) <EOL> ] , <EOL> default = '<STR_LIT>' <EOL> ) <EOL> material = StringProperty ( <EOL> name = '<STR_LIT>' , <EOL> get = _get_material , <EOL> set = _set_material , <EOL> ) <EOL> material_id = IntProperty ( <EOL> name = '<STR_LIT>' , <EOL> ) <EOL> diffuse_color = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> ) <EOL> specular_color = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> ) <EOL> ambient_color = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:3> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> ) <EOL> edge_color = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> ) <EOL> edge_weight = FloatProperty ( <EOL> name = '<STR_LIT>' , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:100> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = <NUM_LIT:0> , <EOL> ) <EOL> texture_factor = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> ) <EOL> sphere_texture_factor = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> ) <EOL> toon_texture_factor = FloatVectorProperty ( <EOL> name = '<STR_LIT>' , <EOL> subtype = '<STR_LIT>' , <EOL> size = <NUM_LIT:4> , <EOL> min = <NUM_LIT:0> , <EOL> max = <NUM_LIT:1> , <EOL> precision = <NUM_LIT:3> , <EOL> step = <NUM_LIT:0.1> , <EOL> default = [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> ) <EOL> class MaterialMorph ( PropertyGroup ) : <EOL> """<STR_LIT>""" <EOL> name_e = StringProperty ( <EOL> name = '<STR_LIT>' , <EOL> description = '<STR_LIT>' , <EOL> default = '<STR_LIT>' , <EOL> ) <EOL> category = EnumProperty ( <EOL> name = '<STR_LIT>' , <EOL> items = [ <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:1> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:2> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:3> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:4> ) , <EOL> ] , <EOL> default = '<STR_LIT>' , <EOL> ) <EOL> data = CollectionProperty ( <EOL> name = '<STR_LIT>' , <EOL> type = MaterialMorphData , <EOL> ) <EOL> active_material_data = IntProperty ( <EOL> name = '<STR_LIT>' , <EOL> default = <NUM_LIT:0> , <EOL> ) <EOL> class VertexMorph ( PropertyGroup ) : <EOL> """<STR_LIT>""" <EOL> name_e = StringProperty ( <EOL> name = '<STR_LIT>' , <EOL> description = '<STR_LIT>' , <EOL> default = '<STR_LIT>' <EOL> ) <EOL> category = EnumProperty ( <EOL> name = '<STR_LIT>' , <EOL> items = [ <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:1> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:2> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:3> ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:4> ) , <EOL> ] , <EOL> default = '<STR_LIT>' , <EOL> ) </s>
