// PMDファイルをUnity形式に変換 void BurnUnityFormatForPMD(MMD.PMD.PMDFormat format) { format.fst = this.fst; obj = new GameObject(format.name); format.caller = obj; format.shader_type = this.shader_type; MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter(); this.mesh = conv.CreateMesh(format); // メッシュの生成・設定 this.materials = conv.CreateMaterials(format); // マテリアルの生成・設定 this.bones = conv.CreateBones(format); // ボーンの生成・設定 // バインドポーズの作成 conv.BuildingBindpose(format, this.mesh, this.materials, this.bones); obj.AddComponent <Animation>(); // アニメーションを追加 MMDEngine engine = obj.AddComponent <MMDEngine>(); // IKの登録 if (this.use_ik) { engine.ik_list = conv.EntryIKSolver(format, this.bones); } // 剛体関連 if (this.rigidFlag) { try { this.rigids = conv.CreateRigids(format, bones); conv.AssignRigidbodyToBone(format, this.bones, this.rigids); conv.SetRigidsSettings(format, this.bones, this.rigids); conv.SettingJointComponent(format, this.bones, this.rigids); // 非衝突グループ List <int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(format, this.rigids); int[] groupTarget = conv.GetRigidbodyGroupTargets(format, rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, this.rigids); } catch { } } #if UNITY_4_0 AvatarSettingScript avt_setting = new AvatarSettingScript(format.caller); avt_setting.SettingAvatar(); #endif var window = LoadedWindow.Init(); window.Text = format.head.comment; CreatePrefab(format); EndOfScript(format); }
/// <summary> /// GameObjectを作成する /// </summary> /// <param name='format'>内部形式データ</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='use_mecanim'>Mecanimを使用するか</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> private GameObject CreateGameObject_(PMXFormat format, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) { format_ = format; use_rigidbody_ = use_rigidbody; use_mecanim_ = use_mecanim; use_ik_ = use_ik; scale_ = scale; root_game_object_ = new GameObject(format_.meta_header.name); MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //MMDEngine追加 root_game_object_.AddComponent<Animation>(); // アニメーションを追加 MeshCreationInfo[] creation_info = CreateMeshCreationInfo(); // メッシュを作成する為の情報を作成 Mesh[] mesh = CreateMesh(creation_info); // メッシュの生成・設定 Material[][] materials = CreateMaterials(creation_info); // マテリアルの生成・設定 GameObject[] bones = CreateBones(); // ボーンの生成・設定 SkinnedMeshRenderer[] renderers = BuildingBindpose(mesh, materials, bones); // バインドポーズの作成 CreateMorph(mesh, materials, bones, renderers, creation_info); // モーフの生成・設定 // IKの登録 if (use_ik_) { engine.bone_controllers = EntryBoneController(bones); engine.ik_list = engine.bone_controllers.Where(x=>null != x.ik_solver) .Select(x=>x.ik_solver) .ToArray(); } // 剛体関連 if (use_rigidbody_) { GameObject[] rigids = CreateRigids(); AssignRigidbodyToBone(bones, rigids); SetRigidsSettings(bones, rigids); GameObject[] joints = CreateJoints(rigids); GlobalizeRigidbody(joints); // 非衝突グループ List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids); int[] groupTarget = GetRigidbodyGroupTargets(rigids); MMDEngine.Initialize(engine, scale_, groupTarget, ignoreGroups, rigids); } // Mecanim設定 (not work yet..) #if UNITY_4_0 || UNITY_4_1 if (use_mecanim_) { AvatarSettingScript avt_setting = new AvatarSettingScript(root_game_object_); avt_setting.SettingAvatar(); } #endif return root_game_object_; }
private GameObject CreateGameObject_(PMDFormat format, ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) { format_ = format; shader_type_ = shader_type; use_rigidbody_ = use_rigidbody; use_mecanim_ = use_mecanim; use_ik_ = use_ik; scale_ = scale; root_game_object_ = new GameObject(format_.name); Mesh mesh = CreateMesh(); // メッシュの生成・設定 Material[] materials = CreateMaterials(); // マテリアルの生成・設定 GameObject[] bones = CreateBones(); // ボーンの生成・設定 // バインドポーズの作成 BuildingBindpose(mesh, materials, bones); MMDEngine engine = root_game_object_.AddComponent <MMDEngine>(); //スケール・エッジ幅 engine.scale = scale_; engine.outline_width = default_outline_width; engine.material_outline_widths = Enumerable.Repeat(1.0f, materials.Length).ToArray(); // IKの登録 if (use_ik_) { engine.ik_list = EntryIKSolver(bones); } // 剛体関連 if (use_rigidbody_) { try { var rigids = CreateRigids(bones); AssignRigidbodyToBone(bones, rigids); SetRigidsSettings(bones, rigids); GameObject[] joints = SettingJointComponent(bones, rigids); GlobalizeRigidbody(joints); // 非衝突グループ List <int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids); int[] groupTarget = GetRigidbodyGroupTargets(rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids); } catch { } } // Mecanim設定 if (use_mecanim_) { AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones); avatar_setting.SettingHumanAvatar(); string path = format_.folder + "/"; string name = GetFilePathString(format_.name); string file_name = path + name + ".avatar.asset"; avatar_setting.CreateAsset(file_name); } else { root_game_object_.AddComponent <Animation>(); // アニメーション追加 } return(root_game_object_); }
void Start() { skeletonMaterial = Resources.Load("Skeleton", typeof(Material)) as Material; barracudaRunner = GameObject.Find("BarracudaRunner").GetComponent <VNectBarracudaRunner>(); barracudaRunner.ModelQuality = configurationSetting.TrainedModel; videoCapture = GameObject.Find("MainTexrure").GetComponent <VideoCapture>(); Menu = GameObject.Find("Menu"); cameraMover = GameObject.Find("MainCamera").GetComponent <CameraMover>(); sourceDevice = GameObject.Find("SourceDevice").GetComponent <Dropdown>(); WebCamDevice[] devices = WebCamTexture.devices; foreach (var d in devices) { sourceDevice.options.Add(new Dropdown.OptionData(d.name)); } sourceDevice.value = 0; btnPause = GameObject.Find("btnPause").GetComponent <Button>(); ifFrame = GameObject.Find("ifFrame").GetComponent <InputField>(); txFrameCount = GameObject.Find("txFrameCount").GetComponent <Text>(); btnSkip = GameObject.Find("btnSkip").GetComponent <Button>(); pnlVideoIF = GameObject.Find("pnlVideoIF"); pnlVideoIF.SetActive(false); btnSourceDevice = GameObject.Find("btnSourceDevice").GetComponent <Button>(); txtFPS = GameObject.Find("txtFPS").GetComponent <Text>(); btnRecord = GameObject.Find("btnRecord").GetComponent <Button>(); avatars = GameObject.Find("Avatars").GetComponent <Dropdown>(); avatarSetting = GameObject.Find("AvatarSetting").GetComponent <AvatarSettingScript>(); avatarSetting.Init(); avatarSetting.gameObject.SetActive(false); configuration = GameObject.Find("Configuration").GetComponent <ConfigurationScript>(); configuration.Init(); configuration.gameObject.SetActive(false); ReflectConfiguration(configurationSetting); var settings = PlayerPrefs.GetString("AvatarSettings", ""); //settings = ""; // Decode Avatar Setting string[] asStr = settings.Split(';'); foreach (var s in asStr) { string[] col = s.Split(','); if (col.Length != 16) { continue; } var setting = new AvatarSetting(); if (!int.TryParse(col[0], out setting.AvatarType)) { continue; } if (setting.AvatarType < 0) { } else if (setting.AvatarType == 0) { setting.VRMFilePath = col[1]; } else if (setting.AvatarType == 1) { setting.FBXFilePath = col[1]; } setting.AvatarName = col[2]; if (!float.TryParse(col[3], out setting.PosX)) { continue; } if (!float.TryParse(col[4], out setting.PosY)) { continue; } if (!float.TryParse(col[5], out setting.PosZ)) { continue; } if (!float.TryParse(col[6], out setting.DepthScale)) { continue; } if (!float.TryParse(col[7], out setting.Scale)) { continue; } if (!float.TryParse(col[8], out setting.FaceOriX)) { continue; } if (!float.TryParse(col[9], out setting.FaceOriY)) { continue; } if (!float.TryParse(col[10], out setting.FaceOriZ)) { continue; } if (!int.TryParse(col[11], out setting.SkeletonVisible)) { continue; } if (!float.TryParse(col[12], out setting.SkeletonPosX)) { continue; } if (!float.TryParse(col[13], out setting.SkeletonPosY)) { continue; } if (!float.TryParse(col[14], out setting.SkeletonPosZ)) { continue; } if (!float.TryParse(col[15], out setting.SkeletonScale)) { continue; } AvatarList.Add(setting); } ; if (AvatarList.Count == 0) { var setting = new AvatarSetting() { AvatarType = -1, AvatarName = "unity-chan", Avatar = GameObject.Find("unitychan").GetComponent <VNectModel>(), }; setting.Avatar.SetNose(setting.FaceOriX, setting.FaceOriY, setting.FaceOriZ); AvatarList.Add(setting); barracudaRunner.InitVNectModel(setting.Avatar); setting = new AvatarSetting() { AvatarType = -2, AvatarName = "yukihiko-chan", Avatar = GameObject.Find("YukihikoAoyagi").GetComponent <VNectModel>(), }; setting.Avatar.SetNose(setting.FaceOriX, setting.FaceOriY, setting.FaceOriZ); AvatarList.Add(setting); barracudaRunner.InitVNectModel(setting.Avatar); } avatars.options.Clear(); foreach (var setting in AvatarList) { if (setting.AvatarType >= 0) { LoadAvatar(setting); } else if (setting.AvatarType < 0) { avatars.options.Add(new Dropdown.OptionData(setting.AvatarName)); switch (setting.AvatarType) { case -1: setting.Avatar = GameObject.Find("unitychan").GetComponent <VNectModel>(); break; case -2: setting.Avatar = GameObject.Find("YukihikoAoyagi").GetComponent <VNectModel>(); break; } setting.Avatar.SetNose(setting.FaceOriX, setting.FaceOriY, setting.FaceOriZ); barracudaRunner.InitVNectModel(setting.Avatar); } } avatars.value = 0; ChangedAvatar(0); }
//-------------------------------------------------------------------------------- // PMDファイルの読み込み // PMDファイルをUnity形式に変換 void BurnUnityFormatForPMD() { MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter(); GameObject obj = new GameObject(this.format.name); this.format.fst = this.fst; this.format.caller = obj; this.format.shader_type = this.shader_type; Mesh mesh = conv.CreateMesh(this.format); // メッシュの生成・設定 Material[] materials = conv.CreateMaterials(this.format); // マテリアルの生成・設定 GameObject[] bones = conv.CreateBones(this.format); // ボーンの生成・設定 // バインドポーズの作成 conv.BuildingBindpose(this.format, mesh, materials, bones); obj.AddComponent<Animation>(); // アニメーションを追加 MMDEngine engine = obj.AddComponent<MMDEngine>(); // IKの登録 if (this.use_ik) engine.ik_list = conv.EntryIKSolver(this.format, bones); // 剛体関連 if (this.rigidFlag) { try { var rigids = conv.CreateRigids(this.format, bones); conv.AssignRigidbodyToBone(this.format, bones, rigids); conv.SetRigidsSettings(this.format, bones, rigids); conv.SettingJointComponent(this.format, bones, rigids); // 非衝突グループ List<int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(this.format, rigids); int[] groupTarget = conv.GetRigidbodyGroupTargets(this.format, rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids); } catch { } } // Mecanim設定 (not work yet..) #if UNITY_4_0 || UNITY_4_1 AvatarSettingScript avt_setting = new AvatarSettingScript(this.format.caller); avt_setting.SettingAvatar(); #endif // プレファブに登録 Object prefab = PrefabUtility.CreateEmptyPrefab(this.format.folder + "/" + format.name + ".prefab"); PrefabUtility.ReplacePrefab(this.format.caller, prefab); // アセットリストの更新 AssetDatabase.Refresh(); // 一度,表示されているモデルを削除して新しくPrefabのインスタンスを作る GameObject.DestroyImmediate(obj); PrefabUtility.InstantiatePrefab(prefab); }
/// <summary> /// GameObjectを作成する /// </summary> /// <param name='format'>内部形式データ</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='use_mecanim'>Mecanimを使用するか</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> private GameObject CreateGameObject_(PMXFormat format, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) { format_ = format; use_rigidbody_ = use_rigidbody; use_mecanim_ = use_mecanim; use_ik_ = use_ik; scale_ = scale; root_game_object_ = new GameObject(format_.meta_header.name); MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //MMDEngine追加 engine.scale = scale_; MeshCreationInfo[] creation_info = CreateMeshCreationInfo(); // メッシュを作成する為の情報を作成 Mesh[] mesh = CreateMesh(creation_info); // メッシュの生成・設定 Material[][] materials = CreateMaterials(creation_info); // マテリアルの生成・設定 GameObject[] bones = CreateBones(); // ボーンの生成・設定 SkinnedMeshRenderer[] renderers = BuildingBindpose(mesh, materials, bones); // バインドポーズの作成 CreateMorph(mesh, materials, bones, renderers, creation_info); // モーフの生成・設定 // BoneController・IKの登録(use_ik_を使った判定はEntryBoneController()の中で行う) { engine.bone_controllers = EntryBoneController(bones); engine.ik_list = engine.bone_controllers.Where(x=>null != x.ik_solver) .Select(x=>x.ik_solver) .ToArray(); } // 剛体関連 if (use_rigidbody_) { GameObject[] rigids = CreateRigids(); AssignRigidbodyToBone(bones, rigids); SetRigidsSettings(bones, rigids); GameObject[] joints = CreateJoints(rigids); GlobalizeRigidbody(joints); // 非衝突グループ List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids); int[] groupTarget = GetRigidbodyGroupTargets(rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids); } // Mecanim設定 #if UNITY_4_2 if (use_mecanim_) { //アニメーター追加 AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones); avatar_setting.SettingAvatar(); string path = format_.meta_header.folder + "/"; string name = GetFilePathString(format_.meta_header.name); string file_name = path + name + ".avatar.asset"; avatar_setting.CreateAsset(file_name); } else { root_game_object_.AddComponent<Animation>(); // アニメーション追加 } #else //UNITY_4_2 root_game_object_.AddComponent<Animation>(); // アニメーション追加 #endif //UNITY_4_2 return root_game_object_; }
//-------------------------------------------------------------------------------- // PMDファイルの読み込み // PMDファイルをUnity形式に変換 void BurnUnityFormatForPMD() { MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter(); GameObject obj = new GameObject(this.format.name); this.format.fst = this.fst; this.format.caller = obj; this.format.shader_type = this.shader_type; Mesh mesh = conv.CreateMesh(this.format); // メッシュの生成・設定 Material[] materials = conv.CreateMaterials(this.format); // マテリアルの生成・設定 GameObject[] bones = conv.CreateBones(this.format); // ボーンの生成・設定 // バインドポーズの作成 conv.BuildingBindpose(this.format, mesh, materials, bones); obj.AddComponent <Animation>(); // アニメーションを追加 MMDEngine engine = obj.AddComponent <MMDEngine>(); // IKの登録 if (this.use_ik) { engine.ik_list = conv.EntryIKSolver(this.format, bones); } // 剛体関連 if (this.rigidFlag) { try { var rigids = conv.CreateRigids(this.format, bones); conv.AssignRigidbodyToBone(this.format, bones, rigids); conv.SetRigidsSettings(this.format, bones, rigids); conv.SettingJointComponent(this.format, bones, rigids); // 非衝突グループ List <int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(this.format, rigids); int[] groupTarget = conv.GetRigidbodyGroupTargets(this.format, rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids); } catch { } } // Mecanim設定 (not work yet..) #if UNITY_4_0 || UNITY_4_1 AvatarSettingScript avt_setting = new AvatarSettingScript(this.format.caller); avt_setting.SettingAvatar(); #endif // プレファブに登録 Object prefab = PrefabUtility.CreateEmptyPrefab(this.format.folder + "/" + format.name + ".prefab"); PrefabUtility.ReplacePrefab(this.format.caller, prefab); // アセットリストの更新 AssetDatabase.Refresh(); // 一度,表示されているモデルを削除して新しくPrefabのインスタンスを作る GameObject.DestroyImmediate(obj); PrefabUtility.InstantiatePrefab(prefab); }
/// <summary> /// GameObjectを作成する /// </summary> /// <param name='format'>内部形式データ</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='animation_type'>アニメーションタイプ</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> private GameObject CreateGameObject_(PMXFormat format, bool use_rigidbody, AnimationType animation_type, bool use_ik, float scale) { format_ = format; use_ik_ = use_ik; scale_ = scale; root_game_object_ = new GameObject(format_.meta_header.name); MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //MMDEngine追加 //スケール・エッジ幅 engine.scale = scale_; engine.outline_width = 1.0f; engine.material_outline_widths = format.material_list.material.Select(x=>x.edge_size).ToArray(); engine.enable_render_queue = false; //初期値無効 const int c_render_queue_transparent = 3000; engine.render_queue_value = c_render_queue_transparent; MeshCreationInfo[] creation_info = CreateMeshCreationInfo(); // メッシュを作成する為の情報を作成 Mesh[] mesh = CreateMesh(creation_info); // メッシュの生成・設定 Material[][] materials = CreateMaterials(creation_info); // マテリアルの生成・設定 GameObject[] bones = CreateBones(); // ボーンの生成・設定 SkinnedMeshRenderer[] renderers = BuildingBindpose(mesh, materials, bones); // バインドポーズの作成 CreateMorph(mesh, materials, bones, renderers, creation_info); // モーフの生成・設定 // BoneController・IKの登録(use_ik_を使った判定はEntryBoneController()の中で行う) { engine.bone_controllers = EntryBoneController(bones); engine.ik_list = engine.bone_controllers.Where(x=>null != x.ik_solver) .Select(x=>x.ik_solver) .ToArray(); } // 剛体関連 if (use_rigidbody) { GameObject[] rigids = CreateRigids(); AssignRigidbodyToBone(bones, rigids); SetRigidsSettings(bones, rigids); GameObject[] joints = CreateJoints(rigids); GlobalizeRigidbody(joints); // 非衝突グループ List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids); int[] groupTarget = GetRigidbodyGroupTargets(rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids); } // Mecanim設定 if (AnimationType.LegacyAnimation != animation_type) { //アニメーター追加 AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones); switch (animation_type) { case AnimationType.GenericMecanim: //汎用アバターでのMecanim avatar_setting.SettingGenericAvatar(); break; case AnimationType.HumanMecanim: //人型アバターでのMecanim avatar_setting.SettingHumanAvatar(); break; default: throw new System.ArgumentException(); } string path = format_.meta_header.folder + "/"; string name = GetFilePathString(format_.meta_header.name); string file_name = path + name + ".avatar.asset"; avatar_setting.CreateAsset(file_name); } else { root_game_object_.AddComponent<Animation>(); // アニメーション追加 } return root_game_object_; }
private GameObject CreateGameObject_(PMDFormat format, ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) { format_ = format; shader_type_ = shader_type; use_rigidbody_ = use_rigidbody; use_mecanim_ = use_mecanim; use_ik_ = use_ik; scale_ = scale; root_game_object_ = new GameObject(format_.name); Mesh mesh = CreateMesh(); // メッシュの生成・設定 Material[] materials = CreateMaterials(); // マテリアルの生成・設定 GameObject[] bones = CreateBones(); // ボーンの生成・設定 // バインドポーズの作成 BuildingBindpose(mesh, materials, bones); MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //スケール・エッジ幅 engine.scale = scale_; engine.outline_width = default_outline_width; engine.material_outline_widths = Enumerable.Repeat(1.0f, materials.Length).ToArray(); // IKの登録 if (use_ik_) engine.ik_list = EntryIKSolver(bones); // 剛体関連 if (use_rigidbody_) { try { var rigids = CreateRigids(bones); AssignRigidbodyToBone(bones, rigids); SetRigidsSettings(bones, rigids); GameObject[] joints = SettingJointComponent(bones, rigids); GlobalizeRigidbody(joints); // 非衝突グループ List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids); int[] groupTarget = GetRigidbodyGroupTargets(rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids); } catch { } } // Mecanim設定 if (use_mecanim_) { AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones); avatar_setting.SettingHumanAvatar(); string path = format_.folder + "/"; string name = GetFilePathString(format_.name); string file_name = path + name + ".avatar.asset"; avatar_setting.CreateAsset(file_name); } else { root_game_object_.AddComponent<Animation>(); // アニメーション追加 } return root_game_object_; }
// PMDファイルをUnity形式に変換 void BurnUnityFormatForPMD(MMD.PMD.PMDFormat format) { format.fst = this.fst; obj = new GameObject(format.name); format.caller = obj; format.shader_type = this.shader_type; MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter(); this.mesh = conv.CreateMesh(format); // メッシュの生成・設定 this.materials = conv.CreateMaterials(format); // マテリアルの生成・設定 this.bones = conv.CreateBones(format); // ボーンの生成・設定 // バインドポーズの作成 conv.BuildingBindpose(format, this.mesh, this.materials, this.bones); obj.AddComponent<Animation>(); // アニメーションを追加 MMDEngine engine = obj.AddComponent<MMDEngine>(); // IKの登録 if(this.use_ik) engine.ik_list = conv.EntryIKSolver(format, this.bones); // 剛体関連 if (this.rigidFlag) { try { this.rigids = conv.CreateRigids(format, bones); conv.AssignRigidbodyToBone(format, this.bones, this.rigids); conv.SetRigidsSettings(format, this.bones, this.rigids); conv.SettingJointComponent(format, this.bones, this.rigids); // 非衝突グループ List<int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(format, this.rigids); int[] groupTarget = conv.GetRigidbodyGroupTargets(format, rigids); MMDEngine.Initialize(engine, groupTarget, ignoreGroups, this.rigids); } catch { } } #if UNITY_4_0 AvatarSettingScript avt_setting = new AvatarSettingScript(format.caller); avt_setting.SettingAvatar(); #endif var window = LoadedWindow.Init(); window.Text = format.head.comment; CreatePrefab(format); EndOfScript(format); }