private void OnFireWeapon(Vector3 impactlocation, float impacttime, SimUnitInstance impactunit) { if (eventhandler != null) { eventhandler.OnSimFireWeapon(this, impactlocation, impacttime, impactunit); } }
public void OnSimExplode(SimUnitInstance sender) { gameObject.BroadcastMessage("SimOnExplode", SendMessageOptions.DontRequireReceiver); if (onSimExplode != null) { onSimExplode(simunit); } }
public void RemoveUnit(SimUnitInstance inst) { if (inst.UnitConfig.Team == SimUnitConfig.ETeam.Friendly) { FriendlySimUnits.Remove(inst); } else { EnemySimUnits.Remove(inst); } inst.Destroy(); }
protected override void ObjectCollision(SimObjectInstance obj) { SimUnitInstance inst = obj as SimUnitInstance; if (inst != null && (inst.UnitConfig.Team == ProjectileConfig.CollidesWithTeam || ProjectileConfig.CollidesWithTeam == SimUnitConfig.ETeam.Both)) { inst.DoDamage(ProjectileConfig.Damage, 0.0f); if (OnCollision != null) { OnCollision(this, new OnCollisionEventArgs(inst)); } Destroy(); } }
public SimUnitInstance AddUnit(SimUnitConfig unittype, Vector3 startingposition, ISimUnitEventHandler EventHandler) { SimUnitInstance inst = new SimUnitInstance(this, unittype, startingposition, EventHandler); if (unittype.Team == SimUnitConfig.ETeam.Friendly) { FriendlySimUnits.Add(inst); } else { EnemySimUnits.Add(inst); } return(inst); }
public void OnSimFireWeapon(SimUnitInstance sender, Vector3 impactlocation, float impacttime, SimUnitInstance impactunit) { Transform target = null; _unitMapping.TryGetValue(impactunit, out target); EventArgsFireProjectile args = new EventArgsFireProjectile(impactlocation, impacttime, target, this.transform); ProjectileSpawner[] spawners = GetComponentsInChildren <ProjectileSpawner>(); foreach (ProjectileSpawner sp in spawners) { sp.fireProjectile(args); } }
public void SetSimUnit(SimUnitConfig inst) { if (_simunitinst == null && inst != null) { simunit = inst; _simunitinst = SimulationComponent.CurrentSim.AddUnit(simunit, transform.position, this); _unitMapping.Add(_simunitinst, this.transform); SetAreaVisuals(simunit); } else if (_simunitinst != null && inst == null) { SimulationComponent.CurrentSim.RemoveUnit(_simunitinst); } }
private void EvaluateAttack(float deltatime) { if (UnitConfig.WeaponConfig != null && Sim.SimTime >= nextFireTime && UnitConfig.FireRate > 0.0f) { float closestdist = 0.0f; float closestdisttogoal = 0.0f; SimUnitInstance closest = null; IOctreeObject[] objs = Sim.Octtree.GetColliding(new Bounds(simposition, Vector3.one * UnitConfig.RadiusOfAffect)); foreach (IOctreeObject obj in objs) { SimUnitInstance inst = obj as SimUnitInstance; if (inst != null && inst != this && inst.UnitConfig.Team != this.UnitConfig.Team) { float disttoobject = Vector3.Distance(this.simposition, inst.simposition); if (disttoobject <= UnitConfig.RadiusOfAffect) { float dist = Sim.Goal.GetDistanceToPoint(inst.simposition); if (closest == null || dist < closestdisttogoal) { closest = inst; closestdisttogoal = dist; closestdist = disttoobject; } } } } if (closest != null) { //Attack closest to goal float impacttime = closestdist / UnitConfig.WeaponConfig.Speed; closest.DoDamage(UnitConfig.WeaponConfig.DamageAmount, impacttime); OnFireWeapon(closest.simposition, impacttime, closest); nextFireTime = Sim.SimTime + 1.0f / UnitConfig.FireRate; } } }
public OnCollisionEventArgs(SimUnitInstance unit) { this.UnitInstance = unit; }
public void OnSimReachedGoal(SimUnitInstance sender) { gameObject.BroadcastMessage("SimOnReachedGoal", SendMessageOptions.DontRequireReceiver); }
public void OnSimDropBonus(SimUnitInstance sender, SimDropConfig drop) { gameObject.BroadcastMessage("SimOnDropBonus", drop, SendMessageOptions.DontRequireReceiver); }