GameObjectSerialization.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. TODO
  2. - Ability to break external references as a pre-processing step
  3. ---------------------------------------
  4. IMMEDIATE:
  5. setValue in ScriptSerializableObject & ScriptSerializableArray should check if value is null and if the field type isn't a value type (can't be null)
  6. ScriptSerializableArray::onDeserializationEnded doesn't create an array instance because I'm not sure how yet
  7. In ScriptEnginePlugin I am running RuntimeScriptObjects but never shutting it down - Right now its only for debug purposes
  8. LOW PRIORITY
  9. - Add Multi-dimensional arrays / Lists / Dictionaries
  10. - (To get array lengths per rank I probably need to cast to System.Array and then call GetLength)
  11. - Ensure that unknown components retain their field data so when they are no longer unknown their data may be restored
  12. - Get rid of ScriptObject::createInstance and replace it with parameter in constructor
  13. - A way to serialize any object into a Resource (and deserialize it from Resource)
  14. ---------------------------------------
  15. Testing:
  16. Set up a test case - Initially disable field serialization
  17. - In C# create SceneObject("ManagedSO")
  18. - Add to it DbgComponent
  19. - Call a dummy C++ method (in ScriptSceneObject for example)
  20. - C++ method calls clone() on the scene object and creates a new "ManagedSOClone" object and parents it as a child of current SO
  21. - C# then retrieves a child and checks if the component is there
  22. ------------------------------------------------------
  23. General C# component management
  24. Native components like Camera
  25. - ScriptCamera derives from Camera
  26. - Then whenever I check for managed Components I need to check if object type of ScriptComponent or
  27. any of the built-in types.
  28. - Checking each type might be a bit slow, but normally we will be looking for an exact type
  29. so hopefully this will only matter when enumerating all components which shouldn't be during performance
  30. critical moments.
  31. TODO - When reloading scripts how to handle restoring references?
  32. TODO - When I destroy a Component, how will I refresh the inspector to let it know that something has changed
  33. - Can happen from C# and C++
  34. -------------------------------------------------------
  35. Other:
  36. Instantiating mono generic classes: http://stackoverflow.com/questions/17628411/get-generic-type-using-mono-embedded