/// <summary> /// Add to Dictionary and return AirTarget ref of the adde missile /// </summary> /// <param name="missileScript"></param> /// <returns>Generated Target</returns> public ITarget CreateTarget4LaunchedMissile(IMissileScript missileScript) { //Register callback to handle missile explsion event missileScript.Exploded += OnMissleExploded; //Add AircraftScript to the missile var missileAircraftScript = (MonoBehaviour)((MonoBehaviour)missileScript).gameObject.AddComponent(AircraftScript.type); missileAircraftScript.enabled = false; IAircraft tempAircraft = NewAircraft; IPartScript partScript = (IPartScript)missileAircraftScript.GetComponent(PartScript.type); var firedByName = ((MonoBehaviour)partScript.Aircraft).name; //Rename Aircraft tempAircraft.Name = $"{missileAircraftScript.name} ({firedByName})"; //Set AircraftScript values AircraftScript.InvokeMethod("set_Aircraft", missileAircraftScript, new object[] { tempAircraft }); ((IAircraftScript)missileAircraftScript).MainCockpit = partScript; //Create the target presenting missile var target = (ITarget)AirTarget.type.GetConstructor(new Type[] { AircraftScript.type }).Invoke(new object[] { missileAircraftScript }); aircraftLaunchedMissiles.Add(target, new MissileInfo((IAircraftScript)missileAircraftScript, (IMissileScript)missileScript)); return(target); }
public MissileInfo(IAircraftScript missileAircraftScript, IMissileScript missileScript) { this.missileAircraftScript = missileAircraftScript; this.missileScript = missileScript; rigidbody = ((IPartScript)((MonoBehaviour)missileScript).GetComponent(PartScript.type)).Body.RigidBody; }