/// <summary> /// Creates a new hierarchy node info for a given Rhino Model Component, used to determine names and labels as well as linking. /// </summary> /// <param name="InModelComponent"></param> /// <param name="ParentNode"></param> /// <param name="MaterialIndex"></param> /// <param name="ParentTransform"></param> /// <returns></returns> private RhinoSceneHierarchyNodeInfo GenerateNodeInfo(ModelComponent InModelComponent, bool bIsInstanceDefinition, int MaterialIndex, Transform ParentTransform) { string Name = GetModelComponentName(InModelComponent); string Label = bIsInstanceDefinition ? FUniqueNameGenerator.GetTargetName(InModelComponent) : ActorLabelGenerator.GenerateUniqueName(InModelComponent); List <string> Tags = GetTags(InModelComponent); const bool bOverrideMaterial = false; return(new RhinoSceneHierarchyNodeInfo(InModelComponent, Name, Label, Tags, MaterialIndex, bOverrideMaterial, ParentTransform)); }
private void AddMaterialHashMapping(string MaterialHash, Material RhinoMaterial) { if (!MaterialHashToMaterialInfo.ContainsKey(MaterialHash)) { string MaterialLabel = MaterialLabelGenerator.GenerateUniqueName(RhinoMaterial); string MaterialName = FDatasmithFacadeElement.GetStringHash(MaterialLabel); MaterialHashToMaterialInfo.Add(MaterialHash, new RhinoMaterialInfo(RhinoMaterial, MaterialName, MaterialLabel)); Texture[] MaterialTextures = RhinoMaterial.GetTextures(); for (int TextureIndex = 0; TextureIndex < MaterialTextures.Length; ++TextureIndex) { Texture RhinoTexture = MaterialTextures[TextureIndex]; if (RhinoTexture != null) { string TextureHash = FDatasmithRhinoUtilities.GetTextureHash(RhinoTexture); AddTextureHashMapping(TextureHash, RhinoTexture); } } } }