CoreStringUtils: Add function for camel casing and checking for alphanumeric strings.
IAttribute: Continue work on accepting a wider range of script inputs in FromQVarint<Color>().
IComponent: Implement creating QObject properties for dynamic component attributes. This change wont affect any staticly structured components. It will add reading and writing dynamic component properties directly from a variable (mostly nice for scripting). Example: ent.dynamicComponent.CreateAttribute('int', 'My cool attribute'); ent.dynamicComponent.myCoolAttribute = 10; print(ent.dynamicComponent.myCoolAttribute); Works for all IAttribute types via QVariant (IAttribute::FromQVariant and IAttribute::ToQVariant) just like you would use EC_DynamicComponent::SetAttribute writing and EC_DynamicComponent::Attribute for reading.
DynamicComponent.js: Update tests to include writing, reading and asserting value correctness for the new dynamic component way of setter and getter via a QObject property. Added support for running the test automatically if you run --server also in the server scene.