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);
                    }
                }
            }
Example #2
0
    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;
        }
    }
Example #3
0
            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);
            }