public void SetupCosmeticInformation(StaticSetConfig model, DataTreeObject dataTreeParent) { if (dataTreeParent == null) { return; } // So a note to self: Static sets have the 'meshes' container which is a map of other model files. // In SK Animator Tools V1 I was an idiot and thought the "model" property was the only key. This is false. // Instead, model represents the *default selection*. There may be more models. Iterate through the keys like damn lol. DataTreeObjectProperty targetProp = dataTreeParent.AddSimpleProperty("Target Set Model", model.model); targetProp.ExtraData["StaticSetConfig"] = model; // if (useOnlyTargetModel) dataTreeParent.AddSimpleProperty("Special Directive", "Only export target model", SilkImage.Scripted); List <object> objects = new List <object>(); if (model.meshes != null) { object[] keys = model.meshes.keySet().toArray(); int msIdx = 0; foreach (object key in keys) { MeshSet subModel = (MeshSet)model.meshes.get(key); VisibleMesh[] meshes = subModel.visible; DataTreeObject subModelRef = new DataTreeObject() { Text = key.ToString(), ImageKey = SilkImage.ModelSet }; List <object> subModels = new List <object>(); int idx = 0; foreach (VisibleMesh mesh in meshes) { subModels.Add(new DataTreeObjectProperty("Mesh " + idx, SilkImage.Triangle)); idx++; } subModelRef.AddSimpleProperty("Geometry", subModels.ToArray(), SilkImage.Variant, SilkImage.Value, false); objects.Add(subModelRef); msIdx++; } } dataTreeParent.AddSimpleProperty("Contained Meshes", objects.ToArray(), SilkImage.Reference, SilkImage.Reference, false); }
public void SetupCosmeticInformation(ViewerAffecterConfig model, DataTreeObject dataTreeParent) { if (dataTreeParent == null) { return; } ViewerEffectConfig effect = model.effect; string cls = JavaClassNameStripper.GetWholeClassName(effect.getClass()); if (cls == null) { XanLogger.WriteLine("WARNING: Attempt to get class of ViewerEffectConfig failed!"); return; } DataTreeObjectProperty implementationPropKey = dataTreeParent.FindSimpleProperty("Implementation"); DataTreeObject implementationProp = dataTreeParent.Properties[implementationPropKey].First(); implementationProp.Text = cls.Replace("$", "::"); if (effect is Skybox skybox) { dataTreeParent.ImageKey = SilkImage.Sky; string name = skybox.model?.getName(); if (name == null && dataTreeParent.Parent != null && dataTreeParent.Parent.ImageKey == SilkImage.Schemed) { dataTreeParent.ImageKey = SilkImage.Scheme; dataTreeParent.AddSimpleProperty("Data Type", "Render Scheme", SilkImage.Scheme); } else { // Name may still be null here. SilkImage target = name == null ? SilkImage.Missing : SilkImage.ModelSet; dataTreeParent.AddSimpleProperty("Model Reference", name, SilkImage.Reference, target, false); } Transform3D newTrs = new Transform3D(skybox.translationOrigin, Quaternion.IDENTITY, skybox.translationScale.x); dataTreeParent.AddSimpleProperty("Transform", newTrs.toString(), SilkImage.Matrix); } }