Merge branch 'Wheels' into develop

pull/822/head
Andrew Cassidy 4 years ago
commit 3077b9b47b
No known key found for this signature in database
GPG Key ID: 963017B38FD477A1

@ -1 +1 @@
Subproject commit f357fa8e99937d7ef61aa8c63e8f198ea2c7a269
Subproject commit e0d84f6229971bab4b1557380a1f3b9c39e2ac46

@ -74,6 +74,9 @@ Localization
#LOC_Restock_variant-telescope_shielded = Shielded
#LOC_Restock_variant-telescope_bare = Bare
#LOC_Restock_variant-wheel_broken = Broken
#LOC_Restock_variant-wheel_bare = Bare
#LOC_Restock_variant-surface_metal = Metal
#LOC_Restock_variant-surface_basic = Basic
#LOC_Restock_variant-surface_truss = Truss

@ -0,0 +1,257 @@
// Patches applying art changes to wheels
// Contents:
// - Rovemax Model S2 (roverWheel2)
// - Rovemax Model M1 (roverWHeel1)
// - TR-2L Ruggedized Wheel (wheelMed)
// RoveMax Model S2
@PART[roverWheel2]:HAS[~RestockIgnore[*]]:FOR[ReStock]
{
@author = Andrew Cassidy
!MODEL {}
MODEL
{
model = ReStock/Assets/Ground/restock-wheel-1
}
@MODULE[ModuleWheelSuspension] {
@suspensionTransformName = SuspensionPivot
}
@MODULE[ModuleWheelSteering] {
@steeringTransformName = SteeringPivot
}
@MODULE[ModuleWheelDamage] {
@damagedTransformName = WheelBusted
@undamagedTransformName = Wheel
}
!MODULE[FXModuleLookAtConstraint] {}
MODULE
{
name = ModuleRestockConstraints
LOOKATCONSTRAINT
{
rotatorsName = Suspension1
targetName = Suspension2
}
LOOKATCONSTRAINT
{
rotatorsName = Suspension2
targetName = Suspension1
}
}
MODULE
{
name = ModulePartVariants
useMultipleDragCubes = false
baseVariant = Bare
VARIANT
{
name = Bare
displayName = #LOC_Restock_variant-probe-bare
primaryColor = #999999
secondaryColor = #999999
GAMEOBJECTS
{
body_gold = false
SteeringPivot_gold = false
body_silver = false
SteeringPivot_silver = false
}
}
VARIANT
{
name = Gold
displayName = #LOC_Restock_variant-probe-gold
themeName = Gold
primaryColor = #fccb0a
secondaryColor = #999999
GAMEOBJECTS
{
body_gold = true
SteeringPivot_gold = true
body_silver = false
SteeringPivot_silver = false
}
}
VARIANT
{
name = Silver
displayName = #LOC_Restock_variant-probe-silver
themeName = Silver
primaryColor = #cecece
secondaryColor = #999999
GAMEOBJECTS
{
body_gold = false
SteeringPivot_gold = false
body_silver = true
SteeringPivot_silver = true
}
}
}
}
// RoveMax Model M1
@PART[roverWheel1]:HAS[~RestockIgnore[*]]:FOR[ReStock]
{
@author = Andrew Cassidy
!mesh = DELETE
MODEL
{
model = ReStock/Assets/Ground/restock-wheel-2
}
@MODULE[ModuleWheelSuspension] {
@suspensionTransformName = SuspensionPivot
}
@MODULE[ModuleWheelSteering] {
@steeringTransformName = SteeringPivot
}
@MODULE[ModuleWheelDamage] {
@damagedTransformName = WheelBusted
@undamagedTransformName = Wheel
}
!MODULE[FXModuleLookAtConstraint]
MODULE
{
name = ModuleRestockConstraints
LOOKATCONSTRAINT
{
rotatorsName = Link1
targetName = Link1Target
}
LOOKATCONSTRAINT
{
rotatorsName = Link2
targetName = Link2Target
}
COPYROTATIONCONSTRAINT
{
rotatorsName = LowerBracket
targetName = Base
}
COPYROTATIONCONSTRAINT
{
rotatorsName = SteeringPivotFollower
targetName = SteeringPivot
}
COPYROTATIONCONSTRAINT
{
rotatorsName = WheelPivotFollower
targetName = WheelPivot
}
LOOKATCONSTRAINT
{
rotatorsName = ShockCylinder
targetName = ShockPiston
}
LOOKATCONSTRAINT
{
rotatorsName = ShockPiston
targetName = ShockCylinder
}
LOOKATCONSTRAINT
{
rotatorsName = SteeringPiston1
targetName = SteeringCylinder1
}
LOOKATCONSTRAINT
{
rotatorsName = SteeringCylinder1
targetName = SteeringPiston1
}
LOOKATCONSTRAINT
{
rotatorsName = SteeringPiston2
targetName = SteeringCylinder2
}
LOOKATCONSTRAINT
{
rotatorsName = SteeringCylinder2
targetName = SteeringPiston2
}
}
}
// TR-2L Ruggedized Vehicular Wheel
@PART[wheelMed]:HAS[~RestockIgnore[*]]:FOR[ReStock]
{
@author = Andrew Cassidy
!MODEL {}
MODEL
{
model = ReStock/Assets/Ground/restock-wheel-3
}
@MODULE[ModuleWheelSuspension] {
@suspensionTransformName = SuspensionPivot
}
@MODULE[ModuleWheelSteering] {
@steeringTransformName = SteeringPivot
}
@MODULE[ModuleWheelDamage] {
@damagedTransformName = WheelBusted
@undamagedTransformName = Wheel
}
!MODULE[FXModuleLookAtConstraint] {}
MODULE
{
name = ModuleRestockConstraints
LOOKATCONSTRAINT
{
rotatorsName = DamperCylinder
targetName = DamperPiston
}
LOOKATCONSTRAINT
{
rotatorsName = DamperPiston
targetName = DamperCylinder
}
LOOKATCONSTRAINT
{
rotatorsName = SteeringCylinder1
targetName = SteeringPiston1
}
LOOKATCONSTRAINT
{
rotatorsName = SteeringPiston1
targetName = SteeringCylinder1
}
}
}

