Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 public MissileInfo(IAircraftScript missileAircraftScript, IMissileScript missileScript)
 {
     this.missileAircraftScript = missileAircraftScript;
     this.missileScript         = missileScript;
     rigidbody = ((IPartScript)((MonoBehaviour)missileScript).GetComponent(PartScript.type)).Body.RigidBody;
 }