コード例 #1
0
        public SnowParticule(Vector2 position, float speed, float distanceMax, RadianAngle angle) : base(position, speed, distanceMax, angle)
        {
            Animation anim = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("snow"), 16, 16);

            anim.forceDepth(1);
            addAnimation(anim);
        }
コード例 #2
0
ファイル: ParticuleTTL.cs プロジェクト: MrSchlag/bloodbender
 public ParticuleTTL(Vector2 position, float speed, float lifeTime, RadianAngle angle) : base(position, speed)
 {
     this.lifeTime        = lifeTime;
     this.angle           = angle;
     referencePosition    = position;
     intermediatePosition = Vector2.Zero;
 }
コード例 #3
0
 public SnowMarkParticule(Vector2 position, float speed, float distanceMax, RadianAngle angle) : base(position, speed, distanceMax, angle)
 {
     offSet = OffSet.BottomCenterHorizontal;
     anim   = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("snowMark"));
     addAnimation(anim);
     anim.forceDepth(0);
 }
 public DestinationPointTestData(GeoCoordinate from, Length distance, RadianAngle bearing, GeoCoordinate expected)
 {
     From     = from;
     Distance = distance;
     Bearing  = bearing;
     Expected = expected;
 }
コード例 #5
0
ファイル: ParticuleDTL.cs プロジェクト: MrSchlag/bloodbender
 public ParticuleDTL(Vector2 position, float speed, float distanceMax, RadianAngle angle) : base(position, speed)
 {
     this.distanceMax     = distanceMax;
     this.angle           = angle;
     referencePosition    = position;
     intermediatePosition = Vector2.Zero;
 }
コード例 #6
0
        public SnowSpawner(Vector2 position, RadianAngle angle, GraphicObj target, Vector2 offSetPosition) : base(position, angle, target, offSetPosition)
        {
            particuleFollowSpawner = true;

            timeSpawn            = 0.02f;
            this.angle           = 2.25f;
            numberParticuleToPop = 5;
        }
コード例 #7
0
 public BloodParticule(Vector2 position, float speed, float lifeTime, RadianAngle angle, float scaleIN) : base(position, speed, lifeTime, angle)
 {
     offSet         = OffSet.BottomCenterHorizontal;
     anim           = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("blood1hit"), 6, 0.06f, 32, 0, 0, 0);
     anim.isLooping = false;
     anim.reset();
     addAnimation(anim);
     scale = new Vector2(scaleIN, scaleIN);
 }
コード例 #8
0
            public void ShouldProduceValidResultInSameUnit(RadianAngle originalRadianAngle, RadianAngle expectedRadianAngle)
            {
                // arrange
                // act
                var result = originalRadianAngle.ToNormalized();

                // assert
                result.Radians.Should().BeApproximately(expectedRadianAngle.Radians);
            }
コード例 #9
0
        public ParticuleSpawner(Vector2 position, RadianAngle angle, GraphicObj target, Vector2 offSetPosition)
        {
            particules = new List <Particule>();

            this.position       = position;
            this.target         = target;
            this.offSetPosition = offSetPosition;
            this.angle          = angle;
        }
コード例 #10
0
        public GeoCoordinate(RadianAngle latitude, RadianAngle longitude)
        {
            Assert.IsInRange(latitude, -RadianAngle.Right, RadianAngle.Right, nameof(latitude));
            Assert.IsInRange(longitude, -RadianAngle.Straight, RadianAngle.Straight, nameof(longitude));

            _latitudeRadians  = latitude;
            _longitudeRadians = longitude;
            _latitude         = latitude.ToDegreeAngle();
            _longitude        = longitude.ToDegreeAngle();
        }
コード例 #11
0
            public void Constructor_ShouldCreateValidRadianAngle()
            {
                // arrange
                number radians = Fixture.Create <number>();

                // act
                var radianAngle = new RadianAngle(radians);

                // assert
                radianAngle.Radians.Should().Be(radians);
            }
コード例 #12
0
            public void DefaultRadianAngle_ShouldBeEqualToZeroRadians()
            {
                // arrange
                var defaultRadianAngle     = default(RadianAngle);
                var zeroRadiansRadianAngle = new RadianAngle(Constants.Zero);

                // act
                // assert
                zeroRadiansRadianAngle.Equals(defaultRadianAngle).Should().BeTrue(because: "'new RadianAngle(Constants.Zero)' should be equal 'default(RadianAngle)'");
                defaultRadianAngle.Equals(zeroRadiansRadianAngle).Should().BeTrue(because: "'default(RadianAngle)' should be equal 'new RadianAngle(Constants.Zero)'");
            }