@ -0,0 +1,156 @@
// Patches applying art changes to the Making History rover wheel
// Contents:
// - RoveMax M1-F Rover Wheel (roverWheelM1-F)
// RoveMax M1-F Rover Wheel
@PART[roverWheelM1-F]:HAS[~RestockIgnore[*]]:FOR[ReStock]
{
@author = Andrew Cassidy
!MODEL {}
MODEL
{
model = ReStock/Assets/Ground/restock-wheel-4
}
@MODULE[ModuleWheelSuspension] {
@suspensionTransformName = SuspensionPivot
}
@MODULE[ModuleWheelSteering] {
@steeringTransformName = SteeringPivot
}
@MODULE[ModuleWheelDamage] {
@damagedTransformName = WheelBusted
@undamagedTransformName = Wheel
}
@MODULE[ModuleWheelDeployment] {
@animationTrfName = restock-wheel-4
@animationStateName = restock-wheel-4-deploy
}
!MODULE[ModulePartVariants] {}
MODULE
{
name = ModulePartVariants
baseVariant = Orange
VARIANT
{
name = Orange
displayName = #autoLOC_8007100 // Orange
themeName = Orange
primaryColor = #74402B
secondaryColor = #707070
GAMEOBJECTS
{
Fender_orange = true
Fender_grey = false
Fender_cernan = false
}
}
VARIANT
{
name = Grey
displayName = #autoLOC_8007119 // White
themeName = White
primaryColor = #ffffff
secondaryColor = #707070
GAMEOBJECTS
{
Fender_orange = false
Fender_grey = true
Fender_cernan = false
}
}
VARIANT
{
name = Cernan
displayName = #LOC_Restock_variant-wheel_broken // Broken
themeName = Orange
primaryColor = #74402B
secondaryColor = #A0A0A0
GAMEOBJECTS
{
Fender_orange = false
Fender_grey = false
Fender_cernan = true
}
}
VARIANT
{
name = Bare
displayName = #LOC_Restock_variant-wheel_bare //Bare
themeName = White
primaryColor = #707070
secondaryColor = #707070
GAMEOBJECTS
{
Fender_orange = false
Fender_grey = false
Fender_cernan = false
}
}
}
!MODULE[FXModuleLookAtConstraint] {}
MODULE
{
name = ModuleRestockConstraints
LOOKATCONSTRAINT
{
rotatorsName = Link1
targetName = Link1Target
}
LOOKATCONSTRAINT
{
rotatorsName = Link2
targetName = Link2Target
}
LOOKATCONSTRAINT
{
rotatorsName = SuspensionPiston
targetName = SuspensionPistonTarget
}
LOOKATCONSTRAINT
{
rotatorsName = SuspensionCylinder
targetName = SuspensionCylinderTarget
}
COPYROTATIONCONSTRAINT
{
rotatorsName = LowerBracket
targetName = UpperBracket
}
COPYROTATIONCONSTRAINT
{
rotatorsName = SteeringPivotFollower
targetName = SteeringPivot
}
COPYPOSITIONCONSTRAINT
{
moversName = WheelMesh
targetName = WheelPivotFollower
}
COPYPOSITIONCONSTRAINT
{
moversName = WheelMeshBusted
targetName = WheelPivotFollower
}
}
}

