public void RegistNewSetter(SakuraCore.SPropertyData property) { ISPropertyInterface newset; switch (property.PropType) { case "bool": { newset = new BoolSwitch() as ISPropertyInterface; break; } case "float": { newset = new FloatSet() as ISPropertyInterface; break; } case "const SVector&": case "SVector": case "structSakuraMath::SVector": { newset = new SVectorSet() as ISPropertyInterface; break; } case "const std::string&": case "std::string": case "string": case "std:string": { newset = new StringSet() as ISPropertyInterface; break; } default: { // Containers if (SakuraCore.PropIsContainer(property)) { RegistContainer(property); return; } else { // newset = RegistSubMember(property); break; } } } newset.Initialize(property); PropertySetters.Add(newset); DetailsDock.Children.Add(newset as UserControl); (newset as UserControl).SetValue(DockPanel.DockProperty, Dock.Top); }