//transSlot = null ,means weapon model to default node public void SwitchWeaponTo(Transform transSlot, FC_EQUIPMENTS_TYPE weaponTypeFlag) { bool ret = false; if (weaponTypeFlag == FC_EQUIPMENTS_TYPE.MAX || weaponTypeFlag == _weaponType) { ret = true; } foreach (BladeInfo bi in _bladeInfos) { if (ret || weaponTypeFlag == bi._bladeType) { if (transSlot == null) { Utils.SetParent(bi._bladeTransform, bi._originalTransform); bi._currentTransform = null; } else { Utils.SetParent(bi._bladeTransform, transSlot); bi._currentTransform = transSlot; } } } }
public void SwitchWeaponTo(EnumEquipSlot slot, FC_EQUIPMENTS_TYPE weaponTypeFlag) { //bool ret = false; Transform transSlot = null; if (slot != EnumEquipSlot.MAX) { transSlot = _owner._avatarController.GetSlotNode(slot); } SwitchWeaponTo(transSlot, weaponTypeFlag); }
virtual public void OnAssembled(EnumEquipSlot slot, GameObject go, FC_EQUIPMENTS_TYPE equipmentType) { }
public static void ReleaseBlade(FCWeapon ewn, bool openIt, FC_EQUIPMENTS_TYPE weaponTypeFlag, AttackBase ab) { ActionController ac = ewn._owner; int bladeLayer = FCConst.LAYER_DEFAULT; if (openIt) { if (ab._canHitAll) { bladeLayer = FCConst.LAYER_ENEMY_WEAPON; } else { bladeLayer = (int)ac.Faction + 1; } ewn._attackInfo._attackPoints = ac.TotalAttackPoints; ewn._attackInfo._isFromSkill = ewn._owner.IsFromSkill; ewn._attackInfo._damageScale = ab.DamageScale; ewn._attackInfo._pushStrength = ab._pushStrength; ewn._attackInfo._pushTime = ab._pushTime; ewn._attackInfo._pushAngle = ab._pushAngle; ewn._attackInfo._pushByPoint = ab._pushByPoint; ewn._attackInfo._damageType = ab.GetDamageType(); } else { ewn._attackInfo._pushStrength = 0; ewn._attackInfo._pushTime = 0; ewn._attackInfo._damageType = FC_DAMAGE_TYPE.NONE; } int ewt = (int)ewn._weaponType; int wt = (int)weaponTypeFlag; if (weaponTypeFlag == FC_EQUIPMENTS_TYPE.MAX || ewn._weaponType == weaponTypeFlag || ewt >= 1500 && ewt / 10 == wt / 10) { foreach (BladeInfo bi in ewn._bladeInfos) { if (ab != null) { if (weaponTypeFlag != FC_EQUIPMENTS_TYPE.WEAPON_LIGHT && weaponTypeFlag != FC_EQUIPMENTS_TYPE.WEAPON_THIGH && weaponTypeFlag != FC_EQUIPMENTS_TYPE.MAX) { if (weaponTypeFlag != bi._bladeType) { continue; } } ReleaseBlade(bi, bladeLayer, openIt, ab._weaponScaleX, ab._weaponScaleY, ab._weaponScaleZ, !ab._needNotHitID); } else { ReleaseBlade(bi, bladeLayer, openIt, 1, 1, 1, true); } } } /*else * { * foreach(BladeInfo bi in ewn._bladeInfos) * { * if(ab != null) * { * ReleaseBlade(bi, bladeLayer, openIt, ab._weaponScaleX, ab._weaponScaleY, ab._weaponScaleZ); * } * else * { * ReleaseBlade(bi, bladeLayer, openIt, 1, 1, 1); * } * } * }*/ }
public override void OnAssembled(EnumEquipSlot slot, GameObject go, FC_EQUIPMENTS_TYPE equipmentType) { //_bladeInfosIdx = 0; if (_bladeInfos != null && _bladeInfosIdx >= _bladeInfos.Length) { _bladeInfosIdx = 0; } Transform [] transforms = go.GetComponentsInChildren <Transform>(); List <GameObject> gl = new List <GameObject>(); List <MessageReciever> ml = new List <MessageReciever>(); List <BladeSlide> bl = new List <BladeSlide>(); _bladeInfos[_bladeInfosIdx] = new BladeInfo(); _bladeInfos[_bladeInfosIdx]._bladeType = equipmentType; _bladeInfos[_bladeInfosIdx]._bladeTransform = go.transform; _bladeInfos[_bladeInfosIdx]._originalTransform = go.transform.parent; _bladeInfos[_bladeInfosIdx]._currentTransform = go.transform.parent; foreach (Transform t in transforms) { GameObject subgo = t.gameObject; Collider c = subgo.GetComponent <Collider>(); if (c != null) { gl.Add(subgo); } MessageReciever mr = subgo.GetComponent <MessageReciever>(); if (mr != null) { ml.Add(mr); } BladeSlide blade = subgo.GetComponent <BladeSlide>(); if (blade != null) { bl.Add(blade); } } _bladeInfos[_bladeInfosIdx]._colliders = gl.ToArray(); _bladeInfos[_bladeInfosIdx]._messageReceivers = ml.ToArray(); _bladeInfos[_bladeInfosIdx]._bladerCenter = new Vector3[_bladeInfos[_bladeInfosIdx]._colliders.Length]; _bladeInfos[_bladeInfosIdx]._bladerSize = new Vector3[_bladeInfos[_bladeInfosIdx]._colliders.Length]; _bladeInfos[_bladeInfosIdx]._bladeReal = new BoxCollider[_bladeInfos[_bladeInfosIdx]._colliders.Length]; _bladeInfos [_bladeInfosIdx].cubes = new GameObject[_bladeInfos [_bladeInfosIdx]._colliders.Length]; if (_bladeInfos[_bladeInfosIdx]._colliders.Length != 0) { for (int i = 0; i < _bladeInfos[_bladeInfosIdx]._colliders.Length; i++) { _bladeInfos[_bladeInfosIdx]._bladeReal[i] = _bladeInfos[_bladeInfosIdx]._colliders[i].collider as BoxCollider; _bladeInfos[_bladeInfosIdx]._bladerCenter[i] = _bladeInfos[_bladeInfosIdx]._bladeReal[i].center; _bladeInfos[_bladeInfosIdx]._bladerSize[i] = _bladeInfos[_bladeInfosIdx]._bladeReal[i].size; _bladeInfos[_bladeInfosIdx].cubes[i] = GameObject.CreatePrimitive(PrimitiveType.Cube); _bladeInfos[_bladeInfosIdx].cubes[i].transform.parent = go.transform; _bladeInfos[_bladeInfosIdx].cubes[i].transform.gameObject.SetActive(false); } } _bladeInfos[_bladeInfosIdx]._bladeSlide = bl.ToArray(); _bladeInfosIdx++; }