@ -135,6 +135,9 @@ Squad/Parts/Utility/launchClamp1/
Squad/Parts/Utility/landingLegLT-1/
Squad/Parts/Utility/landingLegLT-2/
Squad/Parts/Utility/landingLegLT-5/
Squad/Parts/Wheel/roverWheelM1/
Squad/Parts/Wheel/roverWheelS2/
Squad/Parts/Wheel/roverWheelTR-2L/
Squad/Parts/Resources/RadialTank/
Squad/Parts/Resources/SmallTank/
Squad/Parts/Resources/LargeTank/

@ -1,3 +1,15 @@
v1.1.0
-----
- New stock part replacements
- Wheels
- Rovemax Model S2 (Andrew Cassidy)
- Rovemax Model M1 (Andrew Cassidy)
- TR-2L Ruggedized Wheel (Andrew Cassidy)
- Making History parts replaced:
- Wheels
- Rovemax Model M1-F (Andrew Cassidy)
v1.0.3
-----
- Updated ModuleManager distribution to 4.1.3
@ -9,7 +21,6 @@ v1.0.2
- Fixed 'tankbutt' localizations for Skiff showing 1.875m when they should be 2.5m (#766)
- Fixed inflatable heatshield fairing (#765)
v1.0.1
-----
- Fixed lack of bundled ModuleManager

@ -429,5 +429,15 @@ Localization
#LOC_RestockPlus_restock-oretank-375-1_title = Jumbo Holding Tank
#LOC_RestockPlus_restock-oretank-375-1_description = A very large tank that can be used for storing raw materials. The manufacturer denies any claims that it has been re-purposed from a local farm
#LOC_RestockPlus_restock-oretank-375-1_tags = black isru mine )mining (ore resource store restock
// GROUND
// ==============
#LOC_RestockPlus_restock-wheel-1-T_title = Rovemax Model S2-T
#LOC_RestockPlus_restock-wheel-1-T_description = A modified rover wheel that is rotated 90°, ideal for tricycles or other unusually shaped vehicles.
#LOC_RestockPlus_restock-wheel-1-T_tags = )car drive ground roll rover wheel tricycle restock
#LOC_RestockPlus_restock-wheel-4_title = Rovemax Model M0
#LOC_RestockPlus_restock-wheel-4_description = A smaller version of the popular Rovemax wheel with an integrated folding function, allowing it to be stowed for transportation.
#LOC_RestockPlus_restock-wheel-4_tags = )car drive ground roll rover wheel fold LRV restock
}
}

