public Bullet Spawn(SpawnParams spawnParams) { if (bulletPool == null) { Debug.LogError("BulletPool list null. Construction probably failed."); return(null); } GameObject result = null; foreach (BulletPoolItem item in bulletPool) { if (!item.itemOwner.activeSelf) { result = item.itemOwner; break; } } if (!result) { return(null); } result.SetActive(true); result.transform.position = spawnParams.spawnPoint; result.transform.rotation = spawnParams.rotation; return(result.GetComponent <Bullet>()); }
/// <summary> /// Attaches a particle emitter object to a specific entity slot and loads it with <paramref name="particleEffect"/>. /// </summary> /// <param name="slot">The slot to load the particle in.</param> /// <param name="particleEffect">Particle effect to load.</param> /// <param name="scale">Scale of the emitter.</param> public void LoadParticleEmitter(int slot, ParticleEffect particleEffect, float scale = 1.0f) { var sp = new SpawnParams { fSizeScale = scale }; NativeHandle.LoadParticleEmitter(slot, particleEffect.NativeHandle, sp, false, false); }
/// <summary> /// Attaches a particle emitter object to a specific entity slot. /// </summary> /// <param name="slot">Slot.</param> /// <param name="emitter">Emitter.</param> /// <param name="scale">Scale.</param> public void LoadParticleEmitter(int slot, IParticleEffect emitter, float scale = 1.0f) { var sp = new SpawnParams { fSizeScale = scale }; BaseEntity.LoadParticleEmitter(slot, emitter, sp, false, false); }
void Spawn(SpawnParams arg) { var position = Quaternion.Euler(0, 0, Random.Range(arg.AngleFrom, arg.AngleTo)) * Vector2.up * SpawnDistance; var initialForce = Random.Range(arg.MinForce, arg.MaxForce); var towardsPlanet = (-position).normalized; var zRotation = Random.Range(arg.MinAngleTrajDeg, arg.MaxAngleTrajDeg) * (Random.Range(-1, 1) < 0 ? -1 : 1); Vector2 v = Quaternion.Euler(0, 0, zRotation) * towardsPlanet * initialForce; var asteroid = Instantiate(asteroidPrefab, this.transform); asteroid.Initialize( position: position, forceVector: v, gravitySource: new Vector2(0, 0), gravityForceMag: arg.GravityForceMag, isIdle: idleMode, sfxPlayer: sfxPlayer); }
public virtual BaseActor SpawnTrigger(SpawnParams spawnParam) { BaseActor actor = m_ActorService.AddActor(spawnParam.ActorType); //TransformComponent transform = actor.AddComponent<TransformComponent>(spawnParam.InitPos.HasValue ? spawnParam.InitPos.Value : Vector3.Zero, // spawnParam.InitRot.HasValue ? spawnParam.InitRot.Value : Quaternion.Identity, spawnParam.InitScale.HasValue ? spawnParam.InitScale.Value : Vector3.One); actor.AddComponent(spawnParam.AttributeComponent, spawnParam.AttributeKey); TriggerComponent trigger = actor.AddComponent <TriggerComponent>(); trigger.Owner = spawnParam.Owner; MovementSystem movementSysten = m_ActorService.GetComponentSystem <MovementSystem>(); movementSysten.Transform(actor, spawnParam.InitPos, spawnParam.InitRot, spawnParam.InitScale); return(actor); }
public void Fire() { if (!CanFire()) { return; } SpawnParams spawnParams = new SpawnParams(); spawnParams.rotation = Quaternion.identity; spawnParams.spawnPoint = spawnPointOwner.transform.position; Bullet bullet = bulletPool.Spawn(spawnParams); if (!bullet) { return; } bullet.Velocity = (spawnPointOwner.transform.position - transform.position).normalized * bulletVelocity; timeSinceLastFireSeconds = 0.0f; }
public Enemy Spawn(SpawnParams spawnParams) { if (enemyPool == null) { Debug.LogError("Enemy pool null. Construction probably failed."); return(null); } if (!CanSpawn()) { return(null); } GameObject result = null; foreach (GameObject obj in enemyPool) { if (!obj.activeSelf) { result = obj; break; } } if (!result) { return(null); } result.SetActive(true); result.transform.position = spawnParams.spawnPoint; result.transform.rotation = spawnParams.rotation; lastEnemySpawnedTimeSeconds = 0.0f; enemiesSpawned++; return(result.GetComponent <Enemy>()); }
internal SpawnParameters(SpawnParams nativeHandle) { NativeHandle = nativeHandle; }
private void SetNextSpawnParams() { nextSpawnParams = new SpawnParams(); nextSpawnParams.spawnPoint = GetNextSpawnParamsPosition(); nextSpawnParams.rotation = Quaternion.identity; }