Exemplo n.º 1
0
            public LineNode()
            {
                var line = (SCNGeometry)template.Copy(NSZone.Default);

                line.FirstMaterial = GetNativeMaterial(style.Color);
                lineNode           = SCNNode.FromGeometry(line);
                var cap = (SCNGeometry)capTemplate.Copy(NSZone.Default);

                cap.FirstMaterial = line.FirstMaterial;
                scapNode          = SCNNode.FromGeometry(cap);
                ecapNode          = SCNNode.FromGeometry(cap);
                AddChildNode(lineNode);
                AddChildNode(scapNode);
                AddChildNode(ecapNode);
            }
Exemplo n.º 2
0
        /// <summary>
        /// must copy geometry and materials to set unique data on both here we only want
        /// </summary>
        public static SCNGeometry CopyGeometryAndMaterials(this SCNGeometry geometry)
        {
            var result = geometry;

            if (geometry.Copy() is SCNGeometry geometryCopy)
            {
                var materialsCopy = new List <SCNMaterial>();
                foreach (var material in geometryCopy.Materials)
                {
                    if (material.Copy() is SCNMaterial materialCopy)
                    {
                        materialsCopy.Add(materialCopy);
                    }
                }

                geometryCopy.Materials = materialsCopy.ToArray();

                result = geometryCopy;
            }

            return(result);
        }