/// <summary> /// 描画関係はバインダーに、ボーン関係はメインに関連付ける /// </summary> public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { var skinnedMeshRenderers = this.GetComponentsInChildren <SkinnedMeshRenderer>(); var qMesh = skinnedMeshRenderers.Select(x => x.sharedMesh); var bones = skinnedMeshRenderers.First().bones.Where(x => !x.name.StartsWith("_")).ToArray(); var top = this.gameObject; var main = top.Children().First(); createModelEntity_(conversionSystem, top, this.MaterialToDraw, qMesh, bones); initBinderEntity_(conversionSystem, top, main); initMainEntity_(conversionSystem, top, main); conversionSystem.CreateBoneEntities(main, bones); conversionSystem.CreateDrawInstanceEntities(top, main, bones, BoneType.TR, 0); return; void createModelEntity_ ( GameObjectConversionSystem gcs_, GameObject top_, Material srcMaterial, IEnumerable <Mesh> srcMeshes, Transform[] bones_ ) { var mat = new Material(srcMaterial); var mesh = DrawModelEntityConvertUtility.CombineAndConvertMesh(srcMeshes, bones_); const BoneType BoneType = BoneType.TR; gcs_.CreateDrawModelEntityComponents(top_, mesh, mat, BoneType, bones_.Length); } void initBinderEntity_(GameObjectConversionSystem gcs_, GameObject top_, GameObject main_) { var em_ = gcs_.DstEntityManager; var binderEntity = gcs_.GetPrimaryEntity(top_); var mainEntity = gcs_.GetPrimaryEntity(main_); var binderAddtypes = new ComponentTypes ( typeof(BinderTrimBlankLinkedEntityGroupTag), typeof(ObjectBinder.MainEntityLinkData) ); em_.AddComponents(binderEntity, binderAddtypes); em_.SetComponentData(binderEntity, new ObjectBinder.MainEntityLinkData { MainEntity = mainEntity }); em_.SetName_(binderEntity, $"{top_.name} binder"); } void initMainEntity_(GameObjectConversionSystem gcs_, GameObject top_, GameObject main_) { var em_ = gcs_.DstEntityManager; var binderEntity = gcs_.GetPrimaryEntity(top_); var mainEntity = gcs_.GetPrimaryEntity(main_); var mainAddtypes = new ComponentTypes ( typeof(ObjectMain.ObjectMainTag), typeof(ObjectMain.BinderLinkData), typeof(ObjectMainCharacterLinkData) //typeof(ObjectMain.MotionLinkDate) ); em_.AddComponents(mainEntity, mainAddtypes); em_.SetComponentData(mainEntity, new ObjectMain.BinderLinkData { BinderEntity = binderEntity, } ); em_.SetComponentData(mainEntity, new ObjectMainCharacterLinkData { PostureEntity = mainEntity, // } ); em_.SetName_(mainEntity, $"{top_.name} main"); } }