public override void Spawn(EntityData d, int index, Vector3 pos, float yaw, Actor instigator, Actor owner, Team team) { base.Spawn(d, index, pos, yaw, instigator, owner, team); if (data.defaultLoadout != null) { var loot = data.defaultLoadout.loot; if ((loot != null) && (loot.Length > 0)) { for (int i = 0; i < loot.Length; ++i) { var item = loot[i].CreateItem(); this.loot[i] = item; } } var inventory = data.defaultLoadout.inventory; if ((inventory != null) && (inventory.Length > 0)) { for (int i = 0; i < inventory.Length; ++i) { var item = inventory[i].CreateItem(); SetInventorySlot(i, item); } } } foreach (var b in data.behaviors) { if (b != null && b.behavior != null) { behaviors.Add(b.behavior.Create(this, b.scoreMultiplier, b.weaponIndex, b.attackIndex)); } } _defaultSilhouetteMode = SilhouetteRenderer.Mode.Off; AttachExternalGameObject(GameObject.Instantiate(data.prefab.Load(), pos, Quaternion.identity)); position = pos; this.yaw = yaw; spawnPosition = pos; maxHealth = data.maxHealth; health = maxHealth; this.team = team; active = false; canClimb = false; canMove = true; canJump = true; canRun = true; canTurn = true; canAttack = true; canStrafe = true; onHit += OnHit; gameMode.CritterSpawned(); gameMode.onAudioEvent += OnAudioEvent; }
void UpdateSilhouette() { if (driver != null) { return; } if (data.defaultSilhouetteMode == SilhouetteRenderer.Mode.Off) { return; } if (wary > 0 || IsPanicked()) { if (_defaultSilhouetteMode != SilhouetteRenderer.Mode.On) { _defaultSilhouetteMode = SilhouetteRenderer.Mode.On; silhouetteMode = SilhouetteRenderer.Mode.On; } return; } var checkDist = data.silhouetteDistanceThreadholdSq; if (checkDist <= 0) { return; } float closest = float.MaxValue; foreach (var player in world.GetActorIterator <Player>()) { var d = GetSqDistanceTo(player); closest = Mathf.Min(d, closest); } var mode = SilhouetteRenderer.Mode.Off; if (closest < data.silhouetteDistanceThreadholdSq) { mode = data.defaultSilhouetteMode; } if (mode != _defaultSilhouetteMode) { _defaultSilhouetteMode = mode; silhouetteMode = mode; } }