public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken)
        {
            if (extensionToken != null)
            {
                JToken lightsToken = extensionToken.Value[PNAME_LIGHTS];

                if (lightsToken != null)
                {
                    var    extension   = new KHR_LightsPunctualExtension();
                    JArray lightsArray = lightsToken as JArray;
                    foreach (var lightToken in lightsArray.Children())
                    {
                        extension.Lights.Add(PunctualLight.Deserialize(root, lightToken));
                    }
                    return(extension);
                }


                JToken nodelightToken = extensionToken.Value[PNAME_LIGHT];

                if (nodelightToken != null)
                {
                    PunctualLightId lightId = PunctualLightId.Deserialize(root, nodelightToken.CreateReader());
                    return(new KHR_LightsPunctualNodeExtension(lightId, root));
                }
            }

            return(null);
        }
        public IExtension Clone(GLTFRoot root)
        {
            var clone = new KHR_LightsPunctualExtension();

            for (int i = 0; i < Lights.Count; i++)
            {
                clone.Lights.Add(new PunctualLight(Lights[i], root));
            }
            return(clone);
        }