SubSceneAsset.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #include "SubSceneAsset.h"
  2. #include "T3D/SubScene.h"
  3. IMPLEMENT_CONOBJECT(SubSceneAsset);
  4. ConsoleType(SubSceneAssetPtr, TypeSubSceneAssetPtr, const char*, "")
  5. //-----------------------------------------------------------------------------
  6. ConsoleGetType(TypeSubSceneAssetPtr)
  7. {
  8. // Fetch asset Id.
  9. return *((const char**)(dptr));
  10. }
  11. //-----------------------------------------------------------------------------
  12. ConsoleSetType(TypeSubSceneAssetPtr)
  13. {
  14. // Was a single argument specified?
  15. if (argc == 1)
  16. {
  17. // Yes, so fetch field value.
  18. *((const char**)dptr) = StringTable->insert(argv[0]);
  19. return;
  20. }
  21. // Warn.
  22. Con::warnf("(TypeSubSceneAssetPtr) - Cannot set multiple args to a single asset.");
  23. }
  24. //-----------------------------------------------------------------------------
  25. ConsoleType(assetIdString, TypeSubSceneAssetId, const char*, "")
  26. ConsoleGetType(TypeSubSceneAssetId)
  27. {
  28. // Fetch asset Id.
  29. return *((const char**)(dptr));
  30. }
  31. ConsoleSetType(TypeSubSceneAssetId)
  32. {
  33. // Was a single argument specified?
  34. if (argc == 1)
  35. {
  36. *((const char**)dptr) = StringTable->insert(argv[0]);
  37. return;
  38. }
  39. // Warn.
  40. Con::warnf("(TypeSubSceneAssetId) - Cannot set multiple args to a single asset.");
  41. }
  42. SubSceneAsset::SubSceneAsset() : LevelAsset()
  43. {
  44. }
  45. SubSceneAsset::~SubSceneAsset()
  46. {
  47. }
  48. void SubSceneAsset::initPersistFields()
  49. {
  50. docsURL;
  51. Parent::initPersistFields();
  52. }
  53. //-----------------------------------------------------------------------------
  54. // GuiInspectorTypeAssetId
  55. //-----------------------------------------------------------------------------
  56. #ifdef TORQUE_TOOLS
  57. IMPLEMENT_CONOBJECT(GuiInspectorTypeSubSceneAssetPtr);
  58. ConsoleDocClass(GuiInspectorTypeSubSceneAssetPtr,
  59. "@brief Inspector field type for Shapes\n\n"
  60. "Editor use only.\n\n"
  61. "@internal"
  62. );
  63. void GuiInspectorTypeSubSceneAssetPtr::consoleInit()
  64. {
  65. Parent::consoleInit();
  66. ConsoleBaseType::getType(TypeSubSceneAssetPtr)->setInspectorFieldType("GuiInspectorTypeSubSceneAssetPtr");
  67. }
  68. GuiControl* GuiInspectorTypeSubSceneAssetPtr::constructEditControl()
  69. {
  70. // Create base filename edit controls
  71. GuiControl* retCtrl = Parent::constructEditControl();
  72. if (retCtrl == NULL)
  73. return retCtrl;
  74. // Change filespec
  75. char szBuffer[512];
  76. dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"SubSceneAsset\", \"AssetBrowser.changeAsset\", %s, \"\");",
  77. getIdString());
  78. mBrowseButton->setField("Command", szBuffer);
  79. setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString());
  80. // Create "Open in Editor" button
  81. mEditButton = new GuiBitmapButtonCtrl();
  82. dSprintf(szBuffer, sizeof(szBuffer), "$createAndAssignField = %s; AssetBrowser.setupCreateNewAsset(\"SubSceneAsset\", AssetBrowser.selectedModule);",
  83. getIdString());
  84. mEditButton->setField("Command", szBuffer);
  85. char bitmapName[512] = "ToolsModule:iconAdd_image";
  86. mEditButton->setBitmap(StringTable->insert(bitmapName));
  87. mEditButton->setDataField(StringTable->insert("Profile"), NULL, "GuiButtonProfile");
  88. mEditButton->setDataField(StringTable->insert("tooltipprofile"), NULL, "GuiToolTipProfile");
  89. mEditButton->setDataField(StringTable->insert("hovertime"), NULL, "1000");
  90. mEditButton->setDataField(StringTable->insert("tooltip"), NULL, "Test play this sound");
  91. mEditButton->registerObject();
  92. addObject(mEditButton);
  93. return retCtrl;
  94. }
  95. bool GuiInspectorTypeSubSceneAssetPtr::updateRects()
  96. {
  97. S32 dividerPos, dividerMargin;
  98. mInspector->getDivider(dividerPos, dividerMargin);
  99. Point2I fieldExtent = getExtent();
  100. Point2I fieldPos = getPosition();
  101. mCaptionRect.set(0, 0, fieldExtent.x - dividerPos - dividerMargin, fieldExtent.y);
  102. mEditCtrlRect.set(fieldExtent.x - dividerPos + dividerMargin, 1, dividerPos - dividerMargin - 34, fieldExtent.y);
  103. bool resized = mEdit->resize(mEditCtrlRect.point, mEditCtrlRect.extent);
  104. if (mBrowseButton != NULL)
  105. {
  106. mBrowseRect.set(fieldExtent.x - 32, 2, 14, fieldExtent.y - 4);
  107. resized |= mBrowseButton->resize(mBrowseRect.point, mBrowseRect.extent);
  108. }
  109. if (mEditButton != NULL)
  110. {
  111. RectI shapeEdRect(fieldExtent.x - 16, 2, 14, fieldExtent.y - 4);
  112. resized |= mEditButton->resize(shapeEdRect.point, shapeEdRect.extent);
  113. }
  114. return resized;
  115. }
  116. IMPLEMENT_CONOBJECT(GuiInspectorTypeSubSceneAssetId);
  117. ConsoleDocClass(GuiInspectorTypeSubSceneAssetId,
  118. "@brief Inspector field type for SubScene\n\n"
  119. "Editor use only.\n\n"
  120. "@internal"
  121. );
  122. void GuiInspectorTypeSubSceneAssetId::consoleInit()
  123. {
  124. Parent::consoleInit();
  125. ConsoleBaseType::getType(TypeSubSceneAssetId)->setInspectorFieldType("GuiInspectorTypeSubSceneAssetId");
  126. }
  127. #endif