Esempio n. 1
0
 private void OnFireWeapon(Vector3 impactlocation, float impacttime, SimUnitInstance impactunit)
 {
     if (eventhandler != null)
     {
         eventhandler.OnSimFireWeapon(this, impactlocation, impacttime, impactunit);
     }
 }
Esempio n. 2
0
    public void OnSimExplode(SimUnitInstance sender)
    {
        gameObject.BroadcastMessage("SimOnExplode", SendMessageOptions.DontRequireReceiver);

        if (onSimExplode != null)
        {
            onSimExplode(simunit);
        }
    }
Esempio n. 3
0
 public void RemoveUnit(SimUnitInstance inst)
 {
     if (inst.UnitConfig.Team == SimUnitConfig.ETeam.Friendly)
     {
         FriendlySimUnits.Remove(inst);
     }
     else
     {
         EnemySimUnits.Remove(inst);
     }
     inst.Destroy();
 }
Esempio n. 4
0
    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();
        }
    }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
    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);
        }
    }
Esempio n. 7
0
    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);
        }
    }
Esempio n. 8
0
 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;
         }
     }
 }
Esempio n. 9
0
 public OnCollisionEventArgs(SimUnitInstance unit)
 {
     this.UnitInstance = unit;
 }
Esempio n. 10
0
 public void OnSimReachedGoal(SimUnitInstance sender)
 {
     gameObject.BroadcastMessage("SimOnReachedGoal", SendMessageOptions.DontRequireReceiver);
 }
Esempio n. 11
0
 public void OnSimDropBonus(SimUnitInstance sender, SimDropConfig drop)
 {
     gameObject.BroadcastMessage("SimOnDropBonus", drop, SendMessageOptions.DontRequireReceiver);
 }