// Token: 0x06000052 RID: 82 RVA: 0x000070F0 File Offset: 0x000052F0 public static void Postfix(ItemFKCtrl __instance, OCIItem _ociItem, Info.ItemLoadInfo _loadInfo, bool _isNew) { try { IList list = (IList)__instance.GetPrivate("listBones"); if (list.Count > 0) { FieldInfo field = list[0].GetType().GetField("changeAmount", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); MethodInfo method = list[0].GetType().GetMethod("Update", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); foreach (object obj in list) { ChangeAmount changeAmount = (ChangeAmount)field.GetValue(obj); changeAmount.onChangeRot = (Action)Delegate.CreateDelegate(typeof(Action), obj, method); changeAmount.onChangeRot(); } } } catch (Exception) { } }
private static Info.ItemLoadInfo GetLoadInfo(int _group, int _category, int _no) { Dictionary <int, Dictionary <int, Info.ItemLoadInfo> > dictionary1 = (Dictionary <int, Dictionary <int, Info.ItemLoadInfo> >)null; if (!Singleton <Info> .Instance.dicItemLoadInfo.TryGetValue(_group, out dictionary1)) { return((Info.ItemLoadInfo)null); } Dictionary <int, Info.ItemLoadInfo> dictionary2 = (Dictionary <int, Info.ItemLoadInfo>)null; if (!dictionary1.TryGetValue(_category, out dictionary2)) { return((Info.ItemLoadInfo)null); } Info.ItemLoadInfo itemLoadInfo = (Info.ItemLoadInfo)null; if (dictionary2.TryGetValue(_no, out itemLoadInfo)) { return(itemLoadInfo); } Debug.LogWarning((object)string.Format("存在しない番号[{0}]", (object)_no)); return((Info.ItemLoadInfo)null); }
public void InitBone(OCIItem _ociItem, Info.ItemLoadInfo _loadInfo, bool _isNew) { Transform transform = _ociItem.objectItem.get_transform(); _ociItem.listBones = new List <OCIChar.BoneInfo>(); foreach (string bone in _loadInfo.bones) { GameObject loop = transform.FindLoop(bone); if (Object.op_Equality((Object)loop, (Object)null)) { Debug.LogWarning((object)string.Format("無い : {0}", (object)bone)); } else { OIBoneInfo _boneInfo = (OIBoneInfo)null; if (!_ociItem.itemInfo.bones.TryGetValue(bone, out _boneInfo)) { _boneInfo = new OIBoneInfo(Studio.Studio.GetNewIndex()); _ociItem.itemInfo.bones.Add(bone, _boneInfo); } GuideObject _guideObject = Singleton <GuideObjectManager> .Instance.Add(loop.get_transform(), _boneInfo.dicKey); _guideObject.enablePos = false; _guideObject.enableScale = false; _guideObject.enableMaluti = false; _guideObject.calcScale = false; _guideObject.scaleRate = 0.5f; _guideObject.scaleRot = 0.025f; _guideObject.scaleSelect = 0.05f; _guideObject.parentGuide = _ociItem.guideObject; _ociItem.listBones.Add(new OCIChar.BoneInfo(_guideObject, _boneInfo, -1)); _guideObject.SetActive(false, true); this.listBones.Add(new ItemFKCtrl.TargetInfo(loop, _boneInfo.changeAmount, _isNew)); } } this.count = this.listBones.Count; }
// Token: 0x06000051 RID: 81 RVA: 0x00006D0C File Offset: 0x00004F0C public static bool Prefix(ItemFKCtrl __instance, OCIItem _ociItem, Info.ItemLoadInfo _loadInfo, bool _isNew) { bool result; try { if ((_loadInfo != null && _loadInfo.bones.Count > 0) || (_ociItem.animator != null && _ociItem.animator.enabled)) { result = true; } else { Transform transform = _ociItem.objectItem.transform; HashSet <Transform> hashSet = new HashSet <Transform>(); foreach (Renderer renderer in transform.GetComponentsInChildren <Renderer>(true)) { SkinnedMeshRenderer skinnedMeshRenderer; if ((skinnedMeshRenderer = (renderer as SkinnedMeshRenderer)) != null) { foreach (Transform transform2 in skinnedMeshRenderer.bones) { if (!(transform2 == null) && !hashSet.Contains(transform2) && !(transform2 == transform)) { hashSet.Add(transform2); } } } else if (renderer is MeshRenderer && !hashSet.Contains(renderer.transform)) { if (!renderer.name.Substring(0, renderer.name.Length - 1).EndsWith("MeshPart")) { if (renderer.transform != transform) { hashSet.Add(renderer.transform); } } else if (!hashSet.Contains(renderer.transform.parent) && renderer.transform.parent != transform) { hashSet.Add(renderer.transform.parent); } } } _ociItem.listBones = new List <OCIChar.BoneInfo>(); IList list = (IList)__instance.GetPrivate("listBones"); ConstructorInfo constructor = list.GetType().GetGenericArguments()[0].GetConstructor(new Type[] { typeof(GameObject), typeof(ChangeAmount), typeof(bool) }); int num = 0; foreach (Transform transform3 in hashSet) { OIBoneInfo oiboneInfo = null; string pathFrom = transform3.GetPathFrom(transform); if (!_ociItem.itemInfo.bones.TryGetValue(pathFrom, out oiboneInfo)) { oiboneInfo = new OIBoneInfo(Studio.Studio.GetNewIndex()) { changeAmount = { pos = transform3.localPosition, rot = transform3.localEulerAngles, scale = transform3.localScale } }; _ociItem.itemInfo.bones.Add(pathFrom, oiboneInfo); } GuideObject guideObject = Singleton <GuideObjectManager> .Instance.Add(transform3, oiboneInfo.dicKey); guideObject.enablePos = false; guideObject.enableScale = false; guideObject.enableMaluti = false; guideObject.calcScale = false; guideObject.scaleRate = 0.5f; guideObject.scaleRot = 0.025f; guideObject.scaleSelect = 0.05f; guideObject.parentGuide = _ociItem.guideObject; _ociItem.listBones.Add(new OCIChar.BoneInfo(guideObject, oiboneInfo)); guideObject.SetActive(false, true); object value = constructor.Invoke(new object[] { transform3.gameObject, oiboneInfo.changeAmount, _isNew }); list.Add(value); num++; } __instance.GetType().GetProperty("count", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy).SetValue(__instance, num, null); if (_isNew) { __instance.ExecuteDelayed(delegate { _ociItem.ActiveFK(false); }, 1); } else { __instance.ExecuteDelayed(delegate { _ociItem.ActiveFK(_ociItem.itemFKCtrl.enabled); }, 1); } result = false; } } catch (Exception) { result = false; } return(result); }
public static OCIItem Load( OIItemInfo _info, ObjectCtrlInfo _parent, TreeNodeObject _parentNode, bool _addInfo, int _initialPosition) { OCIItem _ociItem = new OCIItem(); Info.ItemLoadInfo loadInfo = AddObjectItem.GetLoadInfo(_info.group, _info.category, _info.no); if (loadInfo == null) { Debug.LogWarningFormat("存在しない : G[{0}] : C[{1}] : N[{2}]", new object[3] { (object)_info.group, (object)_info.category, (object)_info.no }); loadInfo = AddObjectItem.GetLoadInfo(0, 0, 399); } _ociItem.objectInfo = (ObjectInfo)_info; GameObject gameObject = CommonLib.LoadAsset <GameObject>(loadInfo.bundlePath, loadInfo.fileName, true, loadInfo.manifest); if (Object.op_Equality((Object)gameObject, (Object)null)) { Debug.LogError((object)string.Format("読み込み失敗 : {0} : {1} : {2}", (object)loadInfo.manifest, (object)loadInfo.bundlePath, (object)loadInfo.fileName)); Studio.Studio.DeleteIndex(_info.dicKey); return((OCIItem)null); } gameObject.get_transform().SetParent(Singleton <Scene> .Instance.commonSpace.get_transform()); _ociItem.objectItem = gameObject; _ociItem.itemComponent = (ItemComponent)gameObject.GetComponent <ItemComponent>(); _ociItem.arrayRender = ((IEnumerable <Renderer>)gameObject.GetComponentsInChildren <Renderer>()).Where <Renderer>((Func <Renderer, bool>)(v => v.get_enabled())).ToArray <Renderer>(); ParticleSystem[] componentsInChildren = (ParticleSystem[])gameObject.GetComponentsInChildren <ParticleSystem>(); if (!((IList <ParticleSystem>)componentsInChildren).IsNullOrEmpty <ParticleSystem>()) { _ociItem.arrayParticle = ((IEnumerable <ParticleSystem>)componentsInChildren).Where <ParticleSystem>((Func <ParticleSystem, bool>)(v => v.get_isPlaying())).ToArray <ParticleSystem>(); } MeshCollider component = (MeshCollider)gameObject.GetComponent <MeshCollider>(); if (Object.op_Implicit((Object)component)) { ((Collider)component).set_enabled(false); } _ociItem.dynamicBones = (DynamicBone[])gameObject.GetComponentsInChildren <DynamicBone>(); GuideObject guideObject = Singleton <GuideObjectManager> .Instance.Add(gameObject.get_transform(), _info.dicKey); guideObject.isActive = false; guideObject.scaleSelect = 0.1f; guideObject.scaleRot = 0.05f; guideObject.isActiveFunc += new GuideObject.IsActiveFunc(((ObjectCtrlInfo)_ociItem).OnSelect); guideObject.enableScale = !Object.op_Inequality((Object)_ociItem.itemComponent, (Object)null) || _ociItem.itemComponent.isScale; guideObject.SetVisibleCenter(true); _ociItem.guideObject = guideObject; if (Object.op_Inequality((Object)_ociItem.itemComponent, (Object)null) && Object.op_Inequality((Object)_ociItem.itemComponent.childRoot, (Object)null)) { _ociItem.childRoot = _ociItem.itemComponent.childRoot; } if (Object.op_Equality((Object)_ociItem.childRoot, (Object)null)) { _ociItem.childRoot = gameObject.get_transform(); } _ociItem.animator = (Animator)gameObject.GetComponentInChildren <Animator>(); if (Object.op_Implicit((Object)_ociItem.animator)) { ((Behaviour)_ociItem.animator).set_enabled(Object.op_Inequality((Object)_ociItem.itemComponent, (Object)null) && _ociItem.itemComponent.isAnime); } if (Object.op_Inequality((Object)_ociItem.itemComponent, (Object)null)) { _ociItem.itemComponent.SetGlass(); _ociItem.itemComponent.SetEmission(); if (_addInfo && _ociItem.itemComponent.check) { Color[] defColorMain = _ociItem.itemComponent.defColorMain; for (int index = 0; index < 3; ++index) { _info.colors[index].mainColor = defColorMain[index]; } Color[] defColorPattern = _ociItem.itemComponent.defColorPattern; for (int index = 0; index < 3; ++index) { _info.colors[index].pattern.color = defColorPattern[index]; _info.colors[index].metallic = _ociItem.itemComponent.info[index].defMetallic; _info.colors[index].glossiness = _ociItem.itemComponent.info[index].defGlossiness; _info.colors[index].pattern.clamp = _ociItem.itemComponent.info[index].defClamp; _info.colors[index].pattern.uv = _ociItem.itemComponent.info[index].defUV; _info.colors[index].pattern.rot = _ociItem.itemComponent.info[index].defRot; } _info.colors[3].mainColor = _ociItem.itemComponent.defGlass; _info.emissionColor = _ociItem.itemComponent.DefEmissionColor; _info.emissionPower = _ociItem.itemComponent.defEmissionStrength; _info.lightCancel = _ociItem.itemComponent.defLightCancel; } _ociItem.itemComponent.SetupSea(); } _ociItem.particleComponent = (ParticleComponent)gameObject.GetComponent <ParticleComponent>(); if (Object.op_Inequality((Object)_ociItem.particleComponent, (Object)null) && _addInfo) { _info.colors[0].mainColor = _ociItem.particleComponent.defColor01; } _ociItem.iconComponent = (IconComponent)gameObject.GetComponent <IconComponent>(); if (Object.op_Inequality((Object)_ociItem.iconComponent, (Object)null)) { _ociItem.iconComponent.Layer = LayerMask.NameToLayer("Studio/Camera"); } _ociItem.VisibleIcon = Singleton <Studio.Studio> .Instance.workInfo.visibleGimmick; _ociItem.panelComponent = (PanelComponent)gameObject.GetComponent <PanelComponent>(); if (_addInfo && Object.op_Inequality((Object)_ociItem.panelComponent, (Object)null)) { _info.colors[0].mainColor = _ociItem.panelComponent.defColor; _info.colors[0].pattern.uv = _ociItem.panelComponent.defUV; _info.colors[0].pattern.clamp = _ociItem.panelComponent.defClamp; _info.colors[0].pattern.rot = _ociItem.panelComponent.defRot; } _ociItem.seComponent = (SEComponent)gameObject.GetComponent <SEComponent>(); if (_addInfo && Object.op_Inequality((Object)_ociItem.itemComponent, (Object)null) && !((IList <ItemComponent.OptionInfo>)_ociItem.itemComponent.optionInfos).IsNullOrEmpty <ItemComponent.OptionInfo>()) { _info.option = Enumerable.Repeat <bool>(true, _ociItem.itemComponent.optionInfos.Length).ToList <bool>(); } if (_addInfo) { Studio.Studio.AddInfo((ObjectInfo)_info, (ObjectCtrlInfo)_ociItem); } else { Studio.Studio.AddObjectCtrlInfo((ObjectCtrlInfo)_ociItem); } TreeNodeObject _parent1 = !Object.op_Inequality((Object)_parentNode, (Object)null) ? (_parent == null ? (TreeNodeObject)null : _parent.treeNodeObject) : _parentNode; TreeNodeObject treeNodeObject = Studio.Studio.AddNode(loadInfo.name, _parent1); treeNodeObject.treeState = _info.treeState; treeNodeObject.onVisible += new TreeNodeObject.OnVisibleFunc(((ObjectCtrlInfo)_ociItem).OnVisible); treeNodeObject.enableVisible = true; treeNodeObject.visible = _info.visible; guideObject.guideSelect.treeNodeObject = treeNodeObject; _ociItem.treeNodeObject = treeNodeObject; if (!loadInfo.bones.IsNullOrEmpty <string>()) { _ociItem.itemFKCtrl = (ItemFKCtrl)gameObject.AddComponent <ItemFKCtrl>(); _ociItem.itemFKCtrl.InitBone(_ociItem, loadInfo, _addInfo); } else { _ociItem.itemFKCtrl = (ItemFKCtrl)null; } if (_initialPosition == 1) { _info.changeAmount.pos = Singleton <Studio.Studio> .Instance.cameraCtrl.targetPos; } _info.changeAmount.OnChange(); Studio.Studio.AddCtrlInfo((ObjectCtrlInfo)_ociItem); _parent?.OnLoadAttach(!Object.op_Inequality((Object)_parentNode, (Object)null) ? _parent.treeNodeObject : _parentNode, (ObjectCtrlInfo)_ociItem); if (Object.op_Implicit((Object)_ociItem.animator)) { if (_info.animePattern != 0) { _ociItem.SetAnimePattern(_info.animePattern); } _ociItem.animator.set_speed(_info.animeSpeed); if ((double)_info.animeNormalizedTime != 0.0 && _ociItem.animator.get_layerCount() != 0) { _ociItem.animator.Update(1f); AnimatorStateInfo animatorStateInfo = _ociItem.animator.GetCurrentAnimatorStateInfo(0); _ociItem.animator.Play(((AnimatorStateInfo) ref animatorStateInfo).get_shortNameHash(), 0, _info.animeNormalizedTime); } } _ociItem.SetupPatternTex(); _ociItem.SetMainTex(); _ociItem.UpdateColor(); _ociItem.ActiveFK(_ociItem.itemInfo.enableFK); _ociItem.UpdateFKColor(); _ociItem.ActiveDynamicBone(_ociItem.itemInfo.enableDynamicBone); _ociItem.UpdateOption(); _ociItem.particleComponent?.PlayOnLoad(); return(_ociItem); }