public void Create(Transform parent) { ProjectileData data = ProjectileData.GetProjectileData(m_ID); if (data == null || m_Caster == null) { return; } GameObject go = Resources.Load(data._path) as GameObject; if (go != null) { GameObject obj = Instantiate(go) as GameObject; obj.transform.parent = parent; obj.transform.position = GetPosition(); obj.transform.rotation = GetRotation(); SkProjectile projectile = obj.GetComponent <SkProjectile>(); if (projectile != null) { projectile.SetData(data, m_Caster, m_Emitter, GetTargetTrans(), GetTargetPosition(), m_Index); } EffectLateupdateHelper helper = obj.GetComponent <EffectLateupdateHelper>(); if (null != helper) { helper.Init(m_Emitter); } } }
public override void InitEquipment(PeEntity entity, ItemAsset.ItemObject itemObj) { base.InitEquipment(entity, itemObj); m_ItemAmmoAttr = itemObj.GetCmpt <ItemAsset.GunAmmo>(); if (null != m_ItemAmmoAttr) { if (null != m_AmmoItemIDList && m_AmmoItemIDList.Length > m_ItemAmmoAttr.index) { m_CurAmmoItemIndex = m_ItemAmmoAttr.index; } if (null != m_Magazine) { if (m_ItemAmmoAttr.count < 0) { m_ItemAmmoAttr.count = (int)magazineSize; } m_Magazine.m_Value = m_ItemAmmoAttr.count; } } m_ShellCaseTrans = PETools.PEUtil.GetChild(transform, "ShellCase"); m_View = entity.biologyViewCmpt; if (null != m_View && null != m_MagazineObj) { if (null != m_View) { m_View.AttachObject(m_MagazineObj, "mountOff"); m_MagazineObj.transform.localPosition = Vector3.zero; m_MagazineObj.transform.localRotation = Quaternion.identity; } } if (null != m_ChargeEffectGo) { EffectLateupdateHelper effect = m_ChargeEffectGo.AddComponent <EffectLateupdateHelper>(); effect.Init(m_ChargeEffectGo.transform.parent); m_ChargeEffectGo.transform.parent = Pathea.Effect.EffectBuilder.Instance.transform; } }
public override GameObject Create() { if (m_EffectData == null || _bone == null) { return(null); } //GameObject proto = AssetsLoader.Instance.LoadPrefabImm(data.m_path) as GameObject; GameObject proto = Instance.GetEffect(m_EffectData.m_path); if (proto != null) { //StartCoroutine(InstantiateCoroutine(proto, bone, data.m_Axis, data.m_liveTime, data.m_bind)); Quaternion rot = Quaternion.identity; if (m_EffectData.m_Rot) { rot = _bone.rotation; } GameObject effect = Instantiate(proto, _bone.position, rot) as GameObject; //effect.AddComponent<DestroyTimer>().m_LifeTime = data.m_liveTime; if (m_EffectData.m_liveTime > -PETools.PEMath.Epsilon) { GameObject.DestroyObject(effect, m_EffectData.m_liveTime); } if (m_EffectData.m_bind) { EffectLateupdateHelper lateU = effect.GetComponent <EffectLateupdateHelper>(); if (null != lateU) { lateU.Init(_bone); if (m_EffectData.m_posStr == "CenterPos") { PeEntity entity = _rootTrans.GetComponentInParent <PeEntity>(); if (entity != null) { lateU.local = entity.bounds.center; HitEffectScale scaleEffect = effect.GetComponent <HitEffectScale>(); if (scaleEffect != null) { scaleEffect.Scale = entity.maxRadius * 2.0f; if (entity.peTrans != null) { scaleEffect.EmissionScale = entity.peTrans.bound.size; } } } } } } if (m_Data != null) { Profiler.BeginSample("GetMono"); MonoBehaviour[] behaviours = effect.GetComponentsInChildren <MonoBehaviour>(); Profiler.EndSample(); foreach (MonoBehaviour behaviour in behaviours) { SkInst inst = m_Data as SkInst; ISkEffectEntity skEffect = behaviour as ISkEffectEntity; if (inst != null && skEffect != null && !skEffect.Equals(null)) { skEffect.Inst = inst; } } } OnSpawned(effect); return(effect); } return(null); }