Jump to content

Custom engine lacking particle effects


Recommended Posts

Have been working on a plugin, which is going great, but part of what I'm doing was extending ModuleEnginesFx. When I made my test engine I used the swivel as a base, not even realizing that it was still using ModuleEngines. Immediately noticed that the effects (at that point both sound and particles) weren't there, but didn't think much of it and continued with the designing the modified ModuleEnginesFx. Mostly done with that particular component of the plugin and decided to figure out how to get the particles working. Realized pretty quickly that the engine I'd used was based on the wrong Module and worked towards converting it over using the Vector as a base. At this point, I've got sound working but I still can't get the particles to show up.

Anybody willing to take a look at tell me what I'm doing wrong?

Spoiler

PART
{
	name = ES_EVE125
	module = Part
	author = Darinth
	mesh = model.mu
	//scale = 0.1
	node_stack_top = 0.0, 0.721461, 0.0, 0.0, 1.0, 0.0
	node_stack_bottom = 0.0, -0.574338, 0.0, 0.0, -1.0, 0.0
	//fx_exhaustFlame_blue = 0.0, -5.74338, 0.0, 0.0, 1.0, 0.0, running
	//fx_exhaustLight_blue = 0.0, -5.74338, 0.0, 0.0, 0.0, 1.0, running
	//fx_smokeTrail_light = 0.0, -5.74338, 0.0, 0.0, 1.0, 0.0, running
	//fx_exhaustSparks_flameout = 0.0, -5.74338, 0.0, 0.0, 1.0, 0.0, flameout
	//sound_vent_medium = engage
	//sound_rocket_hard = running
	//sound_vent_soft = disengage
	//sound_explosion_low = flameout
	TechRequired = basicRocketry
	entryCost = 350000
	cost = 120000
	category = Engine
	subcategory = 0
	title = EVE 1.25
	manufacturer = Exotic Solutions
	description = EVEs (Exotic Variability Engines) are the first foray into using exotic energies! Utilizing an Exotic Energies Excitation field, this engine can be initialized with variable amounts of exotic energy to give it a wide variety of applications.
	attachRules = 1,0,1,0,0
	mass = 1.5
	heatConductivity = 0.06 // half default
	skinInternalConductionMult = 4.0
	emissiveConstant = 0.8 // engine nozzles are good at radiating.
	dragModelType = default
	maximum_drag = 0.2
	minimum_drag = 0.2
	angularDrag = 2
	crashTolerance = 7
	maxTemp = 2000 // = 3600
	bulkheadProfiles = size1
	tags = exotic eve engine energies 125
	EFFECTS
	{
		running_closed
		{
			AUDIO
			{
				channel = Ship
				clip = sound_rocket_hard
				volume = 0.0 0.0
				volume = 0.05 0.6
				volume = 1.0 1.5
				pitch = 0.0 1.2
				pitch = 1.0 2.0
				loop = true
			}
			PREFAB_PARTICLE
			{
				prefabName = fx_smokeTrail_light
				transformName = smokePoint
				emission = 0.0 0.0
				emission = 0.05 0.0
				emission = 0.075 0.25
				emission = 1.0 1.25
				speed = 0.0 0.25
				speed = 1.0 1.0
				localOffset = 0, 0, 0
			}
			MODEL_MULTI_PARTICLE
			{
				//modelName = Squad/FX/ks25_Exhaust
				modelName = Squad/FX/hydroLOXFlame
				transformName = thrustPoint
				emission = 0.0 0.0
				emission = 0.1 0.5
				emission = 1.0 1.0
				speed = 0.0 0.8
				speed = 1.0 1.0
				localPosition = 0, 0, 0.08
			}
		}
		shockDiamond
		{

//			MODEL_MULTI_PARTICLE
//			{
//				modelName = Squad/FX/diamondBlue
//				transformName = thrustTransform
//				emission = 0.0 0.0
//				//emission = 0.05 0.0
//				//emission = 0.075 0.5
//				emission = 1.0 1.0
//				speed = 0.0 0.2
//				speed = 1.0 1.0
//			}
			PREFAB_PARTICLE
			{
				prefabName = fx_exhaustFlame_blue_small
				transformName = thrustTransformYup
				emission = 0.0 0.0
				emission = 0.05 1.0
				emission = 0.5 3.5
				emission = 1.0 5.0
				speed = 0.0 0.5
				speed = 1.0 0.8
				localOffset = 0, 0, 0
			}
		}
		engage
		{
			AUDIO
			{
				channel = Ship
				channel = Ship
				clip = sound_vent_soft
				volume = 1.0
				pitch = 2.0
				loop = false
			}
		}
		disengage
		{
			PREFAB_PARTICLE
			{
				prefabName = fx_exhaustSparks_flameout_2
				transformName = thrustTransform
				oneShot = true
			}
			AUDIO
			{
				channel = Ship
				clip = sound_explosion_low
				volume = 1.0
				pitch = 2.0
				loop = false
			}
		}
	}
	MODULE
	{
		name = ModuleEnginesFX
    engineID = EVE125
		runningEffectName = running_closed
		thrustVectorTransformName = thrustTransform
		powerEffectName = shockDiamond
		exhaustDamage = True
		ignitionThreshold = 0.1
		minThrust = 0
		maxThrust = 200
		heatProduction = 200
		fxOffset = 0, 0, 0
		EngineType = LiquidFuel
		exhaustDamageDistanceOffset = 0.79
    //MinVariableThrust = 50
    //MaxVariableThrust = 2500
    //EEToThrustRatio = 50
    //MinVariableISP = 105
    //MaxVariableISP = 1600
    //EEToISPRatio = 65
    //EEMultiplier = 1
		PROPELLANT
		{
			name = LiquidFuel
			ratio = 0.9
			DrawGauge = True
		}
		PROPELLANT
		{
			name = Oxidizer
			ratio = 1.1
		}
		atmosphereCurve
		{
			key = 0 300
			key = 1 250
			key = 6 0.001
		}
	}
	MODULE
	{
		name = ModuleJettison
		jettisonName = fairing
		bottomNodeName = bottom
		isFairing = True
		jettisonedObjectMass = 0.1
		jettisonForce = 5
		jettisonDirection = 0 0 1
	}
	MODULE
	{
		name = ModuleGimbal
		gimbalTransformName = thrustTransform
		gimbalRange = 3
	}
	MODULE
	{
		name = FXModuleAnimateThrottle
		animationName = HeatEmissiveAnimation
		responseSpeed = 0.001
		dependOnEngineState = True
		dependOnThrottle = True
	}
	MODULE
	{
		name = ModuleAlternator
		RESOURCE
		{
			name = ElectricCharge
			rate = 6.0
		}
	}
//	MODULE
//	{
//		name = ModuleSurfaceFX
//		thrustProviderModuleIndex = 0
//		fxMax = 0.5
//		maxDistance = 30
//		falloff = 1.7
//		thrustTransformName = thrustTransform
//	}
	MODULE
	{
		name = ModuleTestSubject
		useStaging = True
		useEvent = True
		situationMask = 127
		CONSTRAINT
		{
			type = REPEATABILITY
			value = ALWAYS
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = BODYANDSITUATION
			prestige = Significant
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = ONCEPERPART
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 4000
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 8000
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 2000
			prestige = Significant
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 4000
			prestige = Significant
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 1000
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 2000
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = GT
			value = 0 // this just registers altitude as something to care about
			situationMask = 8
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = LT
			value = 300000
			situationMask = 16
			body = _NotSun
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = LT
			value = 600000
			situationMask = 32
			body = _NotSun
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 0
			situationMask = 8
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 600
			situationMask = 8
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 300
			situationMask = 8
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 1200
			situationMask = 8
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 600
			situationMask = 8
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 2500
			situationMask = 8
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 200
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = GT
			value = 100
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 100
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = GT
			value = 50
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 50
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = GT
			value = 20
			prestige = Exceptional
		}
	}
}

 

 

