private void MoveWithMe() { List <ChaFileAccessory.PartsInfo> _parts = ListPartsInfo(); foreach (Transform _ref_ca_slot in _baseNode.transform) { HemorrhoidsBusterChild _cmp = _ref_ca_slot.gameObject.GetComponent <HemorrhoidsBusterChild>(); int _slotIndex = _cmp.SlotIndex; ChaFileAccessory.PartsInfo _part = _parts[_slotIndex]; Transform _n_move = _cmp.N_move; { Transform _refe_N_move = _ref_ca_slot.Find("N_move"); _n_move.position = _refe_N_move.position; _n_move.rotation = _refe_N_move.rotation; _n_move.localScale = new Vector3(_baseNode.transform.localScale.x * _refe_N_move.localScale.x, _baseNode.transform.localScale.y * _refe_N_move.localScale.y, _baseNode.transform.localScale.z * _refe_N_move.localScale.z); _part.addMove[0, 0] = new Vector3(float.Parse((_n_move.localPosition.x * 100f).ToString("f2")), float.Parse((_n_move.localPosition.y * 100f).ToString("f2")), float.Parse((_n_move.localPosition.z * 100f).ToString("f2"))); _part.addMove[0, 1] = new Vector3(float.Parse(_n_move.localEulerAngles.x.ToString("f2")) % 360f, float.Parse(_n_move.localEulerAngles.y.ToString("f2")) % 360f, float.Parse(_n_move.localEulerAngles.z.ToString("f2")) % 360f); _part.addMove[0, 2] = new Vector3(float.Parse(_n_move.localScale.x.ToString("f2")), float.Parse(_n_move.localScale.y.ToString("f2")), float.Parse(_n_move.localScale.z.ToString("f2"))); } Transform _n_move2 = _cmp.N_move2; if (_n_move2 != null) { Transform _refe_N_move2 = _ref_ca_slot.Find("N_move2"); _n_move2.position = _refe_N_move2.position; _n_move2.rotation = _refe_N_move2.rotation; _n_move2.localScale = new Vector3(_baseNode.transform.localScale.x * _refe_N_move2.localScale.x, _baseNode.transform.localScale.y * _refe_N_move2.localScale.y, _baseNode.transform.localScale.z * _refe_N_move2.localScale.z); _part.addMove[1, 0] = new Vector3(float.Parse((_n_move2.localPosition.x * 100f).ToString("f2")), float.Parse((_n_move2.localPosition.y * 100f).ToString("f2")), float.Parse((_n_move2.localPosition.z * 100f).ToString("f2"))); _part.addMove[1, 1] = new Vector3(float.Parse(_n_move2.localEulerAngles.x.ToString("f2")) % 360f, float.Parse(_n_move2.localEulerAngles.y.ToString("f2")) % 360f, float.Parse(_n_move2.localEulerAngles.z.ToString("f2")) % 360f); _part.addMove[1, 2] = new Vector3(float.Parse(_n_move2.localScale.x.ToString("f2")), float.Parse(_n_move2.localScale.y.ToString("f2")), float.Parse(_n_move2.localScale.z.ToString("f2"))); } if (_slotIndex < 20) { byte[] _bytes = MessagePackSerializer.Serialize(_part); _chaCtrl.chaFile.coordinate[_chaCtrl.fileStatus.coordinateType].accessory.parts[_slotIndex] = MessagePackSerializer.Deserialize <ChaFileAccessory.PartsInfo>(_bytes); } } }
private void RefreshRefNode() { foreach (Transform _child in _baseNode.transform) { Destroy(_child.gameObject); } if (_selectedParent.IsNullOrEmpty()) { _needRefreshRefNode = false; return; } List <ChaFileAccessory.PartsInfo> _parts = ListPartsInfo(); for (int _slotIndex = 0; _slotIndex < _parts.Count; _slotIndex++) { if (!_checkboxList.ContainsKey(_slotIndex)) { continue; } if (!_checkboxList[_slotIndex]) { continue; } GameObject _ca_slot = _chaCtrl.GetAccessoryObject(_slotIndex); if (_ca_slot == null) { continue; } ChaReference.RefObjKey _key = (ChaReference.RefObjKey)Enum.Parse(typeof(ChaReference.RefObjKey), _parts[_slotIndex].parentKey); GameObject _referenceInfo = _chaCtrl.GetReferenceInfo(_key); GameObject _ref_ca_slot = new GameObject($"ref_ca_slot{_slotIndex:00}"); HemorrhoidsBusterChild _cmp = _ref_ca_slot.AddComponent <HemorrhoidsBusterChild>(); _cmp.SlotIndex = _slotIndex; _ref_ca_slot.transform.SetParent(_baseNode.transform, false); _ref_ca_slot.transform.position = _referenceInfo.transform.position; _ref_ca_slot.transform.rotation = _referenceInfo.transform.rotation; _ref_ca_slot.transform.localScale = new Vector3(_referenceInfo.transform.localScale.x / _baseNode.transform.localScale.x, _referenceInfo.transform.localScale.y / _baseNode.transform.localScale.y, _referenceInfo.transform.localScale.z / _baseNode.transform.localScale.z); Transform _n_move = _ca_slot.GetComponentsInChildren <Transform>().Where(x => x.name == "N_move").FirstOrDefault(); if (_n_move == null) { continue; } _cmp.N_move = _n_move; GameObject _refe_N_move = new GameObject($"N_move"); _refe_N_move.transform.SetParent(_ref_ca_slot.transform, false); _refe_N_move.transform.position = _n_move.position; _refe_N_move.transform.rotation = _n_move.rotation; _refe_N_move.transform.localScale = new Vector3(_n_move.localScale.x / _baseNode.transform.localScale.x, _n_move.localScale.y / _baseNode.transform.localScale.y, _n_move.localScale.z / _baseNode.transform.localScale.z); Transform _n_move2 = _ca_slot.GetComponentsInChildren <Transform>().Where(x => x.name == "N_move2").FirstOrDefault(); if (_n_move2 != null && !_n_move.GetComponentsInChildren <Transform>().Any(x => x.name == "N_move2")) { _cmp.N_move2 = _n_move2; GameObject _refe_N_move2 = new GameObject($"N_move2"); _refe_N_move2.transform.SetParent(_ref_ca_slot.transform, true); _refe_N_move2.transform.position = _n_move2.position; _refe_N_move2.transform.rotation = _n_move2.rotation; _refe_N_move2.transform.localScale = new Vector3(_n_move2.localScale.x / _baseNode.transform.localScale.x, _n_move2.localScale.y / _baseNode.transform.localScale.y, _n_move2.localScale.z / _baseNode.transform.localScale.z); } } _needRefreshRefNode = false; }