コード例 #13
0
            public void FromAngle_ShouldCreateValidRadianAngle()
            {
                // arrange
                var angle = Fixture.Create <Angle>();

                // act
                var radianAngle = RadianAngle.FromAngle(angle);

                // assert
                radianAngle.Radians.Should().BeApproximately((number)angle.Convert(AngleUnit.Radian).Value);
            }
コード例 #14
0
            public void RadianAngleCreateUsingParamlessConstructor_ShouldBeEqualToZeroRadians()
            {
                // arrange
                var zeroRadiansRadianAngle          = new RadianAngle(Constants.Zero);
                var paramlessConstructedRadianAngle = new RadianAngle();

                // act
                // assert
                zeroRadiansRadianAngle.Equals(paramlessConstructedRadianAngle).Should().BeTrue(because: "'new RadianAngle(Constants.Zero)' should be equal 'new RadianAngle()'");
                paramlessConstructedRadianAngle.Equals(zeroRadiansRadianAngle).Should().BeTrue(because: "'new RadianAngle()' should be equal 'new RadianAngle(Constants.Zero)'");
            }
コード例 #15
0
            public void ShouldProduceValidResult()
            {
                // arrange
                var nominator   = CreateRadianAngle();
                var denominator = new RadianAngle(Fixture.CreateNonZeroNumber());

                // act
                number result = nominator / denominator;

                // assert
                result.Should().Be(nominator.Radians / denominator.Radians);
            }
コード例 #16
0
            public void DivideByZero_ShouldThrow()
            {
                // arrange
                var radianAngle = CreateRadianAngle();
                var denominator = new RadianAngle(Constants.Zero);

                // act
                Func <number> divideByZero = () => radianAngle / denominator;

                // assert
                divideByZero.Should().Throw <DivideByZeroException>();
            }
コード例 #17
0
        public void Serialize_ShouldReturnValidJson(number radians, string expectedJson)
        {
            // arrange
            var angle     = new RadianAngle(radians);
            var converter = new GeoCoordinateJsonConverter();

            // act
            string actualJson = JsonConvert.SerializeObject(angle, converter);

            // assert
            actualJson.Should().Be(expectedJson);
        }
            public void ShouldReturnProperValue(GeoCoordinate from, Length distance, RadianAngle bearing, GeoCoordinate expected)
            {
                // arrange
                number precision = (number)0.01m;

                // act
                var result = from.GetDestinationPoint(distance, bearing);

                // assert
                result.Latitude.TotalDegrees.Should().BeApproximately(expected.Latitude.TotalDegrees, precision);
                result.Longitude.TotalDegrees.Should().BeApproximately(expected.Longitude.TotalDegrees, precision);
            }
コード例 #19
0
            public void RadianAnglesOfDifferentUnitsEqualInRadians_ShouldBeEqual()
            {
                // arrange
                var radianAngle1 = Fixture.Create <RadianAngle>();
                var radianAngle2 = new RadianAngle(
                    radians: radianAngle1.Radians);

                // act
                bool equalsResult = radianAngle1.Equals(radianAngle2);

                // assert
                equalsResult.Should().BeTrue(because: $"{radianAngle1.Radians} rad == {radianAngle2.Radians} rad");
            }
                public void ShouldReturnValidResult()
                {
                    // arrange
                    var    source = Fixture.CreateMany <RadianAngle>(3).Select(e => new TestObject <RadianAngle>(e));
                    number expectedResultInMetres = Enumerable.Sum(source, e => e.Property.Radians);
                    var    expectedResult         = new RadianAngle(expectedResultInMetres);

                    // act
                    var result = AngularEnumerableExtensions.Sum(source, e => e.Property);

                    // assert
                    result.Radians.Should().Be(expectedResult.Radians);
                }
                public void ShouldReturnValidResult()
                {
                    // arrange
                    var    source = Fixture.CreateMany <RadianAngle>(3);
                    number expectedResultInRadians = Enumerable.Sum(source, e => e.Radians);
                    var    expectedResult          = new RadianAngle(expectedResultInRadians);

                    // act
                    var result = AngularEnumerableExtensions.Sum(source);

                    // assert
                    result.Radians.Should().Be(expectedResult.Radians);
                }
コード例 #22
0
            public void ShouldCreateWithGivenValues(number latitudeRadians, number longitudeRadians)
            {
                // arrange
                var latitude  = new RadianAngle(latitudeRadians);
                var longitude = new RadianAngle(longitudeRadians);

                // act
                var sut = new GeoCoordinate(latitude, longitude);

                // assert
                sut.LatitudeRadians.Should().Be(latitude);
                sut.LongitudeRadians.Should().Be(longitude);
            }
コード例 #23
0
            public void LongitudeOutOfRange_ShouldThrow(number longitudeRadians)
            {
                // arrange
                var longitude = new RadianAngle(longitudeRadians);

                // act
                Action create = () => new GeoCoordinate(RadianAngle.Zero, longitude);

                // assert
                var exception = create.Should().Throw <ArgumentOutOfRangeException>().And;

                exception.ParamName.Should().Be("longitude");
                exception.ActualValue.Should().Be(longitude);
            }
