ContextFormat.hx 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. package arm;
  2. import kha.Image;
  3. import zui.Zui;
  4. import zui.Id;
  5. import iron.math.Vec4;
  6. import iron.object.MeshObject;
  7. import arm.shader.NodeShader;
  8. import arm.ProjectFormat;
  9. #if (is_paint || is_sculpt)
  10. import iron.math.Mat4;
  11. import iron.object.Object;
  12. import iron.data.MaterialData;
  13. import arm.data.MaterialSlot;
  14. import arm.data.LayerSlot;
  15. import arm.data.BrushSlot;
  16. import arm.data.FontSlot;
  17. #end
  18. @:structInit class TContext {
  19. @:optional public var texture: TAsset = null;
  20. @:optional public var paintObject: MeshObject;
  21. @:optional public var mergedObject: MeshObject = null; // For object mask
  22. @:optional public var mergedObjectIsAtlas = false; // Only objects referenced by atlas are merged
  23. @:optional public var ddirty = 0; // depth
  24. @:optional public var pdirty = 0; // paint
  25. @:optional public var rdirty = 0; // render
  26. @:optional public var brushBlendDirty = true;
  27. @:optional public var nodePreviewSocket = 0;
  28. @:optional public var splitView = false;
  29. @:optional public var viewIndex = -1;
  30. @:optional public var viewIndexLast = -1;
  31. @:optional public var swatch: TSwatchColor;
  32. @:optional public var pickedColor: TSwatchColor = Project.makeSwatch();
  33. @:optional public var colorPickerCallback: TSwatchColor->Void = null;
  34. @:optional public var defaultIrradiance: kha.arrays.Float32Array = null;
  35. @:optional public var defaultRadiance: Image = null;
  36. @:optional public var defaultRadianceMipmaps: Array<Image> = null;
  37. @:optional public var savedEnvmap: Image = null;
  38. @:optional public var emptyEnvmap: Image = null;
  39. @:optional public var previewEnvmap: Image = null;
  40. @:optional public var envmapLoaded = false;
  41. @:optional public var showEnvmap = false;
  42. @:optional public var showEnvmapHandle = new Handle({ selected: false });
  43. @:optional public var showEnvmapBlur = false;
  44. @:optional public var showEnvmapBlurHandle = new Handle({ selected: false });
  45. @:optional public var envmapAngle = 0.0;
  46. @:optional public var lightAngle = 0.0;
  47. @:optional public var cullBackfaces = true;
  48. @:optional public var textureFilter = true;
  49. @:optional public var formatType = FormatPng;
  50. @:optional public var formatQuality = 100.0;
  51. @:optional public var layersDestination = DestinationDisk;
  52. @:optional public var splitBy = SplitObject;
  53. @:optional public var parseTransform = true;
  54. @:optional public var parseVCols = false;
  55. @:optional public var selectTime = 0.0;
  56. #if (kha_direct3d12 || kha_vulkan || kha_metal)
  57. @:optional public var pathTraceMode = TraceCore;
  58. #end
  59. #if (kha_direct3d12 || kha_vulkan) // || kha_metal)
  60. @:optional public var viewportMode = ViewPathTrace;
  61. #else
  62. @:optional public var viewportMode = ViewLit;
  63. #end
  64. #if (krom_android || krom_ios)
  65. @:optional public var renderMode = RenderForward;
  66. #else
  67. @:optional public var renderMode = RenderDeferred;
  68. #end
  69. @:optional public var viewportShader: NodeShader->String = null;
  70. @:optional public var hscaleWasChanged = false;
  71. @:optional public var exportMeshFormat = FormatObj;
  72. @:optional public var exportMeshIndex = 0;
  73. @:optional public var packAssetsOnExport = true;
  74. @:optional public var paintVec = new Vec4();
  75. @:optional public var lastPaintX = -1.0;
  76. @:optional public var lastPaintY = -1.0;
  77. @:optional public var foregroundEvent = false;
  78. @:optional public var painted = 0;
  79. @:optional public var brushTime = 0.0;
  80. @:optional public var cloneStartX = -1.0;
  81. @:optional public var cloneStartY = -1.0;
  82. @:optional public var cloneDeltaX = 0.0;
  83. @:optional public var cloneDeltaY = 0.0;
  84. @:optional public var showCompass = true;
  85. @:optional public var projectType = ModelRoundedCube;
  86. @:optional public var projectAspectRatio = 0; // 1:1, 2:1, 1:2
  87. @:optional public var projectObjects: Array<MeshObject>;
  88. @:optional public var lastPaintVecX = -1.0;
  89. @:optional public var lastPaintVecY = -1.0;
  90. @:optional public var prevPaintVecX = -1.0;
  91. @:optional public var prevPaintVecY = -1.0;
  92. @:optional public var frame = 0;
  93. @:optional public var paint2dView = false;
  94. @:optional public var lockStartedX = -1.0;
  95. @:optional public var lockStartedY = -1.0;
  96. @:optional public var brushLocked = false;
  97. @:optional public var brushCanLock = false;
  98. @:optional public var brushCanUnlock = false;
  99. @:optional public var cameraType = CameraPerspective;
  100. @:optional public var camHandle = new Handle();
  101. @:optional public var fovHandle: Handle = null;
  102. @:optional public var undoHandle: Handle = null;
  103. @:optional public var hssao: Handle = null;
  104. @:optional public var hssr: Handle = null;
  105. @:optional public var hbloom: Handle = null;
  106. @:optional public var hsupersample: Handle = null;
  107. @:optional public var hvxao: Handle = null;
  108. #if is_forge
  109. @:optional public var vxaoExt = 2.0;
  110. #else
  111. @:optional public var vxaoExt = 1.0;
  112. #end
  113. @:optional public var vxaoOffset = 1.5;
  114. @:optional public var vxaoAperture = 1.2;
  115. @:optional public var textureExportPath = "";
  116. @:optional public var lastStatusPosition = 0;
  117. @:optional public var cameraControls = ControlsOrbit;
  118. @:optional public var penPaintingOnly = false; // Reject painting with finger when using pen
  119. #if (is_paint || is_sculpt)
  120. @:optional public var material: MaterialSlot;
  121. @:optional public var layer: LayerSlot;
  122. @:optional public var brush: BrushSlot;
  123. @:optional public var font: FontSlot;
  124. @:optional public var tool = ToolBrush;
  125. @:optional public var layerPreviewDirty = true;
  126. @:optional public var layersPreviewDirty = false;
  127. @:optional public var nodePreviewDirty = false;
  128. @:optional public var nodePreview: Image = null;
  129. @:optional public var nodePreviews: Map<String, Image> = null;
  130. @:optional public var nodePreviewsUsed: Array<String> = null;
  131. @:optional public var nodePreviewName = "";
  132. @:optional public var maskPreviewRgba32: kha.Image = null;
  133. @:optional public var maskPreviewLast: LayerSlot = null;
  134. @:optional public var colorIdPicked = false;
  135. @:optional public var materialPreview = false; // Drawing material previews
  136. @:optional public var savedCamera = Mat4.identity();
  137. @:optional public var colorPickerPreviousTool = ToolBrush;
  138. @:optional public var materialIdPicked = 0;
  139. @:optional public var uvxPicked = 0.0;
  140. @:optional public var uvyPicked = 0.0;
  141. @:optional public var pickerSelectMaterial = true;
  142. @:optional public var pickerMaskHandle = new Handle();
  143. @:optional public var pickPosNorTex = false;
  144. @:optional public var posXPicked = 0.0;
  145. @:optional public var posYPicked = 0.0;
  146. @:optional public var posZPicked = 0.0;
  147. @:optional public var norXPicked = 0.0;
  148. @:optional public var norYPicked = 0.0;
  149. @:optional public var norZPicked = 0.0;
  150. @:optional public var drawWireframe = false;
  151. @:optional public var wireframeHandle = new Handle({ selected: false });
  152. @:optional public var drawTexels = false;
  153. @:optional public var texelsHandle = new Handle({ selected: false });
  154. @:optional public var colorIdHandle = Id.handle();
  155. @:optional public var layersExport = ExportVisible;
  156. @:optional public var decalImage: Image = null;
  157. @:optional public var decalPreview = false;
  158. @:optional public var decalX = 0.0;
  159. @:optional public var decalY = 0.0;
  160. @:optional public var cacheDraws = false;
  161. @:optional public var writeIconOnExport = false;
  162. @:optional public var textToolImage: Image = null;
  163. @:optional public var textToolText: String;
  164. @:optional public var particleMaterial: MaterialData = null;
  165. #if arm_physics
  166. @:optional public var particlePhysics = false;
  167. @:optional public var particleHitX = 0.0;
  168. @:optional public var particleHitY = 0.0;
  169. @:optional public var particleHitZ = 0.0;
  170. @:optional public var lastParticleHitX = 0.0;
  171. @:optional public var lastParticleHitY = 0.0;
  172. @:optional public var lastParticleHitZ = 0.0;
  173. @:optional public var particleTimer: iron.system.Tween.TAnim = null;
  174. @:optional public var paintBody: arm.plugin.PhysicsBody = null;
  175. #end
  176. @:optional public var layerFilter = 0;
  177. @:optional public var runBrush: Int->Void = null;
  178. @:optional public var parseBrushInputs: Void->Void = null;
  179. @:optional public var gizmo: Object = null;
  180. @:optional public var gizmoTranslateX: Object = null;
  181. @:optional public var gizmoTranslateY: Object = null;
  182. @:optional public var gizmoTranslateZ: Object = null;
  183. @:optional public var gizmoScaleX: Object = null;
  184. @:optional public var gizmoScaleY: Object = null;
  185. @:optional public var gizmoScaleZ: Object = null;
  186. @:optional public var gizmoRotateX: Object = null;
  187. @:optional public var gizmoRotateY: Object = null;
  188. @:optional public var gizmoRotateZ: Object = null;
  189. @:optional public var gizmoStarted = false;
  190. @:optional public var gizmoOffset = 0.0;
  191. @:optional public var gizmoDrag = 0.0;
  192. @:optional public var gizmoDragLast = 0.0;
  193. @:optional public var translateX = false;
  194. @:optional public var translateY = false;
  195. @:optional public var translateZ = false;
  196. @:optional public var scaleX = false;
  197. @:optional public var scaleY = false;
  198. @:optional public var scaleZ = false;
  199. @:optional public var rotateX = false;
  200. @:optional public var rotateY = false;
  201. @:optional public var rotateZ = false;
  202. @:optional public var brushNodesRadius = 1.0;
  203. @:optional public var brushNodesOpacity = 1.0;
  204. @:optional public var brushMaskImage: Image = null;
  205. @:optional public var brushMaskImageIsAlpha = false;
  206. @:optional public var brushStencilImage: Image = null;
  207. @:optional public var brushStencilImageIsAlpha = false;
  208. @:optional public var brushStencilX = 0.02;
  209. @:optional public var brushStencilY = 0.02;
  210. @:optional public var brushStencilScale = 0.9;
  211. @:optional public var brushStencilScaling = false;
  212. @:optional public var brushStencilAngle = 0.0;
  213. @:optional public var brushStencilRotating = false;
  214. @:optional public var brushNodesScale = 1.0;
  215. @:optional public var brushNodesAngle = 0.0;
  216. @:optional public var brushNodesHardness = 1.0;
  217. @:optional public var brushDirectional = false;
  218. @:optional public var brushRadius = 0.5;
  219. @:optional public var brushRadiusHandle = new Handle({ value: 0.5 });
  220. @:optional public var brushScaleX = 1.0;
  221. @:optional public var brushDecalMaskRadius = 0.5;
  222. @:optional public var brushDecalMaskRadiusHandle = new Handle({ value: 0.5 });
  223. @:optional public var brushScaleXHandle = new Handle({ value: 1.0 });
  224. @:optional public var brushBlending = BlendMix;
  225. @:optional public var brushOpacity = 1.0;
  226. @:optional public var brushOpacityHandle = new Handle({ value: 1.0 });
  227. @:optional public var brushScale = 1.0;
  228. @:optional public var brushAngle = 0.0;
  229. @:optional public var brushAngleHandle = new Handle({ value: 0.0 });
  230. #if is_paint
  231. @:optional public var brushHardness = 0.8;
  232. #end
  233. #if is_sculpt
  234. @:optional public var brushHardness = 0.05;
  235. #end
  236. @:optional public var brushLazyRadius = 0.0;
  237. @:optional public var brushLazyStep = 0.0;
  238. @:optional public var brushLazyX = 0.0;
  239. @:optional public var brushLazyY = 0.0;
  240. @:optional public var brushPaint = UVMap;
  241. @:optional public var brushAngleRejectDot = 0.5;
  242. @:optional public var bakeType = BakeAO;
  243. @:optional public var bakeAxis = BakeXYZ;
  244. @:optional public var bakeUpAxis = BakeUpZ;
  245. @:optional public var bakeSamples = 128;
  246. @:optional public var bakeAoStrength = 1.0;
  247. @:optional public var bakeAoRadius = 1.0;
  248. @:optional public var bakeAoOffset = 1.0;
  249. @:optional public var bakeCurvStrength = 1.0;
  250. @:optional public var bakeCurvRadius = 1.0;
  251. @:optional public var bakeCurvOffset = 0.0;
  252. @:optional public var bakeCurvSmooth = 1;
  253. @:optional public var bakeHighPoly = 0;
  254. @:optional public var xray = false;
  255. @:optional public var symX = false;
  256. @:optional public var symY = false;
  257. @:optional public var symZ = false;
  258. @:optional public var fillTypeHandle = new Handle();
  259. @:optional public var paint2d = false;
  260. @:optional public var lastHtab0Position = 0;
  261. @:optional public var maximizedSidebarWidth = 0;
  262. @:optional public var dragDestination = 0;
  263. #end
  264. #if is_lab
  265. @:optional public var material: Dynamic; ////
  266. @:optional public var layer: Dynamic; ////
  267. @:optional public var tool = ToolEraser;
  268. @:optional public var colorPickerPreviousTool = ToolEraser;
  269. @:optional public var brushRadius = 0.25;
  270. @:optional public var brushRadiusHandle = new Handle({ value: 0.25 });
  271. @:optional public var brushScale = 1.0;
  272. @:optional public var coords = new Vec4();
  273. @:optional public var startX = 0.0;
  274. @:optional public var startY = 0.0;
  275. // Brush ruler
  276. @:optional public var lockBegin = false;
  277. @:optional public var lockX = false;
  278. @:optional public var lockY = false;
  279. @:optional public var lockStartX = 0.0;
  280. @:optional public var lockStartY = 0.0;
  281. @:optional public var registered = false;
  282. #end
  283. #if is_forge
  284. @:optional public var selectedObject: Object = null;
  285. #end
  286. }