コード例 #1
0
ファイル: SimMovement.cs プロジェクト: skasteve/TowerDefense
 public static InstanceData GetData(SimMovement simmove, SimObjectInstance instance)
 {
     if (instance.MovementData == null)
     {
         instance.MovementData = new InstanceData(instance.Sim, simmove);
     }
     return((InstanceData)instance.MovementData);
 }
コード例 #2
0
ファイル: Simulation.cs プロジェクト: skasteve/TowerDefense
 private void Step(IList <SimObjectInstance> objs)
 {
     for (int i = objs.Count - 1; i >= 0; i--)
     {
         SimObjectInstance inst = objs[i];
         inst.Step(LOCKSTEP);
         if (inst.DeleteMe)
         {
             objs.RemoveAt(i);
         }
     }
 }
コード例 #3
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();
        }
    }
コード例 #4
0
 private void EvaluateCollision()
 {
     if (ObjectConfig.EnableCollisionCheck)
     {
         IOctreeObject[] objs = Sim.Octtree.GetColliding(ObjectBounds);
         foreach (IOctreeObject obj in objs)
         {
             if (obj != this)
             {
                 SimObjectInstance inst = (SimObjectInstance)obj;
                 if (inst != null)
                 {
                     ObjectCollision(inst);
                 }
             }
         }
     }
 }
コード例 #5
0
ファイル: SimMovement.cs プロジェクト: skasteve/TowerDefense
    public Vector3 Integrate(SimObjectInstance instance, float deltatime)
    {
        InstanceData data = InstanceData.GetData(this, instance);

        if (data.Speed == 0.0f)
        {
            return(Vector3.zero);
        }

        Vector3 delta = instance.Sim.Goal.normal * (deltatime * data.Speed) * -1.0f;

        if (WobbleFrequency != Vector3.zero && WobbleAmplitute != Vector3.zero)
        {
            data.WobbleOffset.x = Mathf.Sin(data.WobbleRandom.x * (WobbleFrequency.x * instance.Sim.SimTime)) * WobbleAmplitute.x;
            data.WobbleOffset.y = Mathf.Sin(data.WobbleRandom.y * (WobbleFrequency.x * instance.Sim.SimTime)) * WobbleAmplitute.y;
            data.WobbleOffset.z = Mathf.Sin(data.WobbleRandom.z * (WobbleFrequency.x * instance.Sim.SimTime)) * WobbleAmplitute.z;
            delta = delta + data.WobbleOffset;
        }

        return(delta);
    }
コード例 #6
0
 protected override void ObjectCollision(SimObjectInstance obj)
 {
     throw new NotImplementedException();
 }
コード例 #7
0
 protected abstract void ObjectCollision(SimObjectInstance obj);