CSManaged.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include <ThirdParty/SDL/include/SDL.h>
  2. #include <Atomic/IO/FileSystem.h>
  3. #include <Atomic/IO/Log.h>
  4. #include <Atomic/Core/StringUtils.h>
  5. #include "../NETCore/NETCore.h"
  6. #include "CSManaged.h"
  7. #include "CSComponent.h"
  8. namespace Atomic
  9. {
  10. CSManaged::CSManaged(Context* context) :
  11. Object(context),
  12. CSComponentCreate_(0),
  13. CSComponentApplyFields_(0),
  14. CSComponentCallMethod_(0),
  15. CSBeginSendEvent_(0),
  16. NETUpdate_(0)
  17. {
  18. }
  19. CSManaged::~CSManaged()
  20. {
  21. }
  22. bool CSManaged::Initialize()
  23. {
  24. NETCore* core = GetSubsystem<NETCore>();
  25. core->CreateDelegate("AtomicNETEngine", "AtomicEngine.ComponentCore", "CSComponentCreate", (void**) &CSComponentCreate_);
  26. core->CreateDelegate("AtomicNETEngine", "AtomicEngine.ComponentCore", "CSComponentApplyFields", (void**) &CSComponentApplyFields_);
  27. core->CreateDelegate("AtomicNETEngine", "AtomicEngine.NativeCore", "NETUpdate", (void**) &NETUpdate_);
  28. return true;
  29. }
  30. void CSManaged::NETUpdate(float timeStep)
  31. {
  32. if (!NETUpdate_)
  33. return;
  34. NETUpdate_(timeStep);
  35. }
  36. CSComponent* CSManaged::CSComponentCreate(const String& assemblyName, const String& componentName)
  37. {
  38. if (!CSComponentCreate_)
  39. return 0;
  40. return CSComponentCreate_(assemblyName.CString(), componentName.CString());
  41. }
  42. void CSManaged::CSComponentApplyFields(CSComponent* component, NETVariantMap* fieldMapPtr)
  43. {
  44. if (!CSComponentApplyFields_ || !component || !fieldMapPtr)
  45. return;
  46. CSComponentApplyFields_(component, fieldMapPtr);
  47. }
  48. void CSManaged::CSComponentCallMethod(unsigned id, CSComponentMethod methodID, float value)
  49. {
  50. if (!CSComponentCallMethod_)
  51. return;
  52. CSComponentCallMethod_(id, methodID, value);
  53. }
  54. void CSManaged::CSBeginSendEvent(unsigned senderRefID, unsigned eventType, VariantMap* eventData)
  55. {
  56. if (!CSBeginSendEvent_)
  57. return;
  58. CSBeginSendEvent_(senderRefID, eventType, eventData);
  59. }
  60. }