public void SubscribeToDart(IDart leDart, DartGunV2 dartGun) { _dart = leDart; _dartGun = dartGun; leDart.DartDestroyed += LeDartOnDartDestroyed; leDart.DartCollision += LeDart_DartCollision; }
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); }
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); }
public void AssignOwner(DartGunV2 dartGun) { _dartGun = dartGun; }