コード例 #24
0
            public void DefaultRadianAngleAndZeroWithOtherUnit_ShouldProduceZeroWithOtherUnit()
            {
                // arrange
                var defaultRadianAngle = default(RadianAngle);
                var zeroRadians        = new RadianAngle(Constants.Zero);

                // act
                var result1 = defaultRadianAngle + zeroRadians;
                var result2 = zeroRadians + defaultRadianAngle;

                // assert
                result1.IsZero().Should().BeTrue();
                result2.IsZero().Should().BeTrue();
            }
コード例 #25
0
ファイル: ParticuleDTL.cs プロジェクト: MrSchlag/bloodbender
        public override bool Update(float elapsed)
        {
            if (inWait == true)
            {
                return(false);
            }

            if (intermediatePosition.X >= distanceMax)
            {
                inWait = true;
            }

            position = intermediatePosition + referencePosition;

            position = RadianAngle.rotate(referencePosition, position, angle);

            return(true);
        }
コード例 #26
0
        protected override void cookParticule()
        {
            particuleToCook.inWait      = false;
            particuleToCook.speed       = Bloodbender.ptr.rdn.Next(100, 301);
            particuleToCook.distanceMax = 1400;
            particuleToCook.angle       = angle + (Bloodbender.ptr.rdn.Next(-2000, 2001) / 10000.0f);

            particuleToCook.position    = position;
            particuleToCook.position.X += Bloodbender.ptr.rdn.Next(-650, 651);
            particuleToCook.position    = RadianAngle.rotate(position, particuleToCook.position, (float)(angle + (Math.PI / 2)));

            particuleToCook.referencePosition    = particuleToCook.position;
            particuleToCook.intermediatePosition = Vector2.Zero;

            float s = (Bloodbender.ptr.rdn.Next(2000, 4001) / 10000.0f);

            particuleToCook.scale = new Vector2(s, s);
        }
コード例 #27
0
        public GeoCoordinate GetDestinationPoint(Length distance, RadianAngle bearing)
        {
            if (IsEmpty)
            {
                throw new ArgumentException("Cannot compute destination point from unknown coordinate.");
            }

            var φ1 = LatitudeRadians;
            var λ1 = LongitudeRadians;
            var δ  = new RadianAngle(distance / EarthRadius);

            var φ2 = MathA.Asin(MathA.Sin(φ1) * MathA.Cos(δ) + MathA.Cos(φ1) * MathA.Sin(δ) * MathA.Cos(bearing));

            number y  = MathA.Sin(bearing) * MathA.Sin(δ) * MathA.Cos(φ1);
            number x  = MathA.Cos(δ) - MathA.Sin(φ1) * MathA.Sin(φ2);
            var    Δλ = MathA.Atan2(y, x);
            var    λ2 = λ1 + Δλ;

            // Normalize longitude to range -π ... +π (that is, -180° ... +180°)
            λ2 = (λ2 + 3 * RadianAngle.PI) % (2 * Constants.PI) - RadianAngle.PI;

            return(new GeoCoordinate(φ2, λ2));
        }
コード例 #28
0
ファイル: GangChef.cs プロジェクト: MrSchlag/bloodbender
        public override bool Update(float elapsed)
        {
            currentAngleWithTarget = angleWith(target);

            node.Update(elapsed);
            node.body.Position = givePosition(0) * Bloodbender.pixelToMeter;

            distanceAttackWithTarget = (float)distanceWith(target.position) + 10;

            RadianAngle tmpangle = currentAngleWithTarget;

            tmpangle -= (float)Math.PI / 2;

            if (tmpangle < 0)
            {
                spriteEffect = SpriteEffects.None;
            }
            else if (tmpangle > 0)
            {
                spriteEffect = SpriteEffects.FlipHorizontally;
            }

            return(base.Update(elapsed));
        }
コード例 #29
0
ファイル: ParticuleTTL.cs プロジェクト: MrSchlag/bloodbender
        public override bool Update(float elapsed)
        {
            if (inWait == true)
            {
                return(false);
            }

            if (timer >= lifeTime)
            {
                timer  = 0;
                inWait = true;
                return(false);
            }
            else
            {
                timer += elapsed;
            }

            position = intermediatePosition + referencePosition;

            position = RadianAngle.rotate(referencePosition, position, angle);

            return(base.Update(elapsed));
        }
コード例 #30
0
 public ParticuleSpawnerDTL(Vector2 position, RadianAngle angle, GraphicObj target, Vector2 offSetPosition) : base(position, angle, target, offSetPosition)
 {
 }