@ -0,0 +1,209 @@
// ReStock+ 1.1.0
// 90° rotated rover wheel
PART
{
name = restock-wheel-1-T
module = Part
author = Andrew Cassidy
MODEL
{
model = ReStock/Assets/Ground/restock-wheel-1-T
scale = 1.0, 1.0, 1.0
}
rescaleFactor = 1.0
// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,1,0,0,0
node_attach = 0.0, 0.5248517, 0.3083052, 0.0, 0.0, -1.0, 1
node_stack_bottom = 0.0, 0.5248517, 0.321335, 0.0, 0.0, 1.0, 1
TechRequired = spaceExploration
entryCost = 3100
cost = 300
category = Ground
subcategory = 0
mass = 0.06
title = #LOC_RestockPlus_restock-wheel-1-T_title // Rovemax Model S2-T
manufacturer = #autoLOC_501649 //#autoLOC_501649 = Kerbal Motion LLC
description = #LOC_RestockPlus_restock-wheel-1-T_description
// A modified rover wheel that is rotated 90°, ideal for tricycles or other unusually shaped vehicles
dragModelType = default
maximum_drag = 0.3
minimum_drag = 0.2
angularDrag = 1
crashTolerance = 20
maxTemp = 1200
bulkheadProfiles = srf
tags = #LOC_RestockPlus_restock-wheel-1-T_tags // drive ground roll rover wheel tricycle restock
MODULE
{
name = ModuleWheelBase
wheelColliderTransformName = WheelCollider
wheelTransformName = WheelPivot
wheelType = MOTORIZED
// setting this to true will override the radius and center parameters
FitWheelColliderToMesh = False
radius = 0.157
center = 0,0,0
mass = 0.040
groundHeightOffset = 0
TooltipTitle = #autoLOC_502081 //#autoLOC_502081 = Rover Wheel
TooltipPrimaryField = #autoLOC_6004045 //#autoLOC_6004045 = Motorized
}
MODULE
{
name = ModuleWheelSuspension
baseModuleIndex = 0
suspensionTransformName = SuspensionPivot
maximumLoad = 8.0
suspensionDistance = 0.195
suspensionOffset = -0.05
targetPosition = 0.2
springRatio = 5
damperRatio = 1.0
useAutoBoost = true
}
MODULE
{
name = ModuleWheelSteering
baseModuleIndex = 0
caliperTransformName = SteeringPivot
steeringResponse = 1.5
steeringCurve
{
key = 0 40
key = 5 27//15
key = 10 9//6
key = 30 3.0//1.5
}
}
MODULE
{
name = ModuleWheelMotor
baseModuleIndex = 0
wheelSpeedMax = 11
driveResponse = 2
torqueCurve
{
key = 0 0.17 0 0
key = 2.5 0.1 0 0
key = 12 0 0 0
}
RESOURCE
{
name = ElectricCharge
rate = 1//5
}
idleDrain = 0.0//0.1//
}
MODULE
{
name = ModuleWheelBrakes
baseModuleIndex = 0
maxBrakeTorque = 0.34
brakeResponse = 1
}
MODULE
{
name = ModuleWheelDamage
baseModuleIndex = 0
damagedTransformName = WheelBusted
undamagedTransformName = Wheel
stressTolerance = 315
impactTolerance = 65
deflectionMagnitude = 1.0
deflectionSharpness = 2.0
slipMagnitude = 15
slipSharpness = 2.0
}
MODULE
{
name = ModuleRestockConstraints
LOOKATCONSTRAINT
{
rotatorsName = Suspension1
targetName = Suspension2
}
LOOKATCONSTRAINT
{
rotatorsName = Suspension2
targetName = Suspension1
}
}
MODULE
{
name = ModulePartVariants
useMultipleDragCubes = false
baseVariant = Bare
VARIANT
{
name = Bare
displayName = #LOC_Restock_variant-probe-bare
primaryColor = #999999
secondaryColor = #999999
GAMEOBJECTS
{
body_gold = false
SteeringPivot_gold = false
body_silver = false
SteeringPivot_silver = false
}
}
VARIANT
{
name = Gold
displayName = #LOC_Restock_variant-probe-gold
themeName = Gold
primaryColor = #fccb0a
secondaryColor = #999999
GAMEOBJECTS
{
body_gold = true
SteeringPivot_gold = true
body_silver = false
SteeringPivot_silver = false
}
}
VARIANT
{
name = Silver
displayName = #LOC_Restock_variant-probe-silver
themeName = Silver
primaryColor = #cecece
secondaryColor = #999999
GAMEOBJECTS
{
body_gold = false
SteeringPivot_gold = false
body_silver = true
SteeringPivot_silver = true
}
}
}
}

