Kerbal Space Program  1.12.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Properties | List of all members
ModuleControlSurface Class Reference
Inheritance diagram for ModuleControlSurface:
ModuleLiftingSurface IMultipleDragCube ITorqueProvider PartModule ILiftProvider ModuleAeroSurface

Public Member Functions

void ActionExtend (KSPActionParam act)
 
void ActionRetract (KSPActionParam act)
 
void ActionToggle (KSPActionParam act)
 
void ActivateAllControls (KSPActionParam act)
 Turns ON the Pitch, Roll and YAW controls More...
 
void AssumeDragCubePosition (string name)
 Used by the DragCubeSystem when it is generating drag cube entries on startup if none are found for this module. When called the module should set it's model position/setup to match the expected position/orientation when 'name' drag cube is active. More...
 
void DeactivateAllControls (KSPActionParam act)
 Turns OFF the Pitch, Roll and YAW controls More...
 
new void FixedUpdate ()
 
string[] GetDragCubeNames ()
 Should return an array of strings that are the drag cube names that this module implements. More...
 
override string GetInfo ()
 Returns formatted string of additional data for use in the VAB and SPH More...
 
override string GetModuleDisplayName ()
 Override this to provide a Localized version of the PartModules Name for UI components More...
 
Vector3 GetPotentialLift (bool positiveDeflection)
 Get the potential lift for extreme control inputs (world space) More...
 
void GetPotentialTorque (out Vector3 pos, out Vector3 neg)
 
void LateUpdate ()
 
override void OnAwake ()
 Method fires once the module has been added to the part. Use for first time setup. Module will not have loaded fully by this point More...
 
void OnDestroy ()
 
override void OnModuleAdjusterRemoved (AdjusterPartModuleBase adjuster)
 Perform processing specific to this part module when an adjuster is removed. More...
 
override void OnStart (PartModule.StartState state)
 
void PitchActive (KSPActionParam act)
 Turns ON the Pitch controls More...
 
void PitchInactive (KSPActionParam act)
 Turns OFF the Pitch controls More...
 
void RollActive (KSPActionParam act)
 Turns ON the Roll controls More...
 
void RollInactive (KSPActionParam act)
 Turns OFF the Roll controls More...
 
void TogglePitch (KSPActionParam act)
 Toggles the Pitch controls More...
 
void ToggleRoll (KSPActionParam act)
 Toggles the Roll controls More...
 
void ToggleYaw (KSPActionParam act)
 Toggles the YAW controls More...
 
bool UsesProceduralDragCubes ()
 Used by the DragCubeSystem when it is generating drag cube entries on startup if none are found for this module. Should return true if this module is to use procedural drag cubes and false if it is to generate drag cubes for the drag cube names returned in GetDragCubeNames method. More...
 
void YawActive (KSPActionParam act)
 Turns ON the YAW controls More...
 
void YawInactive (KSPActionParam act)
 Turns OFF the YAW controls More...
 
- Public Member Functions inherited from ModuleLiftingSurface
void FixedUpdate ()
 
Vector3 GetDragVector (Vector3 nVel, float absDot, double Q)
 
Vector3 GetDragVector (Vector3 nVel, float absDot, double Q, float mach)
 
override string GetInfo ()
 Returns formatted string of additional data for use in the VAB and SPH More...
 
Vector3 GetLiftVector (Vector3 liftVector, float liftDot, float absDot, double Q, float mach)
 
override string GetModuleDisplayName ()
 Override this to provide a Localized version of the PartModules Name for UI components More...
 
override void OnAwake ()
 Method fires once the module has been added to the part. Use for first time setup. Module will not have loaded fully by this point More...
 
void OnCenterOfLiftQuery (CenterOfLiftQuery qry)
 
override void OnModuleAdjusterRemoved (AdjusterPartModuleBase adjuster)
 Perform processing specific to this part module when an adjuster is removed. More...
 
override void OnStart (PartModule.StartState state)
 
void SetupCoefficients (Vector3 pointVelocity, out Vector3 nVel, out Vector3 liftVector, out float liftDot, out float absDot)
 
- Public Member Functions inherited from PartModule
void AddPartModuleAdjuster (AdjusterPartModuleBase newAdjuster)
 Call this to add an adjuster to this part module. More...
 
