Saving tests

feature-saving
Andrew Cassidy 3 years ago
parent e069f85e56
commit 9295899787

@ -2,7 +2,7 @@
namespace ConformalDecals {
public interface IProjectionTarget {
void Project(Matrix4x4 orthoMatrix, Transform projector, Bounds projectionBounds);
bool Project(Matrix4x4 orthoMatrix, Transform projector, Bounds projectionBounds);
void Render(Material decalMaterial, MaterialPropertyBlock partMPB, Camera camera);
ConfigNode Save();
}

@ -208,13 +208,14 @@ namespace ConformalDecals.MaterialProperties {
public T ParseProperty<T>(ConfigNode node) where T : MaterialProperty {
string propertyName = "";
if (!ParseUtil.ParseStringIndirect(ref propertyName, node, "name")) throw new ArgumentException("node has no name");
Logging.Log($"Parsing material property {propertyName}");
if (ParseUtil.ParseBool(node, "remove", true)) RemoveProperty(propertyName);
var newProperty = AddOrGetProperty<T>(propertyName);
newProperty.ParseNode(node);
if (newProperty is MaterialTextureProperty textureProperty && textureProperty.isMain) {
if (newProperty is MaterialTextureProperty {isMain: true} textureProperty) {
_mainTexture = textureProperty;
}

@ -152,6 +152,18 @@ namespace ConformalDecals {
}
}
/// <inheritdoc />
public override void OnSave(ConfigNode node) {
// SAVE TARGETS
if (HighLogic.LoadedSceneIsFlight) {
foreach (var partTarget in _targets.Values) {
if (partTarget.enabled) node.AddNode(partTarget.Save());
}
}
base.OnSave(node);
}
/// <inheritdoc />
public override void OnIconCreate() {
UpdateTextures();
@ -431,6 +443,20 @@ namespace ConformalDecals {
else if (tileIndex >= 0) {
materialProperties.UpdateTile(tileIndex, tileSize);
}
// PARSE TARGETS
if (HighLogic.LoadedSceneIsFlight) {
foreach (var partTargetNode in node.GetNodes(ProjectionPartTarget.NodeName)) {
try {
var partTarget = new ProjectionPartTarget(partTargetNode, part.vessel, useBaseNormal);
_targets.Add(partTarget.part, partTarget);
}
catch (Exception e) {
this.LogWarning($"Encountered error while parsing part node: {e}");
}
}
}
}
/// Setup decal by calling update functions relevent for the current situation

Loading…
Cancel
Save