@ -0,0 +1,288 @@
// ReStock+ 1.1.0
// Folding LRV wheel
PART
{
name = restock-wheel-4
module = Part
author = Andrew Cassidy
MODEL
{
model = ReStock/Assets/Ground/restock-wheel-4
scale = 1.0, 1.0, 1.0
}
rescaleFactor = 1.25 //sigh
// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,1,0,0,0
node_attach = 0.36, 0.1207, 0.0, 1.0, 0.0, 0.0, 1
node_stack_bottom = 0.3815, 0.1207, 0.0, 1.0, 0.0, 0.0, 1
TechRequired = fieldScience
entryCost = 5000
cost = 500
category = Ground
subcategory = 0
mass = 0.04
title = #LOC_RestockPlus_restock-wheel-4_title // Rovemax Model M0
manufacturer = #autoLOC_501649 //#autoLOC_501649 = Kerbal Motion LLC
description = #LOC_RestockPlus_restock-wheel-4_description
// A smaller version of the popular Rovemax wheel with an integrated folding function, allowing it to be stowed for transportation.
dragModelType = default
maximum_drag = 0.3
minimum_drag = 0.2
angularDrag = 1
crashTolerance = 30
maxTemp = 1200
bulkheadProfiles = srf
tags = #LOC_RestockPlus_restock-wheel-4_tags // )car drive ground roll rover wheel fold LRV restock
/// Flag to disable this part if MH is installed
MHReplacement = True
MODULE
{
name = ModuleWheelBase
wheelColliderTransformName = WheelCollider
wheelTransformName = WheelPivot
wheelType = MOTORIZED
// setting this to true will override the radius and center parameters
FitWheelColliderToMesh = False
radius = 0.23
center = 0,0,0
mass = 0.040
groundHeightOffset = 0
TooltipTitle = #autoLOC_502081 //#autoLOC_502081 = Rover Wheel
TooltipPrimaryField = #autoLOC_6004045 //#autoLOC_6004045 = Motorized
}
MODULE
{
name = ModuleWheelSuspension
baseModuleIndex = 0
suspensionTransformName = SuspensionPivot
suspensionDistance = 0.1
targetPosition = 0.0
springRatio = 12
damperRatio = 1.0
maximumLoad = 5.0
}
MODULE
{
name = ModuleWheelSteering
baseModuleIndex = 0
caliperTransformName = SteeringPivot
steeringResponse = 2
steeringCurve
{
key = 0 20
key = 10 9
key = 30 3.0
}
}
MODULE
{
name = ModuleWheelMotor
baseModuleIndex = 0
maxRpm = 42
driveResponse = 2
torqueCurve
{
key = 0 0.5 0 0
key = 2 0.3 0
key = 10 0.1 0 0
key = 25 0 0 0
}
RESOURCE
{
name = ElectricCharge
rate = 1.0
}
idleDrain = 0.0
}
MODULE
{
name = ModuleWheelBrakes
baseModuleIndex = 0
maxBrakeTorque = 0.5
brakeResponse = 1
}
MODULE
{
name = ModuleWheelDamage
baseModuleIndex = 0
damagedTransformName = WheelBusted
undamagedTransformName = Wheel
stressTolerance = 250
impactTolerance = 100
deflectionMagnitude = 1.0
deflectionSharpness = 2.0
slipMagnitude = 15
slipSharpness = 2.0
}
MODULE
{
name = ModuleWheelDeployment
baseModuleIndex = 0
animationTrfName = restock-wheel-4
animationStateName = restock-wheel-4-deploy
deployedPosition = 0
deployTargetTransformName = deployTgt
TsubSys = 1.0
useStandInCollider = False
slaveModules = 8
fxDeploy = deploy
fxRetract = retract
fxDeployed = deployed
fxRetracted = retracted
}
MODULE
{
name = ModulePartVariants
baseVariant = Orange
VARIANT
{
name = Orange
displayName = #autoLOC_8007100 // Orange
themeName = Orange
primaryColor = #74402B
secondaryColor = #707070
GAMEOBJECTS
{
Fender_orange = true
Fender_grey = false
Fender_cernan = false
}
}
VARIANT
{
name = Grey
displayName = #autoLOC_8007119 // White
themeName = White
primaryColor = #ffffff
secondaryColor = #707070
GAMEOBJECTS
{
Fender_orange = false
Fender_grey = true
Fender_cernan = false
}
}
VARIANT
{
name = Cernan
displayName = #LOC_Restock_variant-wheel_broken // Broken
themeName = Orange
primaryColor = #74402B
secondaryColor = #A0A0A0
GAMEOBJECTS
{
Fender_orange = false
Fender_grey = false
Fender_cernan = true
}
}
VARIANT
{
name = Bare
displayName = #LOC_Restock_variant-wheel_bare //Bare
themeName = White
primaryColor = #707070
secondaryColor = #707070
GAMEOBJECTS
{
Fender_orange = false
Fender_grey = false
Fender_cernan = false
}
}
}
MODULE
{
name = ModuleTestSubject
environments = 15
useStaging = False
useEvent = True
}
MODULE
{
name = ModuleRestockConstraints
LOOKATCONSTRAINT
{
rotatorsName = Link1
targetName = Link1Target
}
LOOKATCONSTRAINT
{
rotatorsName = Link2
targetName = Link2Target
}
LOOKATCONSTRAINT
{
rotatorsName = SuspensionPiston
targetName = SuspensionPistonTarget
}
LOOKATCONSTRAINT
{
rotatorsName = SuspensionCylinder
targetName = SuspensionCylinderTarget
}
COPYROTATIONCONSTRAINT
{
rotatorsName = LowerBracket
targetName = UpperBracket
}
COPYROTATIONCONSTRAINT
{
rotatorsName = SteeringPivotFollower
targetName = SteeringPivot
}
COPYPOSITIONCONSTRAINT
{
moversName = WheelMesh
targetName = WheelPivotFollower
}
COPYPOSITIONCONSTRAINT
{
moversName = WheelMeshBusted
targetName = WheelPivotFollower
}
}
}

