// 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; } }
// Function -------------------------------------------------------------------- // Loop Function -------------------------------------------------------------------- // Control Function ----------------------------------------------------------------- // Event Function ------------------------------------------------------------------- public override void OnUpdateEffectSpeed(float fSpeedRate, bool bRuntime) { if (bRuntime) { NsEffectManager.AdjustSpeedRuntime(m_LinkGameObject, fSpeedRate); } }
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); }
/// 이펙트 폴더에 존재하는 프리팹을 스폰시켜준다. 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); }
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; } }
public override void OnUpdateEffectSpeed(float fSpeedRate, bool bRuntime) { m_fDuplicateTime /= fSpeedRate; m_fDuplicateLifeTime /= fSpeedRate; if (bRuntime && m_ClonObject != null) { NsEffectManager.AdjustSpeedRuntime(m_ClonObject, fSpeedRate); } }
public static void AdjustSpeedRuntime(GameObject _target, float _fSpeedRate) { NsEffectManager.AdjustSpeedRuntime(_target, _fSpeedRate); FXRoot fr = _target.GetComponent <FXRoot>(); if (fr != null) { fr.Speed = _fSpeedRate; } }
/// <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); }
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(); }
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(); }