Example #1
0
        //creation
        public static Vessel Create(Creature creature, Vector3 positionOffset)
        {
            try
            {
                AvailablePart partInfo      = PartLoader.LoadedPartsList.First(ap => ap.name == creature.part);
                Part          referencePart = FlightGlobals.ActiveVessel.rootPart;

                Part part = (Part)UnityEngine.Object.Instantiate(partInfo.partPrefab);
                part.gameObject.SetActive(true);
                part.gameObject.name = partInfo.name;
                part.partInfo        = partInfo;
                part.SetMirror(Vector3.one);

                ShipConstruct sc = new ShipConstruct();
                sc.Add(part);
                sc.SaveShip();
                sc.shipName = creature.name;

                Vessel vessel = sc.parts[0].localRoot.gameObject.AddComponent <Vessel>();
                vessel.id         = Guid.NewGuid();
                vessel.vesselName = sc.shipName;
                vessel.vesselType = VesselType.Unknown;
                //vessel.DiscoveryInfo.Load(ProtoVessel.CreateDiscoveryNode(DiscoveryLevels.Unowned, UntrackedObjectClass.A, 10000, 10000));
                vessel.ctrlState = new FlightCtrlState();
                vessel.ctrlState.NeutralizeAll();
                vessel.Initialize(false);
                vessel.Landed = false;
                vessel.SetPosition(referencePart.transform.position + positionOffset);
                vessel.SetRotation(Quaternion.identity);

                //manually remove orbit renderer
                UnityEngine.Object.Destroy(vessel.orbitDriver.Renderer);

                CreaturePart cp = (CreaturePart)vessel.rootPart;
                cp.creature  = creature;
                cp.flightID  = ShipConstruction.GetUniqueFlightID(HighLogic.CurrentGame.flightState);
                cp.missionID = referencePart.missionID;
                cp.flagURL   = referencePart.flagURL;

                FlightLogger.eventLog.Add(Utils.FormatTime(referencePart.vessel.missionTime) + "A " + creature.name + " was seen.");

                return(vessel);
            }
            catch (Exception e)
            {
                Utils.LogError("Error encountered while spawning part");
                if (e != null)
                {
                    Debug.LogException(e);
                }
            }

            return(null);
        }
Example #2
0
        private void CreateCreatureExplosion(Creature creature, CreaturePart part)
        {
            GameObject obj = new GameObject("CreatureExplosionFX");

            obj.transform.position = part.transform.position;

            KSPParticleEmitter particles = obj.AddComponent <KSPParticleEmitter> ();

            CreateKSPParticleEmitter(particles);

            Color color = (Settings.AllowCreatureGore ? creature.Gore.bloodColor : creature.Gore.skinColor);

            particles.color              = color;
            particles.doesAnimateColor   = true;
            particles.colorAnimation     = new Color[5];
            particles.colorAnimation [0] = color;
            particles.colorAnimation [1] = color.A(0.8f);
            particles.colorAnimation [2] = color.A(0.4f);
            particles.colorAnimation [3] = color.A(0.2f);
            particles.colorAnimation [4] = color.A(0f);

            Texture2D bloodParticleTexture = new Texture2D(4, 4);

            bloodParticleTexture.LoadImage(Textures.CreatureBloodExplosionParticle);
            particles.material.SetTexture("_MainTex", bloodParticleTexture);

            particles.maxEmission     = 1000;
            particles.maxEnergy       = 1.5f;
            particles.maxParticleSize = 2.5f;
            particles.maxSize         = 3.5f;
            particles.minEmission     = 1000;
            particles.minEnergy       = 0.5f;
            particles.minSize         = 2f;

            particles.damping            = 0.9f;
            particles.force              = FlightGlobals.getGeeForceAtPosition(obj.transform.position) * 2.5f;
            particles.rndAngularVelocity = 0f;
            particles.rndRotation        = true;
            particles.rndForce           = Vector3.one * 4f * creature.Gore.bloodVelocityMultiplier;
            particles.rndVelocity        = Vector3.one * 8f * creature.Gore.bloodVelocityMultiplier;
            particles.shape3D            = Vector3.one * creature.Gore.bloodSphereSize;

            CreatureExplosion creatureExplosion = obj.AddComponent <CreatureExplosion> ();

            creatureExplosion.particles = particles;
        }
        private void CreateCreatureExplosion(Creature creature, CreaturePart part)
        {
            GameObject obj = new GameObject ("CreatureExplosionFX");
            obj.transform.position = part.transform.position;

            KSPParticleEmitter particles = obj.AddComponent<KSPParticleEmitter> ();
            CreateKSPParticleEmitter (particles);

            Color color = (Settings.AllowCreatureGore ? creature.Gore.bloodColor : creature.Gore.skinColor);
            particles.color = color;
            particles.doesAnimateColor = true;
            particles.colorAnimation = new Color[5];
            particles.colorAnimation [0] = color;
            particles.colorAnimation [1] = color.A (0.8f);
            particles.colorAnimation [2] = color.A (0.4f);
            particles.colorAnimation [3] = color.A (0.2f);
            particles.colorAnimation [4] = color.A (0f);

            Texture2D bloodParticleTexture = new Texture2D (4, 4);
            bloodParticleTexture.LoadImage (Textures.CreatureBloodExplosionParticle);
            particles.material.SetTexture ("_MainTex", bloodParticleTexture);

            particles.maxEmission = 1000;
            particles.maxEnergy = 1.5f;
            particles.maxParticleSize = 2.5f;
            particles.maxSize = 3.5f;
            particles.minEmission = 1000;
            particles.minEnergy = 0.5f;
            particles.minSize = 2f;

            particles.damping = 0.9f;
            particles.force = FlightGlobals.getGeeForceAtPosition (obj.transform.position) * 2.5f;
            particles.rndAngularVelocity = 0f;
            particles.rndRotation = true;
            particles.rndForce = Vector3.one * 4f * creature.Gore.bloodVelocityMultiplier;
            particles.rndVelocity = Vector3.one * 8f * creature.Gore.bloodVelocityMultiplier;
            particles.shape3D = Vector3.one * creature.Gore.bloodSphereSize;

            CreatureExplosion creatureExplosion = obj.AddComponent<CreatureExplosion> ();
            creatureExplosion.particles = particles;
        }
 public static void CreateCreatureExplosion(CreaturePart part)
 {
     Instance.CreateCreatureExplosion (part.creature, part);
 }
Example #5
0
 public static void CreateCreatureExplosion(CreaturePart part)
 {
     Instance.CreateCreatureExplosion(part.creature, part);
 }