Example #1
0
 public void SubscribeToDart(IDart leDart, DartGunV2 dartGun)
 {
     _dart = leDart;
     _dartGun = dartGun;
     leDart.DartDestroyed += LeDartOnDartDestroyed;
     leDart.DartCollision += LeDart_DartCollision;
 }
Example #2
0
 public void SubscribeToDart(IDart leDart, DartGunV2 dartGun)
 {
     _dart                 = leDart;
     _dartGun              = dartGun;
     leDart.DartDestroyed += LeDartOnDartDestroyed;
     leDart.DartCollision += LeDart_DartCollision;
 }
Example #3
0
    private IEnumerator SpawnHosePortions(DartGunV2 dartGunV2, DartV2 leDart)
    {
        DartChainV3 closestHose   = leDart._kinematicChain;
        bool        _dartCollided = false;

        leDart.DartCollision += (sender, e) => _dartCollided = true;
        int numberOfCrossSectionsSpawned = 0;

        while (!_dartCollided)
        {
            //Debug.Log(Vector3.Distance(closestHose.transform.position, dartGunV2._kinematicChain.transform.position) + " " + Settings.HoseLength);
            while (Vector3.Distance(leDart._kinematicChain.transform.position, dartGunV2._kinematicChain.transform.position) > Settings.HoseLength * numberOfCrossSectionsSpawned)
            {
                //Debug.Log(Vector3.Distance(closestHose.transform.position, dartGunV2._kinematicChain.transform.position) + " " + Settings.HoseLength);
                var positionRelative = -closestHose.transform.position + dartGunV2._kinematicChain.transform.position;
                var newClosestHose   = (DartChainV3)Instantiate(_dartChainPrefab, closestHose.transform.position + positionRelative, _dartSpawnPoint.transform.rotation);

                leDart.AssignOwner(this);
                leDart.SubscribeToChain(newClosestHose);
                newClosestHose._distanceJoint.distance = Settings.JointLength;
                newClosestHose.SubscribeToDart(leDart, this);
                newClosestHose.AddNext(closestHose, Settings);

                closestHose = newClosestHose;
                numberOfCrossSectionsSpawned++;
            }
            //Debug.Break();
            yield return(new WaitForFixedUpdate());
        }

        //Amazingly bad practice :(
        if (numberOfCrossSectionsSpawned <= Settings.MinimumCrossSectionsToSpawn)
        {
            while (numberOfCrossSectionsSpawned <= Settings.MinimumCrossSectionsToSpawn)
            {
                var positionRelative = -closestHose.transform.position + dartGunV2._kinematicChain.transform.position;
                var newClosestHose   = (DartChainV3)Instantiate(_dartChainPrefab, closestHose.transform.position + positionRelative, _dartSpawnPoint.transform.rotation);

                leDart.AssignOwner(this);
                leDart.SubscribeToChain(newClosestHose);
                newClosestHose._distanceJoint.distance = Settings.JointLength;
                newClosestHose.SubscribeToDart(leDart, this);
                newClosestHose.AddNext(closestHose, Settings);

                closestHose = newClosestHose;
                numberOfCrossSectionsSpawned++;
            }
            //Debug.Break();
        }
        closestHose.Track(_kinematicChain);
    }
Example #4
0
    private IEnumerator SpawnHosePortions(DartGunV2 dartGunV2, DartV2 leDart)
    {
        DartChainV3 closestHose = leDart._kinematicChain;
        bool _dartCollided = false;
        leDart.DartCollision += (sender, e) => _dartCollided = true;
        int numberOfCrossSectionsSpawned = 0;
        while(!_dartCollided)
        {
            //Debug.Log(Vector3.Distance(closestHose.transform.position, dartGunV2._kinematicChain.transform.position) + " " + Settings.HoseLength);
            while (Vector3.Distance(leDart._kinematicChain.transform.position, dartGunV2._kinematicChain.transform.position) > Settings.HoseLength * numberOfCrossSectionsSpawned)
            {
                //Debug.Log(Vector3.Distance(closestHose.transform.position, dartGunV2._kinematicChain.transform.position) + " " + Settings.HoseLength);
                var positionRelative = -closestHose.transform.position + dartGunV2._kinematicChain.transform.position;
                var newClosestHose = (DartChainV3)Instantiate(_dartChainPrefab, closestHose.transform.position + positionRelative, _dartSpawnPoint.transform.rotation);

                leDart.AssignOwner(this);
                leDart.SubscribeToChain(newClosestHose);
                newClosestHose._distanceJoint.distance = Settings.JointLength;
                newClosestHose.SubscribeToDart(leDart,this);
                newClosestHose.AddNext(closestHose, Settings);

                closestHose = newClosestHose;
                numberOfCrossSectionsSpawned++;
            }
            //Debug.Break();
            yield return new WaitForFixedUpdate();
        }

        //Amazingly bad practice :(
        if(numberOfCrossSectionsSpawned <= Settings.MinimumCrossSectionsToSpawn)
        {
            while(numberOfCrossSectionsSpawned <= Settings.MinimumCrossSectionsToSpawn)
            {
                var positionRelative = -closestHose.transform.position + dartGunV2._kinematicChain.transform.position;
                var newClosestHose = (DartChainV3)Instantiate(_dartChainPrefab, closestHose.transform.position + positionRelative, _dartSpawnPoint.transform.rotation);

                leDart.AssignOwner(this);
                leDart.SubscribeToChain(newClosestHose);
                newClosestHose._distanceJoint.distance = Settings.JointLength;
                newClosestHose.SubscribeToDart(leDart, this);
                newClosestHose.AddNext(closestHose, Settings);

                closestHose = newClosestHose;
                numberOfCrossSectionsSpawned++;
            }
            //Debug.Break();
        }
        closestHose.Track(_kinematicChain);
    }
Example #5
0
 public void AssignOwner(DartGunV2 dartGun)
 {
     _dartGun = dartGun;
 }
Example #6
0
 public void AssignOwner(DartGunV2 dartGun)
 {
     _dartGun = dartGun;
 }