Пример #1
0
            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);
                    }
                }
            }
Пример #2
0
            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;
            }