void AddPartModuleAdjusterList (List< AdjusterPartModuleBase > moduleAdjusters)
 Applies the appropriate module adjusters. Performs checks to make sure that the adjusters are valid too. More...
 
bool AppliedUpgrades ()
 Returns true if upgrades are applied More...
 
void ApplyAdjustersOnStart ()
 Called when a part module is loaded and applies all of the currently loaded adjusters. More...
 
virtual void ApplyUpgradeNode (List< string > appliedUps, ConfigNode node, bool doLoad)
 Applies the upgrades to a confignode. Will either copy the upgrades back to the node or (if doLoad) calls load/onload on it. More...
 
virtual bool ApplyUpgrades (StartState state)
 Will find and apply upgrades. Called during Part's ModulesOnStart, before a module's OnStart. More...
 
void Awake ()
 
delegate bool boolPMApplyUpgrades (PartModule pm, StartState state)
 
delegate bool boolPMBoolDelegate (PartModule pm, bool apply)
 
void ClearPersistentId ()
 Clear the modules persistentId More...
 
void Copy (PartModule fromModule)
 
virtual void DemoteToPhysicslessPart ()
 This method will be called from Part class DemoteToPhysicslessPart when the part is being converted from physical to physicsless part. It is called before the joints and rigidbodies are destroyed. More...
 
virtual bool FindUpgrades (bool fillApplied, ConfigNode node=null)
 Find applicable upgrades to the partmodule (isunlocked and isenabled) and add to the upgradesApplied list. Pass true if you want to add the upgrades to upgradesApplied, false if you just want to know if at least one upgrade is applicable (unlocked rather than enabled) More...
 
virtual Color GetCurrentColor ()
 Returns the current part module color. More...
 
virtual Color GetCurrentColor (string fieldName)
 Returns the current part module color for a field where usespe. More...
 
uint GetPersistenActiontId ()
 Get the modules persistentID, and create one if it doesnt already have one More...
 
uint GetPersistentId ()
 Get the modules persistentID, and create one if it doesnt already have one More...
 
virtual string GetStagingDisableText ()
 
virtual string GetStagingEnableText ()
 
virtual string GetUpgradeInfo ()
 Called by Upgrade Stats dialog More...
 
bool HasUpgrades ()
 Returns true if upgrades exist for the partmodule More...
 
virtual bool IsStageable ()
 Should this module be counted when seeing whether to have a stack icon present? Override in a module for custom behavior; otherwise returns true if the module (or something the module inherits from above PartModule itself) overrides OnActive() More...
 
bool IsValidContractObjective (string objectiveType)
 Returns if, for example, an antenna part module qualifies as an antenna for contracts. More...
 
void Load (ConfigNode node)
 
virtual void LoadUpgrades (ConfigNode node)
 Loads module-relevant upgrades from the partmodule confignode More...
 
uint NewPersistentId ()
 Reset the modules persistentId to a new number More...
 
virtual void OnActive ()
 Called when the part is set active (after unpacking etc) More...
 
virtual void OnColorChanged (Color color)
 Meant to be overwritten by part modules implementing color changes. In this case, it doesn't matter which color picker changed specifically. More...
 
virtual void OnColorChanged (Color color, string pickerID="")
 Meant to be overwritten by part modules implementing color changes More...
 
virtual void OnConstructionModeFixedUpdate ()
 This method will be called when in EVA Construction mode and this part and itself is disabled (when it is not attached to a vessel) every FixedUpdate(). More...
 
virtual void OnConstructionModeUpdate ()
 This method will be called when in EVA Construction mode and this part and itself is disabled (when it is not attached to a vessel) every Update(). More...
 
virtual void OnCopy (PartModule fromModule)
 Use OnCopy to copy any additional data from the PartModule provided More...
 
virtual void OnFixedUpdate ()
 Called every physics/fixed frame that the part is active More...
 
