Merge branch 'negative-space' into develop

pull/630/head^2
Andrew Cassidy 5 years ago
commit d356834614
No known key found for this signature in database
GPG Key ID: 963017B38FD477A1

@ -1 +1 @@
Subproject commit 50bf72ec7b753e46212a7a8a152eb4d3a69df8f9
Subproject commit d7bd2843df00322a0974a09d74c40d6aff9c9085

@ -0,0 +1,149 @@
// Patches adding depth masks to air intakes
// Contents:
// Circular Intake (CircularIntake)
// Small Circular Intake (miniIntake)
// Shock Cone Intake (shockConeIntake)
// Adjustable Ramp Intake (ramAirIntake)
// Adjustable Ramp Intake Radial (IntakeRadialLong)
// XM-G50 Radial Air Intake (airScoop)
// Mk1 Diverterless Supersonic Intake (MK1IntakeFuselage)
// Circular Intake
@PART[CircularIntake]
{
!mesh = DELETE
MODEL
{
model = Squad/Parts/Aero/circularIntake/CircularIntake
}
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-fanintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = fanintake_mask
}
}
// Small Circular Intake
@PART[miniIntake]
{
!mesh = DELETE
MODEL
{
model = Squad/Parts/Aero/miniIntake/SmallIntake
}
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-miniintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = miniintake_mask
}
}
// Shock Cone Intake
@PART[shockConeIntake]
{
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-coneintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = coneintake_mask
}
}
// Adjustable Ramp Intake
@PART[ramAirIntake]
{
!mesh = DELETE
MODEL
{
model = Squad/Parts/Aero/ramAirIntake/RampIntake
}
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-rampintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = rampintake_mask
}
}
// Adjustable Ramp Intake Radial
@PART[IntakeRadialLong]
{
!mesh = DELETE
MODEL
{
model = Squad/Parts/Aero/intakeRadialLong/IntakeRadial
}
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-longintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = longintake_mask
}
}
// XM-G50 Radial Air Intake
@PART[airScoop]
{
!mesh = DELETE
MODEL
{
model = Squad/Parts/Aero/airIntakeRadialXM-G50/RadialIntake
}
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-radialintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = radialintake_mask
}
}
// Mk1 Diverterless Supersonic Intake
@PART[MK1IntakeFuselage]
{
MODEL
{
model = ReStock/Assets/Aero/DepthMasks/restock-inlineintake-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = inlineintake_mask
}
}

@ -44,6 +44,12 @@
{
@secondaryTransformName = panel6
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = solarshroud_mask
}
}
// 3x2
@ -82,6 +88,12 @@
{
@secondaryTransformName = solar6
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = solarshroud_mask
}
}
// Gigantor

@ -0,0 +1,67 @@
// Patches adding depth masks to the jet engines
// Contents:
// J-33 "Wheesley" Turbofan Engine (JetEngine)
// J-404 "Panther" Afterburning Turbofan (turboJet)
// J-X4 "Whiplash" Turbo Ramjet Engine (turboFanEngine)
// J-20 "Juno" Basic Jet Engine (miniJetEngine)
// J-33 "Wheesley" Turbofan Engine
@PART[JetEngine]
{
MODEL
{
model = ReStock/Assets/Engine/DepthMasks/restock-basicjet-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = basicjet_mask
}
}
// J-404 "Panther" Afterburning Turbofan
@PART[turboJet]
{
MODEL
{
model = ReStock/Assets/Engine/DepthMasks/restock-turbojet-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = turbojet_mask
}
}
// J-X4 "Whiplash" Turbo Ramjet Engine
@PART[turboFanEngine]
{
MODEL
{
model = ReStock/Assets/Engine/DepthMasks/restock-ramjet-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = ramjet_mask
}
}
// J-20 "Juno" Basic Jet Engine
@PART[miniJetEngine]
{
MODEL
{
model = ReStock/Assets/Engine/DepthMasks/restock-minijet-mask
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = minijet_mask
}
}