@ -1,3 +1,9 @@
v1.1.0
-----
- New Wheel parts
- Rovemax Model S2-T (Andrew Cassidy): 90° rotated rover wheel for building tricycles
- Rovemax Model M0 (Andrew Cassidy): folding rover wheel. Disabled if Making History is installed
v1.0.3
-----
- Updated ModuleManager distribution to 4.1.3

@ -0,0 +1,40 @@
using UnityEngine;
namespace Restock.Constraints
{
[System.Serializable]
public class CopyPositionConstraint : IConstraint
{
private readonly string moversName;
private readonly string targetName;
private readonly bool local = false;
// Cached components
private readonly Transform mover;
private readonly Transform target;
public CopyPositionConstraint(ConfigNode node, Part p)
{
node.TryGetValue("rotatorsName", ref moversName);
node.TryGetValue("targetName", ref targetName);
mover = p.FindModelTransform(moversName);
target = p.FindModelTransform(targetName);
}
public void Update()
{
if (mover == null || target == null) return;
if (local)
{
mover.localPosition = target.localPosition;
}
else
{
mover.position = target.position;
}
}
}
}

@ -0,0 +1,40 @@
using UnityEngine;
namespace Restock.Constraints
{
[System.Serializable]
public class CopyRotationConstraint : IConstraint
{
private readonly string rotatorsName;
private readonly string targetName;
private readonly bool local = false;
// Cached components
private readonly Transform target;
private readonly Transform rotator;
public CopyRotationConstraint(ConfigNode node, Part p)
{
node.TryGetValue("rotatorsName", ref rotatorsName);
node.TryGetValue("targetName", ref targetName);
rotator = p.FindModelTransform(rotatorsName);
target = p.FindModelTransform(targetName);
}
public void Update()
{
if (rotator == null || target == null) return;
if (local)
{
rotator.localRotation = target.localRotation;
}
else
{
rotator.rotation = target.rotation;
}
}
}
}