Link to comment
Share on other sites

For anybody that google might point towards this topic in the future (as today it kept wanting to point me back to my own topic to find the answer) it can be found here and here. This issue was that the transform names listed in the engine config files are defined in the models. The model for the Vector defines a variety of transforms to connect particles to. The model for the swivel doesn't define the same ones. The only one I know for certain it has is thrustTransform. After using it for my particle transforms I had particles, though they were often offset or pointing in the wrong directions. Those threads also give guidance on how to adjust those properties and after fiddling around for a little bit I had all of my particles lined up and originating at appropriate locations.

Here's my current iteration of the config file:

Spoiler

PART
{
	name = ES_EVE125
	module = Part
	author = Darinth
	mesh = model.mu
	//scale = 0.1
	node_stack_top = 0.0, 0.721461, 0.0, 0.0, 1.0, 0.0
	node_stack_bottom = 0.0, -0.574338, 0.0, 0.0, -1.0, 0.0
	//fx_exhaustFlame_blue = 0.0, -5.74338, 0.0, 0.0, 1.0, 0.0, running
	//fx_exhaustLight_blue = 0.0, -5.74338, 0.0, 0.0, 0.0, 1.0, running
	//fx_smokeTrail_light = 0.0, -5.74338, 0.0, 0.0, 1.0, 0.0, running
	//fx_exhaustSparks_flameout = 0.0, -5.74338, 0.0, 0.0, 1.0, 0.0, flameout
	//sound_vent_medium = engage
	//sound_rocket_hard = running
	//sound_vent_soft = disengage
	//sound_explosion_low = flameout
	TechRequired = basicRocketry
	entryCost = 350000
	cost = 120000
	category = Engine
	subcategory = 0
	title = EVE 1.25
	manufacturer = Exotic Solutions
	description = EVEs (Exotic Variability Engines) are the first foray into using exotic energies! Utilizing an Exotic Energies Excitation field, this engine can be initialized with variable amounts of exotic energy to give it a wide variety of applications.
	attachRules = 1,0,1,0,0
	mass = 1.5
	heatConductivity = 0.06 // half default
	skinInternalConductionMult = 4.0
	emissiveConstant = 0.8 // engine nozzles are good at radiating.
	dragModelType = default
	maximum_drag = 0.2
	minimum_drag = 0.2
	angularDrag = 2
	crashTolerance = 7
	maxTemp = 2000 // = 3600
	bulkheadProfiles = size1
	tags = exotic eve engine energies 125
	EFFECTS
	{
		running_closed
		{
			AUDIO
			{
				channel = Ship
				clip = sound_rocket_hard
				volume = 0.0 0.0
				volume = 0.05 0.6
				volume = 1.0 1.5
				pitch = 0.0 1.2
				pitch = 1.0 2.0
				loop = true
			}
			PREFAB_PARTICLE
			{
				prefabName = fx_smokeTrail_light
				transformName = thrustTransform
				emission = 0.0 0.0
				emission = 0.05 0.0
				emission = 0.075 0.25
				emission = 1.0 1.25
				speed = 0.0 0.25
				speed = 1.0 1.0
				localOffset = 0, 0, 1
        localRotation = 1, 0, 0, -90
			}
			MODEL_MULTI_PARTICLE
			{
				//modelName = Squad/FX/ks25_Exhaust
				modelName = Squad/FX/hydroLOXFlame
				transformName = thrustTransform
				emission = 0.0 0.0
				emission = 0.1 0.5
				emission = 1.0 1.0
				speed = 0.0 0.8
				speed = 1.0 1.0
				localPosition = 0, 0, 0.25
			}
		}
		shockDiamond
		{

//			MODEL_MULTI_PARTICLE
//			{
//				modelName = Squad/FX/diamondBlue
//				transformName = thrustTransform
//				emission = 0.0 0.0
//				//emission = 0.05 0.0
//				//emission = 0.075 0.5
//				emission = 1.0 1.0
//				speed = 0.0 0.2
//				speed = 1.0 1.0
//			}
			PREFAB_PARTICLE
			{
				prefabName = fx_exhaustFlame_blue_small
				transformName = thrustTransform
				emission = 0.0 0.0
				emission = 0.05 1.0
				emission = 0.5 3.5
				emission = 1.0 5.0
				speed = 0.0 0.5
				speed = 1.0 0.8
				localOffset = 0, 0, .25
        localRotation = 1, 0, 0, -90
      }
		}
		engage
		{
			AUDIO
			{
				channel = Ship
				channel = Ship
				clip = sound_vent_soft
				volume = 1.0
				pitch = 2.0
				loop = false
			}
		}
		disengage
		{
			PREFAB_PARTICLE
			{
				prefabName = fx_exhaustSparks_flameout_2
				transformName = thrustTransform
				oneShot = true
			}
			AUDIO
			{
				channel = Ship
				clip = sound_explosion_low
				volume = 1.0
				pitch = 2.0
				loop = false
			}
		}
	}
	MODULE
	{
		name = ModuleEnginesFX
    engineID = EVE125
		runningEffectName = running_closed
		thrustVectorTransformName = thrustTransform
		powerEffectName = shockDiamond
		exhaustDamage = True
		ignitionThreshold = 0.1
		minThrust = 0
		maxThrust = 200
		heatProduction = 200
		fxOffset = 0, 0, 0
		EngineType = LiquidFuel
		exhaustDamageDistanceOffset = 0.79
    //MinVariableThrust = 50
    //MaxVariableThrust = 2500
    //EEToThrustRatio = 50
    //MinVariableISP = 105
    //MaxVariableISP = 1600
    //EEToISPRatio = 65
    //EEMultiplier = 1
		PROPELLANT
		{
			name = LiquidFuel
			ratio = 0.9
			DrawGauge = True
		}
		PROPELLANT
		{
			name = Oxidizer
			ratio = 1.1
		}
		atmosphereCurve
		{
			key = 0 300
			key = 1 250
			key = 6 0.001
		}
	}
	MODULE
	{
		name = ModuleJettison
		jettisonName = fairing
		bottomNodeName = bottom
		isFairing = True
		jettisonedObjectMass = 0.1
		jettisonForce = 5
		jettisonDirection = 0 0 1
	}
	MODULE
	{
		name = ModuleGimbal
		gimbalTransformName = thrustTransform
		gimbalRange = 3
	}
	MODULE
	{
		name = FXModuleAnimateThrottle
		animationName = HeatEmissiveAnimation
		responseSpeed = 0.001
		dependOnEngineState = True
		dependOnThrottle = True
	}
	MODULE
	{
		name = ModuleAlternator
		RESOURCE
		{
			name = ElectricCharge
			rate = 6.0
		}
	}
//	MODULE
//	{
//		name = ModuleSurfaceFX
//		thrustProviderModuleIndex = 0
//		fxMax = 0.5
//		maxDistance = 30
//		falloff = 1.7
//		thrustTransformName = thrustTransform
//	}
	MODULE
	{
		name = ModuleTestSubject
		useStaging = True
		useEvent = True
		situationMask = 127
		CONSTRAINT
		{
			type = REPEATABILITY
			value = ALWAYS
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = BODYANDSITUATION
			prestige = Significant
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = ONCEPERPART
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 4000
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 8000
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 2000
			prestige = Significant
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 4000
			prestige = Significant
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 1000
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 2000
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = GT
			value = 0 // this just registers altitude as something to care about
			situationMask = 8
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = LT
			value = 300000
			situationMask = 16
			body = _NotSun
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = LT
			value = 600000
			situationMask = 32
			body = _NotSun
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 0
			situationMask = 8
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 600
			situationMask = 8
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 300
			situationMask = 8
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 1200
			situationMask = 8
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 600
			situationMask = 8
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 2500
			situationMask = 8
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 200
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = GT
			value = 100
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 100
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = GT
			value = 50
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 50
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = GT
			value = 20
			prestige = Exceptional
		}
	}
}

 

 

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...