//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); }
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); }
public static void CreateCreatureExplosion(CreaturePart part) { Instance.CreateCreatureExplosion(part.creature, part); }