virtual void OnIconCreate ()
 Method fires just before components are stripped from the gameobject to make it an icon. (The part is instantiated and then various components like Part, PartModule, EffectBehaviour, Colliders, Particles, etc are stripped and then it's set as the icon prefab. This lets PartModules do stuff to the model right before that happens. More...
 
virtual void OnInactive ()
 Called before the part goes inactive (after packing etc) More...
 
virtual void OnInitialize ()
 Called on all modules after all parts are loaded but before they give the ship to the game More...
 
virtual void OnInventoryModeDisable ()
 This method will be called when this modules part and itself is first disabled (when it is not attached to a vessel) when created in Inventory/Construction mode. More...
 
virtual void OnInventoryModeEnable ()
 This method will be called when this modules part and itself is first enabled (when it is attached to a vessel) when created in Inventory/Construction mode. More...
 
virtual void OnLoad (ConfigNode node)
 Use OnLoad to load any additional data from the ConfigNode provided More...
 
void OnModuleAdjusterAddedWrapper (AdjusterPartModuleBase adjuster)
 Wrapper to check the mission expansion availability before performing processing specific to this part module when an adjuster is added. More...
 
virtual void OnPartCreatedFomInventory (ModuleInventoryPart moduleInventoryPart)
 This method is called when a part is being taken out from a slot while being in EVAConstruction mode. More...
 
virtual void OnSave (ConfigNode node)
 Use OnSave to serialize additional module information into the ConfigNode provided More...
 
virtual void OnStart (StartState state)
 Called when the part starts. The StartState gives an indication of where in flight you are. All values may not be plugged in! More...
 
virtual void OnStartBeforePartAttachJoint (StartState state)
 Called in flight scene in Part.Start just before the Part attachnode joints are created. More...
 
virtual void OnStartFinished (StartState state)
 Called when the part finishes starting. The StartState gives an indication of where in flight you are. All values may not be plugged in! More...
 
virtual void OnStoredInInventory (ModuleInventoryPart moduleInventoryPart)
 Called when the part is stored in an inventory. More...
 
virtual void OnUpdate ()
 Called every frame that the part is active More...
 
virtual void OnWasCopied (PartModule copyPartModule, bool asSymCounterpart)
 Called when the PartModule was copied, through Alt+Copy or symmetry More...
 
virtual void OnWillBeCopied (bool asSymCounterpart)
 Called when the PartModule is about to be copied, through Alt+Copy or symmetry More...
 
virtual bool OnWillBeMirrored (ref Quaternion rotation, AttachNode selPartNode, Part partParent)
 This is called in the Editor scene when a symmetry copy of a part is being positioned. Only called on the symmetry parts and only when symmetry mode is set to Mirror. It allows the mirror rotation to be changed and returned before being applied to the symmetry copy part.

Parameters
rotationThe current calculated rotation. Will be updated if method returns true.
selPartNodeThe attachnode.
partParentThe part that will become this part's parent.
Returns
True if the rotation was changed. Otherwise will return false.
More...
 
virtual List< Color > PresetColors ()
 Preset colors received for any part module. By default, returns only black, override to make your own selection. More...
 
virtual string PrintUpgrades ()
 
virtual void PromoteToPhysicalPart ()
 This method will be called from Part class PromoteToPhysicalPart when the part is being converted from physicsless to physical part. More...
 
void RemovePartModuleAdjuster (AdjusterPartModuleBase oldAdjuster)
 Call this to remove an adjuster from this part module. More...
 
void RemovePartModuleAdjusterList (List< AdjusterPartModuleBase > moduleAdjusters)
 Removes the appropriate module adjusters. Performs checks to make sure that the adjusters are valid too. More...
 
void Save (ConfigNode node)
 
virtual void SetStaging (bool newValue)
 Run by the part's staging toggle handler, sets staging on modules on symmetry counterparts. More...
 
void SetStagingState (bool newState)
 Set the staging enabled bool for this module. More...
 
virtual bool StagingEnabled ()
 Gets current staging status (is staging enabled for this module) Override me! More...
 
virtual bool StagingToggleEnabledEditor ()
 
virtual bool StagingToggleEnabledFlight ()
 
void ToggleStaging ()
 
virtual void UpdateStagingToggle ()
 Updates the staging toggle More...
 
delegate void voidPMApplyNodeDelegate (PartModule pm, List< string > appliedUps, ConfigNode node, bool doLoad)
 
delegate void voidPMDelegate (PartModule pm)
 
delegate void voidPMNodeDelegate (PartModule pm, ConfigNode node)
 

Public Attributes

float actuatorSpeed = 25f
 
float actuatorSpeedNormScale = 25f
 scale to normalize actuator speed when using Lerp More...
 
float airSpeed
 
bool alwaysRecomputeLift = false
 if true, the == neutral check when recomputing lift is ignored. More...
 
float angleOfAttack
 
float authorityLimiter = 100.0f
 Delta angle range (after multiplication by ctrlSurfaceRange) for control inputs (added to deploy angle when control surface is deployed). More...
 
float authorityLimiterUI = 100.0f
 Show authority limit in degrees More...
 
float ctrlSurfaceArea = 0.5f
 
float ctrlSurfaceRange = 15f
 
bool deploy = false
 
float deployAngle = float.NaN
 
Vector2 deployAngleLimits = new Vector2(float.NaN, float.NaN)
 Min and max values for deployAngle. Defaults to +/- 1.5*ctrlSurfaceRange. More...
 
bool deployInvert = false
 
float forwardLift
 
bool ignorePitch = false
 
bool ignoreRoll = false
 
bool ignoreYaw = false
 
bool mirrorDeploy = false
 
bool partDeployInvert = false
 
string PitchCtrlState = "n/a"
 
string RollCtrlState = "n/a"
 
string transformName = "obj_ctrlSrf"
 
bool useExponentialSpeed = false
 false == use MoveTowards, true == use Lerp ... for surface movement type More...
 
bool usesMirrorDeploy = false
 
float verticalLift
 
string YawCtrlState = "n/a"
 
- Public Attributes inherited from ModuleLiftingSurface
string attachNodeName = string.Empty
 The attachNodeNode that must be attached if nodeEnabled is true. More...
 
ArrowPointer axisArrow = null
 Rotation axis indicator for rotary wings. More...
 
float deflectionLiftCoeff = 1.5f
 Lift coefficient that scales the lift provided. - wing area. More...
 
bool disableBodyLift = true
 
bool displaceVelocity = false
 Set to true will displace the Velocity calculation as part of lift coefficient calc from the part transform by velocityOffset. If false - uses part.transform More...
 
bool displayAxisArrow
 Rotation axis indicator control for rotary wings. More...
 
ArrowPointer dragArrow = null
 
FloatCurve dragCurve = new FloatCurve()
 
Vector3 dragForce = Vector3.zero
 
FloatCurve dragMachCurve = new FloatCurve()
 Aero Viz. More...
 
float dragScalar = 0f
 in kN More...
 
ArrowPointer liftArrow = null
 
FloatCurve liftCurve = new FloatCurve()
 
float liftDot = 0f
 
Vector3 liftForce = Vector3.zero
 
string liftingSurfaceCurve = "Default"
 Lift. More...
 
FloatCurve liftMachCurve = new FloatCurve()
 Drag. More...
 
float liftScalar = 0f
 in kN More...
 
bool nodeEnabled = false
 If True the attachNodeNode must be attached to provide lift and drag forces. More...
 
bool omnidirectional = true
 
bool perpendicularOnly = false
 
Vector3 rotationAxisDirection
 Direction of rotation axis for rotary wings. More...
 
Vector3 rotationAxisPosition
 Position of rotation axis for rotary wings. More...
 
TransformDir transformDir = TransformDir.Z
 The Part Transform Direction that Lift is provided in. More...
 
string transformName = string.Empty
 The Transform that provide the lift. More...
 
float transformSign = 1f
 1 = Positive transformDir, -1 = Negative transformDir More...
 
bool useInternalDragModel = true
 
ArrowPointer velocityArrow = null
 
Vector3 velocityOffset = Vector3.zero
 The offset to apply from part.transform in lift coefficient calc if displaceVelocity is true. More...
 
- Public Attributes inherited from PartModule
bool isEnabled = true
 
bool moduleIsEnabled = true
 
string moduleName
 
bool overrideStagingIconIfBlank = true
 
ModuleResourceHandler resHandler = new ModuleResourceHandler()
 
bool showUpgradesInModuleInfo = false
 
ProtoPartModuleSnapshot snapshot
 
string stagingDisableText = ""
 
bool stagingEnabled = true
 
string stagingEnableText = ""
 
bool stagingToggleEnabledEditor = false
 
bool stagingToggleEnabledFlight = false
 
List< ConfigNodeupgrades
 
List< string > upgradesApplied = new List<string>()
 
bool upgradesApply = true
 
bool upgradesAsk = true
 

Protected Member Functions

float ApplyActuatorSpeedAdjustments (float actuatorSpeed)
 
virtual void CtrlSurfaceEditorUpdate (Vector3 CoM)
 
virtual void CtrlSurfaceUpdate (Vector3 vel)
 Determine how a control surface should deflect to provide the required vessel torque to reflect the control inputs. More...
 
virtual void FixedCtrlSurfaceUpdate (Vector3 vel)
 Regular fixed-wing control surface attitude control. More...
 
void ModifyAuthorityLimiter (object field)
 
void ModifyAuthorityLimiterUI (object field)
 
override void OnModuleAdjusterAdded (AdjusterPartModuleBase adjuster)
 Perform processing specific to this part module when an adjuster is added. More...
 
virtual void RotatingCtrlSurfaceUpdate (Vector3 vel)
 Determine how vessel control inputs should affect a rotating (relative to the vessel) control surface. More...
 
- Protected Member Functions inherited from ModuleLiftingSurface
Vector3 ApplyLiftForceAdjustments (Vector3 liftForce)
 
override void OnModuleAdjusterAdded (AdjusterPartModuleBase adjuster)
 Perform processing specific to this part module when an adjuster is added. More...
 
void UpdateAeroDisplay (Color LineColor)
 
- Protected Member Functions inherited from PartModule
ConfigNode GetUpgrade (string name)
 
virtual void LoadUpgradesApplied (List< string > applieds, ConfigNode node)
 Load the applied upgrade names More...
 
virtual void SaveUpgradesApplied (ConfigNode node)
 Save the applied upgrades. More...
 
IEnumerator UpgradeWaitForScenarioModules ()
 

Protected Attributes

float action
 
List< AdjusterControlSurfaceBaseadjusterCache = new List<AdjusterControlSurfaceBase>()
 
Quaternion airflowIncidence
 
Vector3 baseLiftForce = Vector3.zero
 
double bladeUpdateInterval = 1d
 
Transform ctrlSurface
 
float deflection
 
float deflectionDirection = 1
 
Vector3 inputVector
 
Quaternion neutral
 
bool partActionWindowOpen = false
 
Vector3 potentialBladeControlTorque
 The control torque the blade can provide before calculating actual lift (scale by lift to get actual torque) More...
 
Rigidbody referenceRigidBody
 Rigid body associated with the vessel's control reference, use for determining vessel-relative motion of the control surface. More...
 
float roll
 
Vector3 rotatingControlInput
 Laggy control input offset for rotating blades More...
 
BaseField verticalLiftField
 
Vector3 vesselBladeLiftReference
 The vessel-relative blade rotation axis (and speed) but such that it is in the same direction as blade lift More...
 
- Protected Attributes inherited from ModuleLiftingSurface
float absDot
 
AttachNode attachNode
 
Transform baseTransform
 added for consistency with ModuleControlSurface, can be removed and replaced with "transform" More...
 
BaseField liftField
 
Vector3 nVel
 
Vector3 pointVelocity
 
double Qlift
 

Properties

float currentDeployAngle [get, set]
 The current deflection due to being deployed, does not include control deflection More...
 
bool IsMultipleCubesActive [get]
 
- Properties inherited from ModuleLiftingSurface
bool DisableBodyLift [get]
 
bool IsLifting [get]
 
- Properties inherited from PartModule
BaseActionList Actions [get]
 
int ClassID [get]
 
string ClassName [get]
 
List< AdjusterPartModuleBaseCurrentModuleAdjusterList [get]
 List of all the module adjusters that are currently active on this part module. More...
 
BaseEventList Events [get]
 
BaseFieldList Fields [get]
 
string GUIName [get]
 
bool HasAdjusters [get]
 Has this part module been adjusted? More...
 
ReflectedAttributes ModuleAttributes [get, set]
 
Part part [get, set]
 
uint PersistentActionsId [get, set]
 A unique identifier for each vessel including from when it was Shipconstruct More...
 
uint PersistentId [get]
 A unique identifier for each vessel including from when it was Shipconstruct More...
 
Vessel vessel [get]
 
- Properties inherited from ILiftProvider
bool DisableBodyLift [get]
 
bool IsLifting [get]
 
- Properties inherited from IMultipleDragCube
bool IsMultipleCubesActive [get]
 Used by the DragCubeSystem when it is generating drag cube entries on startup if none are found for this module. Should return true if multiple drag cubes are expected to be generated for the part this module is a part of or false if not. More...
 

Additional Inherited Members

- Public Types inherited from ModuleLiftingSurface
enum  TransformDir { TransformDir.X, TransformDir.Y, TransformDir.Z }
 
- Public Types inherited from PartModule
enum  PartUpgradeState { PartUpgradeState.NONE, PartUpgradeState.LOCKED, PartUpgradeState.AVAILABLE }
 
enum  StartState {
  StartState.None = 0, StartState.Editor = 1, StartState.PreLaunch = 2, StartState.Landed = 4,
  StartState.Docked = 8, StartState.Flying = 16, StartState.Splashed = 32, StartState.SubOrbital = 64,
  StartState.Orbital = 128
}
 
- Static Public Member Functions inherited from PartModule
static ReflectedAttributes GetReflectedAttributes (Type partModuleType)
 
static PartUpgradeState UpgradesAvailable (Part part)
 Returns true if at least one module on the part has at least one upgrade available (isUnlocked) More...
 
static PartUpgradeState UpgradesAvailable (Part part, ConfigNode node)
 Returns true if at least one module on the part has at least one upgrade available (isUnlocked) More...
 
- Static Public Attributes inherited from PartModule
static voidPMApplyNodeDelegate ApplyUpgradeNodeDel
 
static boolPMApplyUpgrades ApplyUpgradesDel
 
static bool ApplyUpgradesEditorAuto = true
 
static boolPMBoolDelegate FindUpgradesDel
 
static voidPMNodeDelegate LoadExpansionNodes
 Hook for loading extra nodes common to all part modules. More...
 
static voidPMNodeDelegate LoadUpgradesDel
 
static voidPMNodeDelegate SaveExpansionNodes
 Hook for saving extra nodes common to all part modules. More...
 
static voidPMDelegate SetupExpansion
 Hook for performing extra setup common to all part modules. More...
 
static string UpgradesAvailableString = "#autoLOC_6002273"
 
static string UpgradesLockedString = "#autoLOC_6002274"
 
- Static Protected Attributes inherited from PartModule
static Dictionary< string,
ConfigNode
exclusives = new Dictionary<string, ConfigNode>()
 
static Dictionary< Type,
ReflectedAttributes
reflectedAttributeCache = new Dictionary<Type, ReflectedAttributes>()
 

Member Function Documentation

void ModuleControlSurface.ActionExtend ( KSPActionParam  act)
inline
void ModuleControlSurface.ActionRetract ( KSPActionParam  act)
inline
void ModuleControlSurface.ActionToggle ( KSPActionParam  act)
inline
void ModuleControlSurface.ActivateAllControls ( KSPActionParam  act)
inline

Turns ON the Pitch, Roll and YAW controls

float ModuleControlSurface.ApplyActuatorSpeedAdjustments ( float  actuatorSpeed)
inlineprotected
void ModuleControlSurface.AssumeDragCubePosition ( string  name)
inline

Used by the DragCubeSystem when it is generating drag cube entries on startup if none are found for this module. When called the module should set it's model position/setup to match the expected position/orientation when 'name' drag cube is active.

Parameters
nameThe name of the drag cube to assume the position/setup for.

Implements IMultipleDragCube.

virtual void ModuleControlSurface.CtrlSurfaceEditorUpdate ( Vector3  CoM)
inlineprotectedvirtual

< Do the actual moving of the actual model transform

Reimplemented in ModuleAeroSurface.

virtual void ModuleControlSurface.CtrlSurfaceUpdate ( Vector3  vel)
inlineprotectedvirtual

Determine how a control surface should deflect to provide the required vessel torque to reflect the control inputs.

Reimplemented in ModuleAeroSurface.

void ModuleControlSurface.DeactivateAllControls ( KSPActionParam  act)
inline

Turns OFF the Pitch, Roll and YAW controls

virtual void ModuleControlSurface.FixedCtrlSurfaceUpdate ( Vector3  vel)
inlineprotectedvirtual

Regular fixed-wing control surface attitude control.

< Figure out how the control surface should respond

< Do the actual moving of the actual model transform

new void ModuleControlSurface.FixedUpdate ( )
inline

< sidestep a potential div by zero

< Now get the force for the wing portion of the control surface part.

< if drag enabled, get and add drag from wing portion

< Calculate the new AoA after adjusting for deflected control surfaces

< get the absolute dot (for AoA checking)

< add the summed force

< if drag enabled, get drag from surface portion and add drag to part

< Yes I'm aware this position may not be correct due to rotation, but eh.

< How much of the ctrlSurfaceRange we are deflecting by

string [] ModuleControlSurface.GetDragCubeNames ( )
inline

Should return an array of strings that are the drag cube names that this module implements.

Returns

Implements IMultipleDragCube.

override string ModuleControlSurface.GetInfo ( )
inlinevirtual

Returns formatted string of additional data for use in the VAB and SPH

Returns

Reimplemented from PartModule.

override string ModuleControlSurface.GetModuleDisplayName ( )
inlinevirtual

Override this to provide a Localized version of the PartModules Name for UI components

Returns

Reimplemented from PartModule.

Vector3 ModuleControlSurface.GetPotentialLift ( bool  positiveDeflection)
inline

Get the potential lift for extreme control inputs (world space)

void ModuleControlSurface.GetPotentialTorque ( out Vector3  pos,
out Vector3  neg 
)
inline

Implements ITorqueProvider.

void ModuleControlSurface.LateUpdate ( )
inline
void ModuleControlSurface.ModifyAuthorityLimiter ( object  field)
inlineprotected
void ModuleControlSurface.ModifyAuthorityLimiterUI ( object  field)
inlineprotected
override void ModuleControlSurface.OnAwake ( )
inlinevirtual

Method fires once the module has been added to the part. Use for first time setup. Module will not have loaded fully by this point

< should be true in instantiated clones

Reimplemented from PartModule.

void ModuleControlSurface.OnDestroy ( )
inline
override void ModuleControlSurface.OnModuleAdjusterAdded ( AdjusterPartModuleBase  adjuster)
inlineprotectedvirtual

Perform processing specific to this part module when an adjuster is added.

Parameters
adjusterAdjuster which will be applied to part module.

Reimplemented from PartModule.

override void ModuleControlSurface.OnModuleAdjusterRemoved ( AdjusterPartModuleBase  adjuster)
inlinevirtual

Perform processing specific to this part module when an adjuster is removed.

Parameters
adjusterAdjuster which is being removed from part module.

Reimplemented from PartModule.

override void ModuleControlSurface.OnStart ( PartModule.StartState  state)
inline
void ModuleControlSurface.PitchActive ( KSPActionParam  act)
inline

Turns ON the Pitch controls

Parameters
act
void ModuleControlSurface.PitchInactive ( KSPActionParam  act)
inline

Turns OFF the Pitch controls

void ModuleControlSurface.RollActive ( KSPActionParam  act)
inline

Turns ON the Roll controls

void ModuleControlSurface.RollInactive ( KSPActionParam  act)
inline

Turns OFF the Roll controls

virtual void ModuleControlSurface.RotatingCtrlSurfaceUpdate ( Vector3  vel)
inlineprotectedvirtual

Determine how vessel control inputs should affect a rotating (relative to the vessel) control surface.

For a set of rotating control surfaces, they can apply torque to the vessel either by differential lift across the axis of rotation, or by acting in unison to apply lift via a lever arm to the vessel's center of mass. For each control axis, the method that provides the greatest torque is chosen automatically. When applying torque via a lever arm to the vessel's center of mass, it is assumed that all sets of rotating blades cancel out precession effects (not a true assumption for a single-rotor helicopter's tail rotor, but control is still done that way). However, when applying torque via differential lift, precession effects need to be taken into consideration and thus the control inputs rotated, unless gyroscopic effects have been canceled. However, this is not easy to detect automatically, so a precession control option is available for control surfaces.

void ModuleControlSurface.TogglePitch ( KSPActionParam  act)
inline

Toggles the Pitch controls

void ModuleControlSurface.ToggleRoll ( KSPActionParam  act)
inline

Toggles the Roll controls

void ModuleControlSurface.ToggleYaw ( KSPActionParam  act)
inline

Toggles the YAW controls

bool ModuleControlSurface.UsesProceduralDragCubes ( )
inline

Used by the DragCubeSystem when it is generating drag cube entries on startup if none are found for this module. Should return true if this module is to use procedural drag cubes and false if it is to generate drag cubes for the drag cube names returned in GetDragCubeNames method.

Returns

Implements IMultipleDragCube.

void ModuleControlSurface.YawActive ( KSPActionParam  act)
inline

Turns ON the YAW controls

void ModuleControlSurface.YawInactive ( KSPActionParam  act)
inline

Turns OFF the YAW controls

Member Data Documentation

float ModuleControlSurface.action
protected
float ModuleControlSurface.actuatorSpeed = 25f
float ModuleControlSurface.actuatorSpeedNormScale = 25f

scale to normalize actuator speed when using Lerp

List<AdjusterControlSurfaceBase> ModuleControlSurface.adjusterCache = new List<AdjusterControlSurfaceBase>()
protected
Quaternion ModuleControlSurface.airflowIncidence
protected
float ModuleControlSurface.airSpeed
bool ModuleControlSurface.alwaysRecomputeLift = false

if true, the == neutral check when recomputing lift is ignored.

float ModuleControlSurface.angleOfAttack
float ModuleControlSurface.authorityLimiter = 100.0f

Delta angle range (after multiplication by ctrlSurfaceRange) for control inputs (added to deploy angle when control surface is deployed).

float ModuleControlSurface.authorityLimiterUI = 100.0f

Show authority limit in degrees

Vector3 ModuleControlSurface.baseLiftForce = Vector3.zero
protected
double ModuleControlSurface.bladeUpdateInterval = 1d
protected
Transform ModuleControlSurface.ctrlSurface
protected
float ModuleControlSurface.ctrlSurfaceArea = 0.5f
float ModuleControlSurface.ctrlSurfaceRange = 15f
float ModuleControlSurface.deflection
protected
float ModuleControlSurface.deflectionDirection = 1
protected
bool ModuleControlSurface.deploy = false
float ModuleControlSurface.deployAngle = float.NaN

Angle to which the control surface will deflect when deployed (acts as base angle for control deflection)

Vector2 ModuleControlSurface.deployAngleLimits = new Vector2(float.NaN, float.NaN)

Min and max values for deployAngle. Defaults to +/- 1.5*ctrlSurfaceRange.

bool ModuleControlSurface.deployInvert = false
float ModuleControlSurface.forwardLift
bool ModuleControlSurface.ignorePitch = false
bool ModuleControlSurface.ignoreRoll = false
bool ModuleControlSurface.ignoreYaw = false
Vector3 ModuleControlSurface.inputVector
protected
bool ModuleControlSurface.mirrorDeploy = false
Quaternion ModuleControlSurface.neutral
protected
bool ModuleControlSurface.partActionWindowOpen = false
protected
bool ModuleControlSurface.partDeployInvert = false
string ModuleControlSurface.PitchCtrlState = "n/a"
Vector3 ModuleControlSurface.potentialBladeControlTorque
protected

The control torque the blade can provide before calculating actual lift (scale by lift to get actual torque)

Rigidbody ModuleControlSurface.referenceRigidBody
protected

Rigid body associated with the vessel's control reference, use for determining vessel-relative motion of the control surface.

float ModuleControlSurface.roll
protected
string ModuleControlSurface.RollCtrlState = "n/a"
Vector3 ModuleControlSurface.rotatingControlInput
protected

Laggy control input offset for rotating blades

string ModuleControlSurface.transformName = "obj_ctrlSrf"
bool ModuleControlSurface.useExponentialSpeed = false

false == use MoveTowards, true == use Lerp ... for surface movement type

bool ModuleControlSurface.usesMirrorDeploy = false
float ModuleControlSurface.verticalLift
BaseField ModuleControlSurface.verticalLiftField
protected
Vector3 ModuleControlSurface.vesselBladeLiftReference
protected

The vessel-relative blade rotation axis (and speed) but such that it is in the same direction as blade lift

string ModuleControlSurface.YawCtrlState = "n/a"

Property Documentation

float ModuleControlSurface.currentDeployAngle
getset

The current deflection due to being deployed, does not include control deflection

bool ModuleControlSurface.IsMultipleCubesActive
get

The documentation for this class was generated from the following file: