예제 #1
0
    // Control Function -----------------------------------------------------------------
    void CreateAttachPrefab(Vector3 position, float size)
    {
        if (m_AttachPrefab == null)
        {
            return;
        }
        GameObject createGameObject = (GameObject)CreateGameObject(m_AttachPrefab, m_AttachPrefab.transform.position + position, m_AttachPrefab.transform.rotation);

        if (createGameObject == null)
        {
            return;
        }
        // Change Parent
        ChangeParent(GetRootInstanceEffect().transform, createGameObject.transform, false, null);
        NcTransformTool.CopyLossyToLocalScale(createGameObject.transform.lossyScale * size, createGameObject.transform);

        // PrefabAdjustSpeed
        NsEffectManager.AdjustSpeedRuntime(createGameObject, m_fPrefabSpeed);

        // m_fPrefabLifeTime
        if (0 < m_fPrefabLifeTime)
        {
            NcAutoDestruct ncAd = createGameObject.GetComponent <NcAutoDestruct>();
            if (ncAd == null)
            {
                ncAd = createGameObject.AddComponent <NcAutoDestruct>();
            }
            ncAd.m_fLifeTime = m_fPrefabLifeTime;
        }
    }
예제 #2
0
 // Function --------------------------------------------------------------------
 // Loop Function --------------------------------------------------------------------
 // Control Function -----------------------------------------------------------------
 // Event Function -------------------------------------------------------------------
 public override void OnUpdateEffectSpeed(float fSpeedRate, bool bRuntime)
 {
     if (bRuntime)
     {
         NsEffectManager.AdjustSpeedRuntime(m_LinkGameObject, fSpeedRate);
     }
 }
예제 #3
0
    public static Transform SpawnEffect(string prefabName, Vector3 posAndRot, Quaternion spawnRot, float speed = 1)
    {
        //	    Debug.LogError("2JW : G_GameInfo.SpawnEffect() In - " + prefabName);
        if (!PoolManager.Pools["Effect"].prefabs.ContainsKey(prefabName))
        {
            CreateNewEffectPoolItem(prefabName, () => { SpawnEffect(prefabName, posAndRot, spawnRot, speed); });
            return(null);
        }

        Transform spawned;

        if (posAndRot != Vector3.zero)
        {
            spawned = PoolManager.Pools["Effect"].Spawn(prefabName, posAndRot, spawnRot);
        }
        else
        {
            spawned = PoolManager.Pools["Effect"].Spawn(prefabName);
        }

        // 최대 이펙트 스피드는 0.5f배로. 4배이상은 안나오는게 많음.
        speed = Mathf.Clamp(speed, 0.5f, 4f);
        NsEffectManager.AdjustSpeedRuntime(spawned.gameObject, speed);

        return(spawned);
    }
예제 #4
0
    /// 이펙트 폴더에 존재하는 프리팹을 스폰시켜준다.
    public static Transform SpawnEffect(string prefabName, float speed = 1f, Transform posAndRot = null, Transform parent = null, Vector3 scale = default(Vector3), System.Action <Transform> call = null)
    {
        if (_GameInfo == null || _GameInfo.effectPool == null)
        {
            if (TempOriEffectsDic.ContainsKey(prefabName))
            //AssetbundleLoader.GetEffect(prefabName, (trn) =>
            {
                //< 인게임이 아닌곳에서 호출한것이기때문에 생성해서 붙여주고 리턴해줌
                //GameObject obj = TaskManager.Instantiate(trn) as GameObject;
                GameObject obj = TaskManager.Instantiate(TempOriEffectsDic[prefabName]) as GameObject;

                if (parent != null)
                {
                    obj.transform.parent = parent;
                }

                if (posAndRot != null)
                {
                    obj.transform.position = posAndRot.transform.position;
                    obj.transform.rotation = posAndRot.transform.rotation;
                }

                if (call != null)
                {
                    call(obj.transform);
                }
            }//, false);
            return(null);
        }

        if (!PoolManager.Pools["Effect"].prefabs.ContainsKey(prefabName))
        {
            CreateNewEffectPoolItem(prefabName, () => { SpawnEffect(prefabName, speed, posAndRot, parent, scale, call); });
            return(null);
        }

        Transform spawned;

        if (null != posAndRot)
        {
            spawned = PoolManager.Pools["Effect"].Spawn(prefabName, posAndRot.position, posAndRot.rotation, parent);
        }
        else
        {
            spawned = PoolManager.Pools["Effect"].Spawn(prefabName, parent);
        }

        spawned.localScale = scale;

        // 최대 이펙트 스피드는 0.5f배로. 4배이상은 안나오는게 많음.
        speed = Mathf.Clamp(speed, 0.5f, 4f);
        NsEffectManager.AdjustSpeedRuntime(spawned.gameObject, speed);

        if (call != null)
        {
            call(spawned);
        }

        return(spawned);
    }
예제 #5
0
    private void CreateAttachPrefab(Vector3 position, float size)
    {
        if (this.m_AttachPrefab == null)
        {
            return;
        }
        GameObject gameObject = base.CreateGameObject(this.m_AttachPrefab, this.m_AttachPrefab.transform.position + position, this.m_AttachPrefab.transform.rotation);

        if (gameObject == null)
        {
            return;
        }
        base.ChangeParent(NcEffectBehaviour.GetRootInstanceEffect().transform, gameObject.transform, false, null);
        NcTransformTool.CopyLossyToLocalScale(gameObject.transform.lossyScale * size, gameObject.transform);
        NsEffectManager.AdjustSpeedRuntime(gameObject, this.m_fPrefabSpeed);
        if (0f < this.m_fPrefabLifeTime)
        {
            NcAutoDestruct ncAutoDestruct = gameObject.GetComponent <NcAutoDestruct>();
            if (ncAutoDestruct == null)
            {
                ncAutoDestruct = gameObject.AddComponent <NcAutoDestruct>();
            }
            ncAutoDestruct.m_fLifeTime = this.m_fPrefabLifeTime;
        }
    }
예제 #6
0
 public override void OnUpdateEffectSpeed(float fSpeedRate, bool bRuntime)
 {
     m_fDuplicateTime     /= fSpeedRate;
     m_fDuplicateLifeTime /= fSpeedRate;
     if (bRuntime && m_ClonObject != null)
     {
         NsEffectManager.AdjustSpeedRuntime(m_ClonObject, fSpeedRate);
     }
 }
예제 #7
0
    public static void AdjustSpeedRuntime(GameObject _target, float _fSpeedRate)
    {
        NsEffectManager.AdjustSpeedRuntime(_target, _fSpeedRate);
        FXRoot fr = _target.GetComponent <FXRoot>();

        if (fr != null)
        {
            fr.Speed = _fSpeedRate;
        }
    }
예제 #8
0
    /// <summary>
    /// PoolManager에 존재하는 객체를 찾아서 Spawn해준다. 존재하지 않는다면, Pool에 등록후 Spawn해준다.
    /// </summary>
    public Transform Spawn(string poolName, Transform prefabTrans, Vector3 spawnPos, Quaternion spawnRot, Transform parent, Vector3 scale, float speed = 1f)
    {
        SpawnPool spawnPool = null;

        if (!PoolManager.Pools.TryGetValue(poolName, out spawnPool))
        {
            return(null);
        }

        Transform spawned = spawnPool.Spawn(prefabTrans, spawnPos, spawnRot, parent);

        spawned.localScale = scale;

        //// for FxMaker : 최대 이펙트 스피드는 0.5f배로. 4배이상은 안나오는게 많음.
        NsEffectManager.AdjustSpeedRuntime(spawned.gameObject, Mathf.Clamp(speed, 0.5f, 4f));

        return(spawned);
    }
