void MotionUnit_IntersectsUnit(object sender, Common.IMotion.IntersectsObjectEventArgs args) { Common.IMotion.IUnit obj = (Common.IMotion.IUnit)args.IObject; var u = obj.Tag as Unit; if (intersectedUnits.Contains(u)) { return; } intersectedUnits.Add(u); TryHit(u); }
protected override void UpdateMotionObject() { if (CanBeDestroyed && PhysicsLocalBounding != null) { Common.IMotion.IUnit mo = MotionUnit; if (mo == null) { mo = (Common.IMotion.IUnit)NewMotionObject(); } mo.LocalBounding = PhysicsLocalBounding; mo.Weight = PhysicalWeight; mo.Position = Position; mo.Rotation = Quaternion.RotationAxis(Vector3.UnitZ, Orientation); mo.Scale = Scale; mo.Tag = this; mo.TurnSpeed = GraphicalTurnSpeed; MotionObject = mo; } else { MotionObject = null; } }