@ -0,0 +1,10 @@
using System;
using UnityEngine;
namespace Restock.Constraints
{
public interface IConstraint
{
void Update();
}
}

@ -0,0 +1,33 @@
using UnityEngine;
namespace Restock.Constraints
{
[System.Serializable]
public class LookAtConstraint : IConstraint
{
private readonly string rotatorsName;
private readonly string targetName;
// Cached components
private readonly Transform target;
private readonly Transform rotator;
public LookAtConstraint(ConfigNode node, Part p)
{
node.TryGetValue("rotatorsName", ref rotatorsName);
node.TryGetValue("targetName", ref targetName);
rotator = p.FindModelTransform(rotatorsName);
target = p.FindModelTransform(targetName);
}
public void Update()
{
if (rotator == null || target == null) return;
var lookPos = target.position - rotator.position;
var rotation = Quaternion.LookRotation(lookPos, target.up);
rotator.rotation = rotation;
}
}
}

@ -0,0 +1,79 @@
using System.Collections.Generic;
using System.Linq;
using Restock.Constraints;
namespace Restock
{
public class ModuleRestockConstraints : PartModule
{
public List<IConstraint> constraints;
public override void OnLoad(ConfigNode node)
{
base.OnLoad(node);
constraints = new List<IConstraint>();
var cnodes = node.GetNodes();
this.Log($"Loading {cnodes.Length} constraints");
foreach (var cnode in cnodes)
{
switch (cnode.name)
{
//LookAtConstraint
case "CONSTRAINLOOKFX":
case "LOOKATCONSTRAINT":
constraints.Add(new LookAtConstraint(cnode, this.part));
break;
//CopyPositionConstraint
case "COPYPOSITIONCONSTRAINT":
constraints.Add(new CopyPositionConstraint(cnode, this.part));
break;
//CopyRotationConstraint
case "COPYROTATIONCONSTRAINT":
constraints.Add(new CopyRotationConstraint(cnode, this.part));
break;
//Unknown
default:
this.LogError($"Unknown constraint type \"{cnode.name}\"");
break;
}
}
this.Log($"Loaded {constraints.Count} constraints");
}
public override void OnStart(StartState state)
{
if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)
{
if (constraints == null || constraints.Count == 0)
{
ConfigNode cfg;
foreach (UrlDir.UrlConfig pNode in GameDatabase.Instance.GetConfigs("PART"))
{
if (pNode.name.Replace("_", ".") == part.partInfo.name)
{
cfg = pNode.config;
ConfigNode node = cfg.GetNodes("MODULE").Single(n => n.GetValue("name") == moduleName);
OnLoad(node);
}
}
}
}
}
void LateUpdate()
{
if (constraints == null) return;
foreach (var constraint in constraints)
{
constraint.Update();
}
}
}
}

@ -44,6 +44,10 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Constraints\CopyPositionConstraint.cs" />
<Compile Include="Constraints\CopyRotationConstraint.cs" />
<Compile Include="Constraints\IConstraint.cs" />
<Compile Include="Constraints\LookAtConstraint.cs" />
<Compile Include="InstallChecker.cs" />
<Compile Include="MaterialModifiers\ColorPropertyMaterialModifier.cs" />
<Compile Include="MaterialModifiers\FloatPropertyMaterialModifier.cs" />
@ -55,6 +59,7 @@
<Compile Include="ModuleRestockDepthMask.cs" />
<Compile Include="ModuleRestockHeatEffects.cs" />
<Compile Include="ModuleRestockISRUAnimation.cs" />
<Compile Include="ModuleRestockConstraints.cs" />
<Compile Include="ModuleRestockModifyFairingMaterials.cs" />
<Compile Include="ModuleRestockModifyMaterials.cs" />
<Compile Include="PartModuleExtensions.cs" />

Loading…
Cancel
Save