@ -95,4 +95,10 @@ PART
}
}
}
MODULE
{
name = ModuleRestockDepthMask
maskTransform = mask
}
}

@ -0,0 +1,125 @@
using UnityEngine;
using UnityEngine.Serialization;
namespace Restock
{
public class ModuleRestockDepthMask : PartModule
{
// The name of the transform that has your mask mesh. The only strictly required property
[KSPField]
public string maskTransform = "";
[KSPField]
public string bodyTransform = "";
// The name of the depth mask shader
[KSPField]
public string shaderName = "DepthMask";
// The render queue value for the mesh, should be less than maskRenderQueue
[KSPField]
public int meshRenderQueue = 1000;
// the render queue value for the mask, should be less than 2000
[KSPField]
public int maskRenderQueue = 1999;
// depth mask object transform
public Transform maskTransformObject;
// body object transform
public Transform bodyTransformObject;
// depth mask shader object
public Shader depthShader;
public override void OnStart(StartState state)
{
base.OnStart(state);
UpdatematerialQueue();
// the part variant system is implemented extremely stupidly
// so we have to make this whole module more complicated as a result
GameEvents.onVariantApplied.Add(OnVariantApplied);
}
private void OnDestroy()
{
GameEvents.onVariantApplied.Remove(OnVariantApplied);
}
public override void OnLoad(ConfigNode node)
{
base.OnLoad(node);
if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) return;
this.maskTransformObject = base.part.FindModelTransform(maskTransform);
if (this.maskTransformObject == null)
{
this.LogError($"Can't find transform {maskTransform}");
return;
}
if (bodyTransform == "")
{
this.bodyTransformObject = base.part.partTransform;
}
else
{
this.bodyTransformObject = base.part.FindModelTransform(bodyTransform);
if (this.bodyTransformObject == null)
{
this.LogError($"Can't find transform {bodyTransform}");
this.bodyTransformObject = base.part.partTransform;
}
}
this.depthShader = Shader.Find(shaderName);
if (this.depthShader == null)
{
this.LogError($"Can't find shader {shaderName}");
return;
}
}
public void OnVariantApplied(Part appliedPart, PartVariant variant)
{
// I dont know why changing part variants resets all the materials to their as-loaded state, but it does
if (appliedPart == this.part) UpdatematerialQueue();
}
private void UpdatematerialQueue()
{
var windowRenderer = maskTransformObject.GetComponent<MeshRenderer>();
windowRenderer.material.shader = depthShader;
windowRenderer.material.renderQueue = maskRenderQueue;
var meshRenderers = bodyTransformObject.GetComponentsInChildren<MeshRenderer>(true);
var skinnedMeshRenderers = bodyTransformObject.GetComponentsInChildren<SkinnedMeshRenderer>(true);
foreach (var renderer in meshRenderers)
{
if (renderer == windowRenderer) continue;
var queue = renderer.material.renderQueue;
queue = meshRenderQueue + ((queue - 2000) / 2);
renderer.material.renderQueue = queue;
}
foreach (var renderer in skinnedMeshRenderers)
{
if (renderer == windowRenderer) continue;
var queue = renderer.material.renderQueue;
queue = meshRenderQueue + ((queue - 2000) / 2);
renderer.material.renderQueue = queue;
}
}
}
}

@ -48,6 +48,7 @@
<Compile Include="MaterialModifiers\MaterialModifierParser.cs" />
<Compile Include="MaterialModifiers\TexturePropertyMaterialModifier.cs" />
<Compile Include="ModuleRestockLinkedMesh.cs" />
<Compile Include="ModuleRestockDepthMask.cs" />
<Compile Include="ModuleRestockModifyFairingMaterials.cs" />
<Compile Include="ModuleRestockModifyMaterials.cs" />
<Compile Include="PartModuleExtensions.cs" />

Loading…
Cancel
Save