public void Awake_NegativeMaxSpeedValueThrowsException()
        {
            string expectedLog = "NegativeSpeedValueException: Specified argument was out of the range of valid values.";

            LogAssert.Expect(LogType.Exception, expectedLog);
            _mover = instantiateNegativeSpeedMover() as LinearMover;
        }
        protected override Mover instantiateMover()
        {
            LinearMover prefab = Resources.Load <LinearMover>(_moverPrefabPath);
            LinearMover result = GameObject.Instantiate(prefab);

            result.transform.position = _startPosition;
            result.Speed = _testSpeed;
            return(result);
        }
        public void MoveTo_TimeToTargetHasPredictedValue()
        {
            _mover = instantiateMover() as LinearMover;
            // Formula: t = s / v (t: Time in seconds | s: distance | v: velocity.magnitude)
            float predictedTime = _initialDistanceVector.magnitude / _testSpeed;

            _mover.MoveTo(_target);

            Assert.AreEqual(_mover.TimeToTarget, predictedTime);
        }
        public IEnumerator MoveTo_MovedBySpeedAfterFixedUpdate()
        {
            _mover = instantiateMover() as LinearMover;

            _mover.MoveTo(_target);
            yield return(new WaitForFixedUpdate());

            float predictedRemainingDistanceToTarget = _initialDistanceVector.magnitude - _testSpeedPerFixedUpdate;
            float actualRemainingDistaceToTarget     = (_target - (Vector2)_mover.transform.position).magnitude;

            Assert.AreEqual(predictedRemainingDistanceToTarget, actualRemainingDistaceToTarget, _epsilon);
        }
        public IEnumerator MoveTo_ReachesTargetAfterPredictedTime()
        {
            Time.timeScale = 20f;
            _mover         = instantiateMover() as LinearMover;

            _mover.MoveTo(_target);
            float predictedTime = _mover.TimeToTarget;
            float timeLeft      = predictedTime;

            while (timeLeft > Time.deltaTime)
            {
                Assert.AreNotEqual(_target, (Vector2)_mover.transform.position);
                timeLeft -= Time.fixedDeltaTime;
                yield return(new WaitForFixedUpdate());
            }

            yield return(new WaitForFixedUpdate());

            Assert.AreEqual(_target, (Vector2)_mover.transform.position);
            Time.timeScale = 1f;
        }
    public void ProducePath(PathEditor pe)
    {
        Enemy e = GenerateTestEnemy();

        EnemyMover mover;
        if(moveString.Equals("Linear")){
            mover = new LinearMover(e);
        }else if(moveString.Equals("Linear_Right")){
            mover = new LinearMover(e);
            mover.PutInRightLane();
        }else if(moveString.Equals("Linear_Left")){
            mover = new LinearMover(e);
            mover.PutInLeftLane();
        }else if(moveString.Equals("Slowing_Linear")){
            mover = new SlowingLinearMover(e);
        }else if(moveString.Equals("Slowing_Linear_Right")){
            mover = new SlowingLinearMover(e);
            mover.PutInRightLane();
        }else if(moveString.Equals("Slowing_Linear_Left")){
            mover = new SlowingLinearMover(e);
            mover.PutInLeftLane();
        }else if(moveString.Equals ("Zigzag")){
            mover = new ZigzagMover(e);
        }else if(moveString.Equals ("Zigzag_Mirror")){
            ZigzagMover zm = new ZigzagMover(e);
            zm.Mirror();
            mover = zm;
        }else if(moveString.Equals ("Strafing")){
            mover = new StrafingMover(e);
        }else if(moveString.Equals ("Strafing_Mirror")){
            StrafingMover sm = new StrafingMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Sine")){
            mover = new SineMover(e);
        }else if(moveString.Equals ("Sine_Mirror")){
            SineMover sm = new SineMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Swerve_Right")){
            mover = new SwerveMover(e);
        }else if(moveString.Equals ("Swerve_Left")){
            SwerveMover sm = new SwerveMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Swerve_In_Left")){
            SwerveMover sm = new SwerveMover(e);
            sm.PutInLeftLane();
            mover = sm;
        }else if(moveString.Equals ("Swerve_In_Right")){
            SwerveMover sm = new SwerveMover(e);
            sm.PutInRightLane();
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Semicircle")){
            mover = new SemicircleMover(e);
        }else if(moveString.Equals ("Semicircle_Mirror")){
            SemicircleMover sm = new SemicircleMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Sidestep")){
            mover = new SidestepMover(e);
        }else if(moveString.Equals ("Sidestep_Mirror")){
            SidestepMover sm = new SidestepMover(e);
            sm.Mirror();
            mover = sm;
        }else{
            Debug.Log ("Invalid mover type!");
            Destroy(e.gameObject);
            return;
        }
        mover.LeftOffset(30f);
        Vector2[] pointset = new Vector2[pointResolution];
        for(int i = 0; i < pointResolution; i++){
            float prog = ((float)i)/((float)(pointResolution-1));
            pointset[i] = mover.PositionFromProgress(prog);
        }
        Destroy (e.gameObject);
        //convert vector set to point-based path
        pe.GeneratePathFromVectorArray(pointset);
    }
    public void ProducePath(PathEditor pe)
    {
        Enemy e = GenerateTestEnemy();

        EnemyMover mover;

        if (moveString.Equals("Linear"))
        {
            mover = new LinearMover(e);
        }
        else if (moveString.Equals("Linear_Right"))
        {
            mover = new LinearMover(e);
            mover.PutInRightLane();
        }
        else if (moveString.Equals("Linear_Left"))
        {
            mover = new LinearMover(e);
            mover.PutInLeftLane();
        }
        else if (moveString.Equals("Slowing_Linear"))
        {
            mover = new SlowingLinearMover(e);
        }
        else if (moveString.Equals("Slowing_Linear_Right"))
        {
            mover = new SlowingLinearMover(e);
            mover.PutInRightLane();
        }
        else if (moveString.Equals("Slowing_Linear_Left"))
        {
            mover = new SlowingLinearMover(e);
            mover.PutInLeftLane();
        }
        else if (moveString.Equals("Zigzag"))
        {
            mover = new ZigzagMover(e);
        }
        else if (moveString.Equals("Zigzag_Mirror"))
        {
            ZigzagMover zm = new ZigzagMover(e);
            zm.Mirror();
            mover = zm;
        }
        else if (moveString.Equals("Strafing"))
        {
            mover = new StrafingMover(e);
        }
        else if (moveString.Equals("Strafing_Mirror"))
        {
            StrafingMover sm = new StrafingMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Sine"))
        {
            mover = new SineMover(e);
        }
        else if (moveString.Equals("Sine_Mirror"))
        {
            SineMover sm = new SineMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Swerve_Right"))
        {
            mover = new SwerveMover(e);
        }
        else if (moveString.Equals("Swerve_Left"))
        {
            SwerveMover sm = new SwerveMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Swerve_In_Left"))
        {
            SwerveMover sm = new SwerveMover(e);
            sm.PutInLeftLane();
            mover = sm;
        }
        else if (moveString.Equals("Swerve_In_Right"))
        {
            SwerveMover sm = new SwerveMover(e);
            sm.PutInRightLane();
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Semicircle"))
        {
            mover = new SemicircleMover(e);
        }
        else if (moveString.Equals("Semicircle_Mirror"))
        {
            SemicircleMover sm = new SemicircleMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Sidestep"))
        {
            mover = new SidestepMover(e);
        }
        else if (moveString.Equals("Sidestep_Mirror"))
        {
            SidestepMover sm = new SidestepMover(e);
            sm.Mirror();
            mover = sm;
        }
        else
        {
            Debug.Log("Invalid mover type!");
            Destroy(e.gameObject);
            return;
        }
        mover.LeftOffset(30f);
        Vector2[] pointset = new Vector2[pointResolution];
        for (int i = 0; i < pointResolution; i++)
        {
            float prog = ((float)i) / ((float)(pointResolution - 1));
            pointset[i] = mover.PositionFromProgress(prog);
        }
        Destroy(e.gameObject);
        //convert vector set to point-based path
        pe.GeneratePathFromVectorArray(pointset);
    }
 public void MaxSpeedSet_NegativeValueThrowsException()
 {
     _mover = instantiateMover() as LinearMover;
     Assert.Throws <LinearMover.NegativeSpeedValueException>(() => _mover.Speed = -1f);
 }
 public void MaxSpeedSet()
 {
     _mover       = instantiateMover() as LinearMover;
     _mover.Speed = _testSpeed;
     Assert.AreEqual(_testSpeed, _mover.Speed);
 }
示例#10
0
        private Mover instantiateNegativeSpeedMover()
        {
            LinearMover prefab = Resources.Load <LinearMover>(_negativeSpeedMoverPrefabPath);

            return(GameObject.Instantiate(prefab));
        }
示例#11
0
        protected override Mover instantiateUninitializedMover()
        {
            LinearMover prefab = Resources.Load <LinearMover>(_uninitializedMoverPrefabPath);

            return(GameObject.Instantiate(prefab));
        }