예제 #9
0
    void CreateAttachGameObject()
    {
        GameObject createObj = (GameObject)CreateGameObject(GetTargetGameObject(), (GetTargetGameObject() == gameObject ? null : transform), m_AttachPrefab);

        if (m_bReplayState)
        {
            NsEffectManager.SetReplayEffect(createObj);
        }

        if (createObj == null)
        {
            return;
        }

        if (m_AttachType == AttachType.Active)
        {
            if (m_CreateGameObjects == null)
            {
                m_CreateGameObjects = new GameObject[Mathf.Max(1, m_nRepeatCount)];
            }
            for (int n = 0; n < m_CreateGameObjects.Length; n++)
            {
                if (m_CreateGameObjects[n] == null)
                {
                    m_CreateGameObjects[n] = createObj;
                    break;
                }
            }
        }

        m_nCreateCount++;

        // sync Layer
//		Ng_ChangeLayerWithChild(createObj, gameObject.layer);

        // Random pos, AddStartPos
        Vector3 newPos = createObj.transform.position;

        createObj.transform.position = m_AddStartPos + new Vector3(Random.Range(-m_RandomRange.x, m_RandomRange.x) + newPos.x, Random.Range(-m_RandomRange.y, m_RandomRange.y) + newPos.y, Random.Range(-m_RandomRange.z, m_RandomRange.z) + newPos.z);

        // m_AccumStartRot
        createObj.transform.localRotation *= Quaternion.Euler(m_AccumStartRot.x * m_nCreateCount, m_AccumStartRot.y * m_nCreateCount, m_AccumStartRot.z * m_nCreateCount);
        createObj.name += " " + m_nCreateCount;
        SetActiveRecursively(createObj, true);

        // PrefabAdjustSpeed
        NsEffectManager.AdjustSpeedRuntime(createObj, m_fPrefabSpeed);

        // m_fPrefabLifeTime
        if (0 < m_fPrefabLifeTime)
        {
            NcAutoDestruct ncAd = createObj.GetComponent <NcAutoDestruct>();
            if (ncAd == null)
            {
                ncAd = AddNcComponentToObject <NcAutoDestruct>(createObj);
            }
            ncAd.m_fLifeTime = m_fPrefabLifeTime;
        }

        // m_bDetachParent
        if (m_bDetachParent)
        {
            NcDetachParent detachCom = createObj.GetComponent <NcDetachParent>();
            if (detachCom == null)
            {
                detachCom = AddNcComponentToObject <NcDetachParent>(createObj);
            }
        }

        // m_nSpriteFactoryIndex
        if (0 <= m_nSpriteFactoryIndex)
        {
            NcSpriteFactory ncFactory = createObj.GetComponent <NcSpriteFactory>();
            if (ncFactory)
            {
                ncFactory.SetSprite(m_nSpriteFactoryIndex, false);
            }
        }

        OnCreateAttachGameObject();
    }
예제 #10
0
    private void CreateAttachGameObject()
    {
        GameObject gameObject = base.CreateGameObject(this.GetTargetGameObject(), (!(this.GetTargetGameObject() == base.gameObject)) ? base.transform : null, this.m_AttachPrefab);

        if (this.m_bReplayState)
        {
            NsEffectManager.SetReplayEffect(gameObject);
        }
        if (gameObject == null)
        {
            return;
        }
        if (this.m_AttachType == NcAttachPrefab.AttachType.Active)
        {
            if (this.m_CreateGameObjects == null)
            {
                this.m_CreateGameObjects = new GameObject[Mathf.Max(1, this.m_nRepeatCount)];
            }
            for (int i = 0; i < this.m_CreateGameObjects.Length; i++)
            {
                if (this.m_CreateGameObjects[i] == null)
                {
                    this.m_CreateGameObjects[i] = gameObject;
                    break;
                }
            }
        }
        this.m_nCreateCount++;
        Vector3 position = gameObject.transform.position;

        gameObject.transform.position       = this.m_AddStartPos + new Vector3(UnityEngine.Random.Range(-this.m_RandomRange.x, this.m_RandomRange.x) + position.x, UnityEngine.Random.Range(-this.m_RandomRange.y, this.m_RandomRange.y) + position.y, UnityEngine.Random.Range(-this.m_RandomRange.z, this.m_RandomRange.z) + position.z);
        gameObject.transform.localRotation *= Quaternion.Euler(this.m_AccumStartRot.x * (float)this.m_nCreateCount, this.m_AccumStartRot.y * (float)this.m_nCreateCount, this.m_AccumStartRot.z * (float)this.m_nCreateCount);
        GameObject expr_1B0 = gameObject;

        expr_1B0.name = expr_1B0.name + " " + this.m_nCreateCount;
        NcEffectBehaviour.SetActiveRecursively(gameObject, true);
        NsEffectManager.AdjustSpeedRuntime(gameObject, this.m_fPrefabSpeed);
        if (0f < this.m_fPrefabLifeTime)
        {
            NcAutoDestruct ncAutoDestruct = gameObject.GetComponent <NcAutoDestruct>();
            if (ncAutoDestruct == null)
            {
                ncAutoDestruct = base.AddNcComponentToObject <NcAutoDestruct>(gameObject);
            }
            ncAutoDestruct.m_fLifeTime = this.m_fPrefabLifeTime;
        }
        if (this.m_bDetachParent)
        {
            NcDetachParent x = gameObject.GetComponent <NcDetachParent>();
            if (x == null)
            {
                x = base.AddNcComponentToObject <NcDetachParent>(gameObject);
            }
        }
        if (0 <= this.m_nSpriteFactoryIndex)
        {
            NcSpriteFactory component = gameObject.GetComponent <NcSpriteFactory>();
            if (component)
            {
                component.SetSprite(this.m_nSpriteFactoryIndex, false);
            }
        }
        this.OnCreateAttachGameObject();
    }