DDraceNetwork Documentation
Loading...
Searching...
No Matches
editor.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_EDITOR_EDITOR_H
4#define GAME_EDITOR_EDITOR_H
5
6#include "editor_history.h"
8#include "editor_trackers.h"
9#include "editor_ui.h"
10#include "font_typer.h"
11#include "layer_selector.h"
12#include "map_view.h"
13#include "quadart.h"
14#include "smooth_value.h"
15
16#include <base/bezier.h>
17
18#include <engine/editor.h>
20
21#include <game/client/ui.h>
23#include <game/editor/enums.h>
38#include <game/editor/prompt.h>
41#include <game/mapitems.h>
42
43#include <deque>
44#include <functional>
45#include <map>
46#include <memory>
47#include <string>
48#include <vector>
49
50template<typename T>
51using FDropdownRenderCallback = std::function<void(const T &, char (&aOutput)[128], std::vector<STextColorSplit> &)>;
52
53// CEditor SPECIFIC
54enum
55{
61};
62
63enum
64{
69
70 // The font typer component sets m_Dialog
71 // while it is active to make sure no other component
72 // interprets the key presses
74};
77{
78public:
79 CProperty(const char *pName, int Value, int Type, int Min, int Max) :
80 m_pName(pName), m_Value(Value), m_Type(Type), m_Min(Min), m_Max(Max) {}
81
82 CProperty(std::nullptr_t) :
83 m_pName(nullptr), m_Value(0), m_Type(0), m_Min(0), m_Max(0) {}
84
85 const char *m_pName;
87 int m_Type;
88 int m_Min;
89 int m_Max;
90};
92enum
93{
105};
106
107class CEditor : public IEditor, public IEnvelopeEval
108{
109 class IInput *m_pInput = nullptr;
110 class IClient *m_pClient = nullptr;
112 class CConfig *m_pConfig = nullptr;
113 class IEngine *m_pEngine = nullptr;
114 class IGraphics *m_pGraphics = nullptr;
115 class ITextRender *m_pTextRender = nullptr;
116 class ISound *m_pSound = nullptr;
117 class IStorage *m_pStorage = nullptr;
120
121 std::vector<std::reference_wrapper<CEditorComponent>> m_vComponents;
127
129
137
138 int GetTextureUsageFlag() const;
146
147 std::shared_ptr<CLayerGroup> m_apSavedBrushes[10];
148 static constexpr ColorRGBA ms_DefaultPropColor = ColorRGBA(1, 1, 1, 0.5f);
149
150public:
151 class IInput *Input() const { return m_pInput; }
152 class IClient *Client() const { return m_pClient; }
154 class CConfig *Config() const { return m_pConfig; }
155 class IEngine *Engine() const { return m_pEngine; }
156 class IGraphics *Graphics() const { return m_pGraphics; }
157 class ISound *Sound() const { return m_pSound; }
158 class ITextRender *TextRender() const { return m_pTextRender; }
159 class IStorage *Storage() const { return m_pStorage; }
160 CUi *Ui() { return &m_UI; }
162
163 CEditorMap *Map() { return &m_Map; }
164 const CEditorMap *Map() const { return &m_Map; }
165 CMapView *MapView() { return &m_MapView; }
166 const CMapView *MapView() const { return &m_MapView; }
168
169 void SelectNextLayer();
170 void SelectPreviousLayer();
172 void FillGameTiles(EGameTileOp FillTile) const;
173 bool CanFillGameTiles() const;
174 void AddQuadOrSound();
175 void AddGroup();
176 void AddSoundLayer();
177 void AddTileLayer();
178 void AddQuadsLayer();
179 void AddSwitchLayer();
180 void AddFrontLayer();
182 void AddSpeedupLayer();
183 void AddTeleLayer();
184 void DeleteSelectedLayer();
185 void LayerSelectImage();
186 bool IsNonGameTileLayerSelected() const;
187 void MapDetails();
188 void TestMapLocally();
189#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) CQuickAction m_QuickAction##name;
191#undef REGISTER_QUICK_ACTION
192
194#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) m_QuickAction##name(text, description, callback, disabled, active, button_color),
195#include <game/editor/quick_actions.h>
197 m_ZoomEnvelopeX(1.0f, 0.1f, 600.0f),
198 m_ZoomEnvelopeY(640.0f, 0.1f, 32000.0f),
200 m_Map(this)
201 {
202 m_EntitiesTexture.Invalidate();
203 m_FrontTexture.Invalidate();
204 m_TeleTexture.Invalidate();
205 m_SpeedupTexture.Invalidate();
206 m_SwitchTexture.Invalidate();
207 m_TuneTexture.Invalidate();
208
210 m_Dialog = 0;
211
212 m_BrushColorEnabled = true;
214 m_aFilenamePendingLoad[0] = '\0';
216 m_PopupEventActivated = false;
218
220
221 m_SelectEntitiesImage = "DDNet";
222
223 m_ResetZoomEnvelope = true;
224 m_OffsetEnvelopeX = 0.1f;
225 m_OffsetEnvelopeY = 0.5f;
226
227 m_ShowMousePointer = true;
228
230 m_PreviewZoom = false;
231
233 m_ShowDetail = true;
234 m_Animate = false;
235 m_AnimateStart = 0;
236 m_AnimateTime = 0;
237 m_AnimateSpeed = 1;
238 m_AnimateUpdatePopup = false;
239
241
243 m_UpdateEnvPointInfo = false;
244 m_SelectedTangentInPoint = std::pair(-1, -1);
245 m_SelectedTangentOutPoint = std::pair(-1, -1);
247
248 for(size_t i = 0; i < std::size(m_aSavedColors); ++i)
249 {
250 m_aSavedColors[i] = color_cast<ColorRGBA>(ColorHSLA(i / (float)std::size(m_aSavedColors), 1.0f, 0.5f));
251 }
252
254 for(auto &CursorTexture : m_aCursorTextures)
255 CursorTexture.Invalidate();
256
259 // DDRace
260
261 m_TeleNumber = 1;
264
265 m_TuningNumber = 1;
267
268 m_SwitchNumber = 1;
269 m_SwitchDelay = 0;
270 m_SpeedupForce = 50;
272 m_SpeedupAngle = 0;
273 m_LargeLayerWasWarned = false;
277 }
278
279 class CHoverTile
280 {
281 public:
282 CHoverTile(int Group, int Layer, int x, int y, const CTile Tile) :
283 m_Group(Group),
284 m_Layer(Layer),
285 m_X(x),
286 m_Y(y),
287 m_Tile(Tile)
288 {
289 }
291 int m_Group;
292 int m_Layer;
293 int m_X;
294 int m_Y;
295 const CTile m_Tile;
296 };
297 std::vector<CHoverTile> m_vHoverTiles;
298 const std::vector<CHoverTile> &HoverTiles() const { return m_vHoverTiles; }
299
300 void Init() override;
301 void OnUpdate() override;
302 void OnRender() override;
303 void OnActivate() override;
304 void OnWindowResize() override;
305 void OnClose() override;
306 void OnDialogClose();
307 bool HasUnsavedData() const override { return Map()->m_Modified; }
308 void UpdateMentions() override { m_Mentions++; }
309 void ResetMentions() override { m_Mentions = 0; }
310 void OnIngameMoved() override { m_IngameMoved = true; }
311 void ResetIngameMoved() override { m_IngameMoved = false; }
312
314 void OnMouseMove(vec2 MousePos);
315 void MouseAxisLock(vec2 &CursorRel);
316 vec2 m_MouseAxisInitialPos = vec2(0.0f, 0.0f);
317 enum class EAxisLock
318 {
319 Start,
324
330 float m_LastAutosaveUpdateTime = -1.0f;
333
334 // TODO: The name of the ShowFileDialogError function is not accurate anymore, this is used for generic error messages.
335 // Popups in UI should be shared_ptrs to make this even more generic.
337 {
338 public:
339 bool operator()(const char *pLhs, const char *pRhs) const;
340 };
341 std::map<const char *, CUi::SMessagePopupContext *, CStringKeyComparator> m_PopupMessageContexts;
342 [[gnu::format(printf, 2, 3)]] void ShowFileDialogError(const char *pFormat, ...);
343
344 void Reset(bool CreateDefault = true);
345 bool Save(const char *pFilename) override;
346 bool Load(const char *pFilename, int StorageType) override;
347 bool HandleMapDrop(const char *pFilename, int StorageType) override;
348 bool Append(const char *pFilename, int StorageType, bool IgnoreHistory = false);
349 void LoadCurrentMap();
350 void Render();
351
355 void UpdateColorPipette();
356 void RenderMousePointer();
357 void RenderGameEntities(const std::shared_ptr<CLayerTiles> &pTiles);
358 void RenderSwitchEntities(const std::shared_ptr<CLayerTiles> &pTiles);
359
360 std::vector<CQuad *> GetSelectedQuads();
361 std::shared_ptr<CLayer> GetSelectedLayerType(int Index, int Type) const;
362 std::shared_ptr<CLayer> GetSelectedLayer(int Index) const;
363 std::shared_ptr<CLayerGroup> GetSelectedGroup() const;
365 void SelectLayer(int LayerIndex, int GroupIndex = -1);
366 void AddSelectedLayer(int LayerIndex);
367 void SelectQuad(int Index);
368 void ToggleSelectQuad(int Index);
369 void DeselectQuads();
370 void DeselectQuadPoints();
371 void SelectQuadPoint(int QuadIndex, int Index);
372 void ToggleSelectQuadPoint(int QuadIndex, int Index);
374 bool IsQuadSelected(int Index) const;
375 bool IsQuadCornerSelected(int Index) const;
376 bool IsQuadPointSelected(int QuadIndex, int Index) const;
377 int FindSelectedQuadIndex(int Index) const;
378
379 int FindEnvPointIndex(int Index, int Channel) const;
380 void SelectEnvPoint(int Index);
381 void SelectEnvPoint(int Index, int Channel);
382 void ToggleEnvPoint(int Index, int Channel);
383 bool IsEnvPointSelected(int Index, int Channel) const;
384 bool IsEnvPointSelected(int Index) const;
385 void DeselectEnvPoints();
386 void SelectTangentOutPoint(int Index, int Channel);
387 bool IsTangentOutPointSelected(int Index, int Channel) const;
388 void SelectTangentInPoint(int Index, int Channel);
389 bool IsTangentInPointSelected(int Index, int Channel) const;
390 bool IsTangentInSelected() const;
391 bool IsTangentOutSelected() const;
392 bool IsTangentSelected() const;
393 std::pair<CFixedTime, int> EnvGetSelectedTimeAndValue() const;
395 template<typename E>
396 SEditResult<E> DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
397 int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
398
399 CUi::SColorPickerPopupContext m_ColorPickerPopupContext;
400 const void *m_pColorPickerPopupActiveId = nullptr;
401 void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function<void(ColorRGBA Color)> &SetColor);
402
403 int m_Mode;
404 int m_Dialog;
405 char m_aTooltip[256] = "";
406
408
413
414 enum
415 {
416 POPEVENT_EXIT = 0,
435 };
436
442
443 enum class EUnusedEntities
444 {
445 ALLOWED_IMPLICIT = -1,
446 NOT_ALLOWED = 0,
448 };
450 bool IsAllowPlaceUnusedTiles() const;
451
453
454 int m_Mentions = 0;
455 bool m_IngameMoved = false;
456
458
459 std::vector<std::string> m_vSelectEntitiesFiles;
460 std::string m_SelectEntitiesImage;
461
462 // Zooming
463 CSmoothValue m_ZoomEnvelopeX;
464 CSmoothValue m_ZoomEnvelopeY;
465
467
468 float m_OffsetEnvelopeX;
469 float m_OffsetEnvelopeY;
470
472 bool m_GuiActive;
473
474 bool m_PreviewZoom;
475 float m_MouseWorldScale = 1.0f; // Mouse (i.e. UI) scale relative to the World (selected Group)
476 vec2 m_MouseWorldPos = vec2(0.0f, 0.0f);
477 vec2 m_MouseWorldNoParaPos = vec2(0.0f, 0.0f);
478 vec2 m_MouseDeltaWorld = vec2(0.0f, 0.0f);
479 const void *m_pContainerPanned;
480 const void *m_pContainerPannedLast;
481 char m_MapEditorId; // UI element ID for the main map editor
482
483 enum EShowTile
484 {
488 };
490 bool m_ShowDetail;
491
492 bool m_Animate;
493 int64_t m_AnimateStart;
494 float m_AnimateTime;
495 float m_AnimateSpeed;
497
498 enum EExtraEditor
499 {
500 EXTRAEDITOR_NONE = -1,
505 };
507 float m_aExtraEditorSplits[NUM_EXTRAEDITORS] = {250.0f, 250.0f, 250.0f};
508 float m_ToolBoxWidth = 100.0f;
509
510 bool m_ShowEnvelopePreview = false;
511 enum class EEnvelopePreview
512 {
513 NONE,
514 SELECTED,
515 ALL,
516 };
519 {
520 NONE = 0,
521 MOVE,
522 ROTATE,
523 };
525
526 bool m_ShowPicker;
527
528 std::vector<int> m_vSelectedLayers;
529 std::vector<int> m_vSelectedQuads;
530 int m_SelectedGroup;
533 std::vector<std::pair<int, int>> m_vSelectedEnvelopePoints;
537 std::pair<int, int> m_SelectedTangentInPoint;
538 std::pair<int, int> m_SelectedTangentOutPoint;
540
541 // Color palette and pipette
542 ColorRGBA m_aSavedColors[8];
543 ColorRGBA m_PipetteColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
544 bool m_ColorPipetteActive = false;
545
546 IGraphics::CTextureHandle m_CheckerTexture;
547
548 enum ECursorType
549 {
554 };
555 IGraphics::CTextureHandle m_aCursorTextures[ECursorType::NUM_CURSORS];
557
558 IGraphics::CTextureHandle GetEntitiesTexture();
559
560 std::shared_ptr<CLayerGroup> m_pBrush;
561 std::shared_ptr<CLayerTiles> m_pTilesetPicker;
562 std::shared_ptr<CLayerQuads> m_pQuadsetPicker;
563
564 const void *m_pUiGotContext = nullptr;
565
566 std::deque<std::shared_ptr<CDataFileWriterFinishJob>> m_WriterFinishJobs;
567
568 void EnvelopeEval(int TimeOffsetMillis, int EnvelopeIndex, ColorRGBA &Result, size_t Channels) override;
569
570 CLineInputBuffered<256> m_SettingsCommandInput;
571 CMapSettingsBackend m_MapSettingsBackend;
572 CMapSettingsBackend::CContext m_MapSettingsCommandContext;
573
574 CImageInfo m_TileartImageInfo;
575 void AddTileart(bool IgnoreHistory = false);
577 void TileartCheckColors();
578
579 CImageInfo m_QuadArtImageInfo;
580 CQuadArtParameters m_QuadArtParameters;
581 void AddQuadArt(bool IgnoreHistory = false);
582
583 void PlaceBorderTiles();
584
585 // editor_ui.cpp
586 void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip);
587 ColorRGBA GetButtonColor(const void *pId, int Checked);
588 int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
589 int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
590 int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners);
591 int DoButton_Ex(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize = EditorFontSizes::MENU, int Align = TEXTALIGN_MC);
592 int DoButton_FontIcon(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize = 10.0f);
593 int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags = BUTTONFLAG_LEFT, const char *pToolTip = nullptr);
594 int DoButton_DraggableEx(const void *pId, const char *pText, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted, int Flags, const char *pToolTip = nullptr, int Corners = IGraphics::CORNER_ALL, float FontSize = 10.0f);
595 bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
596 bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
597 SEditResult<int> UiDoValueSelector(void *pId, CUIRect *pRect, const char *pLabel, int Current, int Min, int Max, int Step, float Scale, const char *pToolTip, bool IsDegree = false, bool IsHex = false, int Corners = IGraphics::CORNER_ALL, const ColorRGBA *pColor = nullptr, bool ShowValue = true);
598 void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const;
599
600 // editor_server_settings.cpp
601 void DoMapSettingsEditBox(CMapSettingsBackend::CContext *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr);
602 template<typename T>
603 int DoEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CLineInput *pLineInput, const CUIRect *pEditBoxRect, int x, float MaxHeight, bool AutoWidth, const std::vector<T> &vData, const FDropdownRenderCallback<T> &pfnMatchCallback);
604 template<typename T>
605 int RenderEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CUIRect View, CLineInput *pLineInput, int x, float MaxHeight, bool AutoWidth, const std::vector<T> &vData, const FDropdownRenderCallback<T> &pfnMatchCallback);
606
607 static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active);
608 static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active);
609 static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active);
610 static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active);
611 struct SLayerPopupContext : public SPopupMenuId
612 {
614 std::vector<std::shared_ptr<CLayerTiles>> m_vpLayers;
615 std::vector<int> m_vLayerIndices;
616 CLayerTiles::SCommonPropState m_CommonPropState;
617 };
618 static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active);
619 class CQuadPopupContext : public SPopupMenuId
620 {
621 public:
624 int m_Color;
625 };
627 static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active);
628 static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active);
629 class CPointPopupContext : public SPopupMenuId
630 {
631 public:
635 };
637 static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active);
638 static CUi::EPopupMenuFunctionResult PopupEnvPoint(void *pContext, CUIRect View, bool Active);
639 static CUi::EPopupMenuFunctionResult PopupEnvPointMulti(void *pContext, CUIRect View, bool Active);
640 static CUi::EPopupMenuFunctionResult PopupEnvPointCurveType(void *pContext, CUIRect View, bool Active);
641 static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active);
642 static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active);
643 static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active);
644 static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active);
645 static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active);
646 static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active);
647 static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active);
648 static CUi::EPopupMenuFunctionResult PopupSelectConfigAutoMap(void *pContext, CUIRect View, bool Active);
649 static CUi::EPopupMenuFunctionResult PopupSelectAutoMapReference(void *pContext, CUIRect View, bool Active);
650 static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active);
651 static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active);
652 static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active);
653 static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active);
654 static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active);
655 static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active);
656 static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active);
657 static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active);
659 static CUi::EPopupMenuFunctionResult PopupEnvelopeCurvetype(void *pContext, CUIRect View, bool Active);
660 static CUi::EPopupMenuFunctionResult PopupQuadArt(void *pContext, CUIRect View, bool Active);
661
662 static bool CallbackOpenMap(const char *pFilename, int StorageType, void *pUser);
663 static bool CallbackAppendMap(const char *pFilename, int StorageType, void *pUser);
664 static bool CallbackSaveMap(const char *pFilename, int StorageType, void *pUser);
665 static bool CallbackSaveCopyMap(const char *pFilename, int StorageType, void *pUser);
666 static bool CallbackAddTileart(const char *pFilepath, int StorageType, void *pUser);
667 static bool CallbackAddQuadArt(const char *pFilepath, int StorageType, void *pUser);
668 static bool CallbackSaveImage(const char *pFilename, int StorageType, void *pUser);
669 static bool CallbackSaveSound(const char *pFilename, int StorageType, void *pUser);
670 static bool CallbackCustomEntities(const char *pFilename, int StorageType, void *pUser);
671
672 void PopupSelectImageInvoke(int Current, float x, float y);
674
675 void PopupSelectGametileOpInvoke(float x, float y);
677
678 void PopupSelectConfigAutoMapInvoke(int Current, float x, float y);
680
681 void PopupSelectSoundInvoke(int Current, float x, float y);
683
684 void PopupSelectAutoMapReferenceInvoke(int Current, float x, float y);
686
687 void DoQuadEnvelopes(const CLayerQuads *pLayerQuads);
688 void DoQuadEnvPoint(const CQuad *pQuad, CEnvelope *pEnvelope, int QuadIndex, int PointIndex);
689 void DoQuadPoint(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int v);
690 void UpdateHotQuadPoint(const CLayerQuads *pLayer);
693 bool IsInTriangle(vec2 Point, vec2 A, vec2 B, vec2 C);
694 void DoQuadKnife(int QuadIndex);
696 void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index);
697 void UpdateHotSoundSource(const CLayerSounds *pLayer);
698
699 enum class EAxis
700 {
701 AXIS_NONE = 0,
702 AXIS_X,
703 AXIS_Y
704 };
707 enum
709 POINT_TL = 0,
710 POINT_TR,
711 POINT_BL,
712 POINT_BR,
721 void DoToolbarSounds(CUIRect Toolbar);
722 void DoQuad(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int Index);
723 void PreparePointDrag(const CQuad *pQuad, int QuadIndex, int PointIndex);
724 void DoPointDrag(CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset);
725 EAxis GetDragAxis(ivec2 Offset) const;
726 void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const;
727 void DrawAABB(const SAxisAlignedBoundingBox &AABB, ivec2 Offset) const;
728
729 // Alignment methods
730 // These methods take `OffsetX` and `OffsetY` because the calculations are made with the original positions
731 // of the quad(s), before we started dragging. This allows us to edit `OffsetX` and `OffsetY` based on the previously
732 // calculated alignments.
734 {
735 CPoint m_AlignedPoint; // The "aligned" point, which we want to align/snap to
736 union
737 {
738 // The current changing value when aligned to this point. When aligning to a point on the X axis, then the X value is changing because
739 // we aligned the Y values (X axis aligned => Y values are the same, Y axis aligned => X values are the same).
740 int m_X;
741 int m_Y;
742 };
743 EAxis m_Axis; // The axis we are aligning on
744 int m_PointIndex; // The point index we are aligning
745 int m_Diff; // Store the difference
746 };
747 void ComputePointAlignments(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset, std::vector<SAlignmentInfo> &vAlignments, bool Append = false) const;
748 void ComputePointsAlignments(const std::shared_ptr<CLayerQuads> &pLayer, bool Pivot, ivec2 Offset, std::vector<SAlignmentInfo> &vAlignments) const;
749 void ComputeAABBAlignments(const std::shared_ptr<CLayerQuads> &pLayer, const SAxisAlignedBoundingBox &AABB, ivec2 Offset, std::vector<SAlignmentInfo> &vAlignments) const;
750 void DrawPointAlignments(const std::vector<SAlignmentInfo> &vAlignments, ivec2 Offset) const;
751 void QuadSelectionAABB(const std::shared_ptr<CLayerQuads> &pLayer, SAxisAlignedBoundingBox &OutAABB);
752 void ApplyAlignments(const std::vector<SAlignmentInfo> &vAlignments, ivec2 &Offset);
753 void ApplyAxisAlignment(ivec2 &Offset) const;
754
755 bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate);
756 static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser);
757 bool ReplaceSound(const char *pFilename, int StorageType, bool CheckDuplicate);
758 static bool ReplaceSoundCallback(const char *pFilename, int StorageType, void *pUser);
759 static bool AddImage(const char *pFilename, int StorageType, void *pUser);
760 static bool AddSound(const char *pFilename, int StorageType, void *pUser);
761
762 bool IsEnvelopeUsed(int EnvelopeIndex) const;
764
765 static bool IsVanillaImage(const char *pImage);
766
767 void RenderLayers(CUIRect LayersBox);
768 void RenderImagesList(CUIRect Toolbox);
769 void RenderSelectedImage(CUIRect View) const;
770 void RenderSounds(CUIRect Toolbox);
771 void RenderModebar(CUIRect View);
772 void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect);
773 void RenderTooltip(CUIRect TooltipRect);
774
775 void RenderEnvelopeEditor(CUIRect View);
776 void RenderEnvelopeEditorColorBar(CUIRect ColorBar, const std::shared_ptr<CEnvelope> &pEnvelope);
777
779 void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast);
780 static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char (&aOutput)[128], std::vector<STextColorSplit> &vColorSplits);
781
782 void RenderEditorHistory(CUIRect View);
783
784 enum class EDragSide // Which side is the drag bar on
785 {
787 SIDE_LEFT,
788 SIDE_TOP,
790 };
791 void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue = 100.0f, float MaxValue = 400.0f);
792
793 void UpdateHotEnvelopePoint(const CUIRect &View, const CEnvelope *pEnvelope, int ActiveChannels);
794
795 void RenderMenubar(CUIRect Menubar);
798
799 void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId);
801 // Zooming
802 void ZoomAdaptOffsetX(float ZoomFactor, const CUIRect &View);
803 void UpdateZoomEnvelopeX(const CUIRect &View);
805 void ZoomAdaptOffsetY(float ZoomFactor, const CUIRect &View);
806 void UpdateZoomEnvelopeY(const CUIRect &View);
807
808 void ResetZoomEnvelope(const std::shared_ptr<CEnvelope> &pEnvelope, int ActiveChannels);
809 void RemoveTimeOffsetEnvelope(const std::shared_ptr<CEnvelope> &pEnvelope);
810 float ScreenToEnvelopeX(const CUIRect &View, float x) const;
811 float EnvelopeToScreenX(const CUIRect &View, float x) const;
812 float ScreenToEnvelopeY(const CUIRect &View, float y) const;
813 float EnvelopeToScreenY(const CUIRect &View, float y) const;
814 float ScreenToEnvelopeDX(const CUIRect &View, float DeltaX);
815 float ScreenToEnvelopeDY(const CUIRect &View, float DeltaY);
817 // DDRace
825 unsigned char m_TeleNumber;
827 unsigned char m_ViewTeleNumber;
829 unsigned char m_TuningNumber;
830 unsigned char m_ViewTuning;
832 unsigned char m_SpeedupForce;
833 unsigned char m_SpeedupMaxSpeed;
836 unsigned char m_SwitchNumber;
837 unsigned char m_SwitchDelay;
838 unsigned char m_ViewSwitch;
839
840 void AdjustBrushSpecialTiles(bool UseNextFree, int Adjust = 0);
841
842private:
847 std::map<int, CPoint[5]> m_QuadDragOriginalPoints;
848};
850#endif
Definition config.h:30
Definition editor_history.h:13
Definition map.h:53
bool m_Modified
Definition map.h:83
CHoverTile(int Group, int Layer, int x, int y, const CTile Tile)
Definition editor.h:679
int m_Layer
Definition editor.h:689
const CTile m_Tile
Definition editor.h:692
int m_Group
Definition editor.h:688
int m_X
Definition editor.h:690
int m_Y
Definition editor.h:691
Definition editor.h:1027
CEditor * m_pEditor
Definition editor.h:1029
int m_SelectedQuadIndex
Definition editor.h:1031
int m_SelectedQuadPoint
Definition editor.h:1030
Definition editor.h:1017
int m_Color
Definition editor.h:1021
int m_SelectedQuadIndex
Definition editor.h:1020
CEditor * m_pEditor
Definition editor.h:1019
Definition editor.h:734
bool operator()(const char *pLhs, const char *pRhs) const
Definition editor.cpp:4559
void RenderGameEntities(const std::shared_ptr< CLayerTiles > &pTiles)
Definition editor.cpp:7203
IGraphics::CTextureHandle GetSpeedupTexture()
Definition editor.cpp:7467
unsigned char m_SpeedupForce
Definition editor.h:1229
static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2239
class IStorage * m_pStorage
Definition editor.h:117
static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:25
CEditorMap m_Map
Definition editor.h:1240
void OnClose() override
Definition editor.cpp:7878
int DoButton_DraggableEx(const void *pId, const char *pText, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted, int Flags, const char *pToolTip=nullptr, int Corners=IGraphics::CORNER_ALL, float FontSize=10.0f)
Definition editor_ui.cpp:152
void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function< void(ColorRGBA Color)> &SetColor)
Definition editor.cpp:3335
int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners)
Definition editor_ui.cpp:92
int PopupSelectGameTileOpResult()
Definition popups.cpp:2417
EEnvelopePreview m_ActiveEnvelopePreview
Definition editor.h:914
bool m_ShowMousePointer
Definition editor.h:868
int m_ToolbarPreviewSound
Definition editor.h:854
void ZoomAdaptOffsetY(float ZoomFactor, const CUIRect &View)
Definition editor.cpp:4776
void RenderPressedKeys(CUIRect View)
Definition editor.cpp:7044
static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:748
bool IsNonGameTileLayerSelected() const
Definition quick_actions.cpp:142
void DoMapSettingsEditBox(CMapSettingsBackend::CContext *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr)
Definition editor_server_settings.cpp:290
void DoMapEditor(CUIRect View)
Definition editor.cpp:2696
CPrompt m_Prompt
Definition editor.h:125
int RenderEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CUIRect View, CLineInput *pLineInput, int x, float MaxHeight, bool AutoWidth, const std::vector< T > &vData, const FDropdownRenderCallback< T > &pfnMatchCallback)
Definition editor_server_settings.cpp:463
void TestMapLocally()
Definition quick_actions.cpp:218
bool m_IngameMoved
Definition editor.h:852
EUnusedEntities
Definition editor.h:841
@ NOT_ALLOWED
Definition editor.h:843
@ ALLOWED_IMPLICIT
Definition editor.h:842
@ ALLOWED_EXPLICIT
Definition editor.h:844
IGraphics::CTextureHandle GetFrontTexture()
Definition editor.cpp:7453
int m_SelectedSource
Definition editor.h:933
EAxisLock
Definition editor.h:715
@ Vertical
Definition editor.h:719
@ None
Definition editor.h:717
@ Start
Definition editor.h:716
@ Horizontal
Definition editor.h:718
bool m_BrushColorEnabled
Definition editor.h:804
const void * m_pUiGotContext
Definition editor.h:961
float m_AnimateSpeed
Definition editor.h:892
void PreparePointDrag(const CQuad *pQuad, int QuadIndex, int PointIndex)
Definition editor.cpp:1224
void UpdateHotQuadPoint(const CLayerQuads *pLayer)
Definition editor.cpp:3288
bool m_EditorWasUsedBefore
Definition editor.h:128
IGraphics::CTextureHandle GetTuneTexture()
Definition editor.cpp:7481
void RenderEnvelopeEditor(CUIRect View)
Definition editor.cpp:5021
void DeselectQuads()
Definition editor.cpp:183
static bool ReplaceSoundCallback(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:4313
static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1134
CEditorHistory & ActiveHistory()
Definition editor.cpp:8109
CMapSettingsBackend::CContext m_MapSettingsCommandContext
Definition editor.h:969
bool HasUnsavedData() const override
Definition editor.h:704
static bool CallbackOpenMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:452
std::shared_ptr< CLayerTiles > m_pTilesetPicker
Definition editor.h:958
IGraphics::CTextureHandle m_FrontTexture
Definition editor.h:132
int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition editor_ui.cpp:83
unsigned char m_ViewSwitch
Definition editor.h:1235
void DeleteSelectedLayer()
Definition quick_actions.cpp:193
void AddQuadArt(bool IgnoreHistory=false)
Definition quadart.cpp:171
CLayerSelector m_LayerSelector
Definition editor.h:123
void DoQuadPoint(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int v)
Definition editor.cpp:2000
void RenderMousePointer()
Definition editor.cpp:7153
void AddGroup()
Definition quick_actions.cpp:50
vec2 m_MouseDeltaWorld
Definition editor.h:875
void Init() override
Definition editor.cpp:7495
static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2918
bool m_ShowPicker
Definition editor.h:923
void ComputePointsAlignments(const std::shared_ptr< CLayerQuads > &pLayer, bool Pivot, ivec2 Offset, std::vector< SAlignmentInfo > &vAlignments) const
Definition editor.cpp:1388
std::vector< CHoverTile > m_vHoverTiles
Definition editor.h:694
void UpdateHotEnvelopePoint(const CUIRect &View, const CEnvelope *pEnvelope, int ActiveChannels)
Definition editor.cpp:4966
void OnUpdate() override
Definition editor.cpp:7780
void PopupSelectImageInvoke(int Current, float x, float y)
Definition popups.cpp:2301
std::vector< CQuad * > GetSelectedQuads()
Definition editor.cpp:124
static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2719
const void * m_pContainerPannedLast
Definition editor.h:877
void SelectNextLayer()
Definition editor.cpp:404
unsigned char m_SpeedupMaxSpeed
Definition editor.h:1230
float ScreenToEnvelopeDX(const CUIRect &View, float DeltaX)
Definition editor.cpp:4863
bool Save(const char *pFilename) override
Definition editor.cpp:7912
IGraphics::CTextureHandle m_TuneTexture
Definition editor.h:136
CUi * Ui()
Definition editor.h:160
vec2 m_MouseWorldNoParaPos
Definition editor.h:874
float m_ToolBoxWidth
Definition editor.h:905
void RenderMenubar(CUIRect Menubar)
Definition editor.cpp:6626
IGraphics::CTextureHandle GetEntitiesTexture()
Definition editor.cpp:7488
IGraphics::CTextureHandle GetTeleTexture()
Definition editor.cpp:7460
char m_aTileartFilename[IO_MAX_PATH_LENGTH]
Definition editor.h:973
static bool CallbackAddQuadArt(const char *pFilepath, int StorageType, void *pUser)
Definition quadart.cpp:199
bool m_GuiActive
Definition editor.h:869
void DoPointDrag(CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset)
Definition editor.cpp:1229
int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition editor_props.cpp:11
void AddSoundLayer()
Definition quick_actions.cpp:57
unsigned char m_TeleCheckpointNumber
Definition editor.h:1223
void DeleteSelectedQuads()
Definition editor.cpp:219
int m_PopupEventActivated
Definition editor.h:835
bool m_LargeLayerWasWarned
Definition editor.h:837
void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue=100.0f, float MaxValue=400.0f)
Definition editor.cpp:6572
std::pair< int, int > m_SelectedTangentOutPoint
Definition editor.h:935
class ITextRender * TextRender() const
Definition editor.h:158
void HandleCursorMovement()
Definition editor.cpp:7564
void OnRender() override
Definition editor.cpp:7822
static bool CallbackCustomEntities(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:582
@ POPEVENT_REMOVE_USED_IMAGE
Definition editor.h:828
@ POPEVENT_IMAGE_MAX
Definition editor.h:821
@ POPEVENT_LOAD
Definition editor.h:814
@ POPEVENT_LARGELAYER
Definition editor.h:818
@ POPEVENT_TILEART_MANY_COLORS
Definition editor.h:825
@ POPEVENT_RESTART_SERVER
Definition editor.h:830
@ POPEVENT_EXIT
Definition editor.h:813
@ POPEVENT_SOUND_MAX
Definition editor.h:822
@ POPEVENT_RESTARTING_SERVER
Definition editor.h:831
@ POPEVENT_LOADCURRENT
Definition editor.h:815
@ POPEVENT_TILEART_BIG_IMAGE
Definition editor.h:824
@ POPEVENT_QUADART_BIG_IMAGE
Definition editor.h:827
@ POPEVENT_REMOVE_USED_SOUND
Definition editor.h:829
@ POPEVENT_NEW
Definition editor.h:817
@ POPEVENT_PREVENTUNUSEDTILES
Definition editor.h:819
@ POPEVENT_PLACE_BORDER_TILES
Definition editor.h:823
@ POPEVENT_LOADDROP
Definition editor.h:816
@ POPEVENT_TILEART_TOO_MANY_COLORS
Definition editor.h:826
@ POPEVENT_IMAGEDIV16
Definition editor.h:820
std::map< int, CPoint[5]> m_QuadDragOriginalPoints
Definition editor.h:1244
void ToggleSelectQuadPoint(int QuadIndex, int Index)
Definition editor.cpp:199
static bool CallbackAppendMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:471
void SelectLayer(int LayerIndex, int GroupIndex=-1)
Definition editor.cpp:150
void LayerSelectImage()
Definition quick_actions.cpp:161
void DoToolbarLayers(CUIRect Toolbar)
Definition editor.cpp:700
int m_SelectedQuadPoints
Definition editor.h:928
CUi::SColorPickerPopupContext m_ColorPickerPopupContext
Definition editor.h:796
void ResetZoomEnvelope(const std::shared_ptr< CEnvelope > &pEnvelope, int ActiveChannels)
Definition editor.cpp:4789
bool m_Animate
Definition editor.h:889
static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2962
class IConfigManager * ConfigManager() const
Definition editor.h:153
void ShowFileDialogError(const char *pFormat,...)
Definition editor.cpp:4564
void EnvelopeEval(int TimeOffsetMillis, int EnvelopeIndex, ColorRGBA &Result, size_t Channels) override
Definition editor.cpp:81
void SelectGameLayer()
Definition editor.cpp:4318
int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags=BUTTONFLAG_LEFT, const char *pToolTip=nullptr)
Definition editor_ui.cpp:132
int PopupSelectAutoMapReferenceResult()
Definition popups.cpp:2536
static bool CallbackSaveMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:486
static bool CallbackSaveCopyMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:524
void PopupSelectGametileOpInvoke(float x, float y)
Definition popups.cpp:2410
EAxis
Definition editor.h:1097
@ AXIS_Y
Definition editor.h:1100
@ AXIS_NONE
Definition editor.h:1098
@ AXIS_X
Definition editor.h:1099
bool IsEnvelopeUsed(int EnvelopeIndex) const
Definition editor.cpp:4700
bool IsTangentSelected() const
Definition editor.cpp:366
static CUi::EPopupMenuFunctionResult PopupEnvPointMulti(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1574
bool IsTangentInSelected() const
Definition editor.cpp:356
static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:3024
bool IsTangentOutSelected() const
Definition editor.cpp:361
CPointPopupContext m_PointPopupContext
Definition editor.h:1033
static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2822
static CUi::EPopupMenuFunctionResult PopupEnvPointCurveType(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1591
CQuadPopupContext m_QuadPopupContext
Definition editor.h:1023
const CMapView * MapView() const
Definition editor.h:166
bool Append(const char *pFilename, int StorageType, bool IgnoreHistory=false)
Definition editor.cpp:7963
void TileartCheckColors()
Definition tileart.cpp:173
void PopupSelectConfigAutoMapInvoke(int Current, float x, float y)
Definition popups.cpp:2467
float m_LastAutosaveUpdateTime
Definition editor.h:727
const std::vector< CHoverTile > & HoverTiles() const
Definition editor.h:695
CFontTyper m_FontTyper
Definition editor.h:126
std::shared_ptr< CLayer > GetSelectedLayer(int Index) const
Definition editor.cpp:100
float TriangleArea(vec2 A, vec2 B, vec2 C)
Definition editor.cpp:2211
static constexpr ColorRGBA ms_DefaultPropColor
Definition editor.h:148
static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2679
unsigned char m_TeleNumber
Definition editor.h:1222
bool IsAllowPlaceUnusedTiles() const
Definition editor.cpp:3396
void AddTeleLayer()
Definition quick_actions.cpp:131
IGraphics::CTextureHandle m_aCursorTextures[ECursorType::NUM_CURSORS]
Definition editor.h:952
bool IsEnvPointSelected(int Index, int Channel) const
Definition editor.cpp:310
bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate)
Definition editor.cpp:4096
int m_SelectedEnvelope
Definition editor.h:929
std::shared_ptr< CLayer > GetSelectedLayerType(int Index, int Type) const
Definition editor.cpp:116
std::shared_ptr< CLayerGroup > m_pBrush
Definition editor.h:957
unsigned char m_SwitchNumber
Definition editor.h:1233
void HandleAutosave()
Definition editor.cpp:7699
void UpdateColorPipette()
Definition editor.cpp:7101
static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:4144
void DoToolbarSounds(CUIRect Toolbar)
Definition editor.cpp:1072
bool IsTangentInPointSelected(int Index, int Channel) const
Definition editor.cpp:351
void DoToolbarImages(CUIRect Toolbar)
Definition editor.cpp:1058
void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const
Definition editor_ui.cpp:324
EShowTile
Definition editor.h:881
@ SHOW_TILE_DECIMAL
Definition editor.h:883
@ SHOW_TILE_OFF
Definition editor.h:882
@ SHOW_TILE_HEXADECIMAL
Definition editor.h:884
void AddFrontLayer()
Definition quick_actions.cpp:98
CSmoothValue m_ZoomEnvelopeY
Definition editor.h:861
void AddTileart(bool IgnoreHistory=false)
Definition tileart.cpp:141
int m_Mode
Definition editor.h:800
CSoundSource * GetSelectedSource() const
Definition editor.cpp:140
ColorRGBA m_PipetteColor
Definition editor.h:940
static CUi::EPopupMenuFunctionResult PopupEnvPoint(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1404
class IEngine * m_pEngine
Definition editor.h:113
EShowTile m_ShowTileInfo
Definition editor.h:886
char m_MapEditorId
Definition editor.h:878
IGraphics::CTextureHandle m_CheckerTexture
Definition editor.h:943
std::pair< CFixedTime, int > EnvGetSelectedTimeAndValue() const
Definition editor.cpp:371
CLineInputBuffered< 256 > m_SettingsCommandInput
Definition editor.h:967
void DoQuadKnife(int QuadIndex)
Definition editor.cpp:2237
static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char(&aOutput)[128], std::vector< STextColorSplit > &vColorSplits)
Definition editor_server_settings.cpp:1019
bool HandleMapDrop(const char *pFilename, int StorageType) override
Definition editor.cpp:7925
void RenderModebar(CUIRect View)
Definition editor.cpp:4589
ECursorType m_CursorType
Definition editor.h:953
IGraphics::CTextureHandle m_SpeedupTexture
Definition editor.h:134
void AddQuadsLayer()
Definition quick_actions.cpp:77
int DoEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CLineInput *pLineInput, const CUIRect *pEditBoxRect, int x, float MaxHeight, bool AutoWidth, const std::vector< T > &vData, const FDropdownRenderCallback< T > &pfnMatchCallback)
Definition editor_server_settings.cpp:402
static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2999
float EnvelopeToScreenX(const CUIRect &View, float x) const
Definition editor.cpp:4848
void SelectTangentOutPoint(int Index, int Channel)
Definition editor.cpp:334
void AddSpeedupLayer()
Definition quick_actions.cpp:120
bool m_ShowEnvelopePreview
Definition editor.h:907
void ApplyAxisAlignment(ivec2 &Offset) const
Definition editor.cpp:1668
char m_aTooltip[256]
Definition editor.h:802
int DoButton_Ex(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize=EditorFontSizes::MENU, int Align=TEXTALIGN_MC)
Definition editor_ui.cpp:104
class IInput * Input() const
Definition editor.h:151
bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr, const std::vector< STextColorSplit > &vColorSplits={})
Definition editor_ui.cpp:174
CMapSettingsBackend m_MapSettingsBackend
Definition editor.h:968
char m_aFilenamePendingLoad[IO_MAX_PATH_LENGTH]
Definition editor.h:809
void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast)
Definition editor_server_settings.cpp:56
static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:863
const void * m_pColorPickerPopupActiveId
Definition editor.h:797
class IStorage * Storage() const
Definition editor.h:159
std::vector< std::pair< int, int > > m_vSelectedEnvelopePoints
Definition editor.h:930
void AdjustBrushSpecialTiles(bool UseNextFree, int Adjust=0)
Definition editor.cpp:8125
vec2 m_MouseWorldPos
Definition editor.h:873
static CUi::EPopupMenuFunctionResult PopupEnvelopeCurvetype(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:3081
float m_OffsetEnvelopeY
Definition editor.h:866
class IGraphics * m_pGraphics
Definition editor.h:114
int PopupSelectConfigAutoMapResult()
Definition popups.cpp:2478
class IClient * m_pClient
Definition editor.h:110
void FreeDynamicPopupMenus()
Definition editor.cpp:7085
static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1696
static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1322
static CUi::EPopupMenuFunctionResult PopupQuadArt(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:3122
void DrawAABB(const SAxisAlignedBoundingBox &AABB, ivec2 Offset) const
Definition editor.cpp:1583
void RenderTooltip(CUIRect TooltipRect)
Definition editor.cpp:4683
std::vector< std::reference_wrapper< CEditorComponent > > m_vComponents
Definition editor.h:121
void ToggleSelectQuad(int Index)
Definition editor.cpp:174
void SelectTangentInPoint(int Index, int Channel)
Definition editor.cpp:345
std::vector< std::string > m_vSelectEntitiesFiles
Definition editor.h:856
static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2322
void RenderEnvelopeEditorColorBar(CUIRect ColorBar, const std::shared_ptr< CEnvelope > &pEnvelope)
Definition editor.cpp:6323
static bool CallbackSaveImage(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:542
EEnvelopePreview
Definition editor.h:909
@ ALL
Definition editor.h:912
@ NONE
Definition editor.h:910
@ SELECTED
Definition editor.h:911
IGraphics::CTextureHandle m_SwitchTexture
Definition editor.h:135
EExtraEditor m_ActiveExtraEditor
Definition editor.h:903
EPreviewState
Definition editor.h:141
@ PREVIEW_UNLOADED
Definition editor.h:142
@ PREVIEW_ERROR
Definition editor.h:144
@ PREVIEW_LOADED
Definition editor.h:143
static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:486
bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr, const std::vector< STextColorSplit > &vColorSplits={})
Definition editor_ui.cpp:180
static bool AddSound(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:4202
void MapDetails()
Definition quick_actions.cpp:175
int GetTextureUsageFlag() const
Definition editor.cpp:7448
void SelectQuad(int Index)
Definition editor.cpp:168
int m_PopupEnvelopeSelectedPoint
Definition editor.h:1055
std::vector< int > m_vSelectedQuads
Definition editor.h:926
int FindEnvPointIndex(int Index, int Channel) const
Definition editor.cpp:268
void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect)
Definition editor.cpp:4657
int m_CurrentQuadIndex
Definition editor.h:932
const CEditorMap * Map() const
Definition editor.h:164
float ScreenToEnvelopeX(const CUIRect &View, float x) const
Definition editor.cpp:4843
void OnIngameMoved() override
Definition editor.h:707
void QuadSelectionAABB(const std::shared_ptr< CLayerQuads > &pLayer, SAxisAlignedBoundingBox &OutAABB)
Definition editor.cpp:1607
void Reset(bool CreateDefault=true)
Definition editor.cpp:7414
int m_Dialog
Definition editor.h:801
class IClient * Client() const
Definition editor.h:152
void UpdateMentions() override
Definition editor.h:705
void OnActivate() override
Definition editor.cpp:7867
void UpdateHotSoundSource(const CLayerSounds *pLayer)
Definition editor.cpp:1197
void AddSelectedLayer(int LayerIndex)
Definition editor.cpp:161
static bool IsVanillaImage(const char *pImage)
Definition editor.cpp:76
void RemoveUnusedEnvelopes()
Definition editor.cpp:4739
void OnWindowResize() override
Definition editor.cpp:7873
float m_AnimateTime
Definition editor.h:891
bool m_ColorPipetteActive
Definition editor.h:941
bool m_UpdateEnvPointInfo
Definition editor.h:936
bool m_ResetZoomEnvelope
Definition editor.h:863
void RenderSavingIndicator(CUIRect View)
Definition editor.cpp:7067
int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition editor_ui.cpp:71
CRenderMap * RenderMap()
Definition editor.h:161
class ISound * Sound() const
Definition editor.h:157
std::shared_ptr< CLayerGroup > m_apSavedBrushes[10]
Definition editor.h:147
class ISound * m_pSound
Definition editor.h:116
void RemoveTimeOffsetEnvelope(const std::shared_ptr< CEnvelope > &pEnvelope)
Definition editor.cpp:4873
const void * m_pContainerPanned
Definition editor.h:876
EDragSide
Definition editor.h:1182
@ SIDE_RIGHT
Definition editor.h:1186
@ SIDE_TOP
Definition editor.h:1185
@ SIDE_BOTTOM
Definition editor.h:1183
@ SIDE_LEFT
Definition editor.h:1184
float ScreenToEnvelopeY(const CUIRect &View, float y) const
Definition editor.cpp:4853
static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2018
void DoQuad(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int Index)
Definition editor.cpp:1690
static bool AddImage(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:4149
bool IsQuadPointSelected(int QuadIndex, int Index) const
Definition editor.cpp:255
void RenderSwitchEntities(const std::shared_ptr< CLayerTiles > &pTiles)
Definition editor.cpp:7354
bool m_AnimateUpdatePopup
Definition editor.h:893
unsigned char m_TuningNumber
Definition editor.h:1226
int64_t m_AnimateStart
Definition editor.h:890
static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1943
void MouseAxisLock(vec2 &CursorRel)
Definition editor.cpp:7659
class ITextRender * m_pTextRender
Definition editor.h:115
int FindSelectedQuadIndex(int Index) const
Definition editor.cpp:260
int DoButton_FontIcon(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize=10.0f)
Definition editor_ui.cpp:119
void DoQuadEnvPoint(const CQuad *pQuad, CEnvelope *pEnvelope, int QuadIndex, int PointIndex)
Definition editor.cpp:2625
void AddTuneLayer()
Definition quick_actions.cpp:109
enum CEditor::EAxisLock m_MouseAxisLockState
void OnMouseMove(vec2 MousePos)
Definition editor.cpp:7611
bool CanFillGameTiles() const
Definition quick_actions.cpp:16
bool IsQuadCornerSelected(int Index) const
Definition editor.cpp:250
CRenderMap m_RenderMap
Definition editor.h:118
IGraphics::CTextureHandle GetSwitchTexture()
Definition editor.cpp:7474
static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:236
void ToggleEnvPoint(int Index, int Channel)
Definition editor.cpp:295
CEditorMap * Map()
Definition editor.h:163
void ComputeAABBAlignments(const std::shared_ptr< CLayerQuads > &pLayer, const SAxisAlignedBoundingBox &AABB, ivec2 Offset, std::vector< SAlignmentInfo > &vAlignments) const
Definition editor.cpp:1449
std::shared_ptr< CLayerGroup > GetSelectedGroup() const
Definition editor.cpp:93
void SelectEnvPoint(int Index)
Definition editor.cpp:281
float EnvelopeToScreenY(const CUIRect &View, float y) const
Definition editor.cpp:4858
static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2548
std::string m_SelectEntitiesImage
Definition editor.h:857
class IConfigManager * m_pConfigManager
Definition editor.h:111
CImageInfo m_QuadArtImageInfo
Definition editor.h:976
class CConfig * Config() const
Definition editor.h:154
bool m_BrushDrawDestructive
Definition editor.h:849
class IInput * m_pInput
Definition editor.h:109
void DrawPointAlignments(const std::vector< SAlignmentInfo > &vAlignments, ivec2 Offset) const
Definition editor.cpp:1559
bool m_PreviewZoom
Definition editor.h:871
float m_OffsetEnvelopeX
Definition editor.h:865
void PopupSelectAutoMapReferenceInvoke(int Current, float x, float y)
Definition popups.cpp:2526
void ApplyAlignments(const std::vector< SAlignmentInfo > &vAlignments, ivec2 &Offset)
Definition editor.cpp:1641
void RenderMapSettingsErrorDialog()
Definition editor_server_settings.cpp:547
void AddSwitchLayer()
Definition quick_actions.cpp:87
ColorRGBA GetButtonColor(const void *pId, int Checked)
Definition editor_ui.cpp:16
class IEngine * Engine() const
Definition editor.h:155
int PopupSelectImageResult()
Definition popups.cpp:2309
void UpdateZoomEnvelopeX(const CUIRect &View)
Definition editor.cpp:4769
CMapView * MapView()
Definition editor.h:165
ECursorType
Definition editor.h:946
@ NUM_CURSORS
Definition editor.h:950
@ CURSOR_NORMAL
Definition editor.h:947
@ CURSOR_RESIZE_V
Definition editor.h:948
@ CURSOR_RESIZE_H
Definition editor.h:949
std::pair< int, int > m_SelectedTangentInPoint
Definition editor.h:934
void HandleWriterFinishJobs()
Definition editor.cpp:7735
void Render()
Definition editor.cpp:6715
void ResetIngameMoved() override
Definition editor.h:708
CQuadArtParameters m_QuadArtParameters
Definition editor.h:977
int m_SelectedGroup
Definition editor.h:927
class CConfig * m_pConfig
Definition editor.h:112
void DeselectQuadPoints()
Definition editor.cpp:188
int m_SelectedQuadEnvelope
Definition editor.h:931
CMapView m_MapView
Definition editor.h:122
IGraphics::CTextureHandle m_EntitiesTexture
Definition editor.h:130
void PlaceBorderTiles()
Definition editor.cpp:7541
static CUi::EPopupMenuFunctionResult PopupSelectAutoMapReference(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2491
bool Load(const char *pFilename, int StorageType) override
Definition editor.cpp:7941
void UpdateZoomEnvelopeY(const CUIRect &View)
Definition editor.cpp:4782
short m_SpeedupAngle
Definition editor.h:1231
unsigned char m_ViewTeleNumber
Definition editor.h:1224
void AddQuadOrSound()
Definition quick_actions.cpp:24
static bool CallbackSaveSound(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:562
EExtraEditor
Definition editor.h:896
@ EXTRAEDITOR_ENVELOPES
Definition editor.h:898
@ EXTRAEDITOR_NONE
Definition editor.h:897
@ NUM_EXTRAEDITORS
Definition editor.h:901
@ EXTRAEDITOR_SERVER_SETTINGS
Definition editor.h:899
@ EXTRAEDITOR_HISTORY
Definition editor.h:900
std::shared_ptr< CLayerQuads > m_pQuadsetPicker
Definition editor.h:959
ColorRGBA m_aSavedColors[8]
Definition editor.h:939
void RenderImagesList(CUIRect Toolbox)
Definition editor.cpp:4333
void PopupSelectSoundInvoke(int Current, float x, float y)
Definition popups.cpp:2356
int m_PopupEventType
Definition editor.h:834
void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip)
Definition editor_ui.cpp:8
void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId)
Definition editor.cpp:613
EQuadEnvelopePointOperation m_QuadEnvelopePointOperation
Definition editor.h:921
static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2392
EUnusedEntities m_AllowPlaceUnusedTiles
Definition editor.h:846
SEditResult< int > UiDoValueSelector(void *pId, CUIRect *pRect, const char *pLabel, int Current, int Min, int Max, int Step, float Scale, const char *pToolTip, bool IsDegree=false, bool IsHex=false, int Corners=IGraphics::CORNER_ALL, const ColorRGBA *pColor=nullptr, bool ShowValue=true)
Definition editor_ui.cpp:186
unsigned char m_ViewTuning
Definition editor.h:1227
int m_PopupEventWasActivated
Definition editor.h:836
float ScreenToEnvelopeDY(const CUIRect &View, float DeltaY)
Definition editor.cpp:4868
static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:154
void RenderLayers(CUIRect LayersBox)
Definition editor.cpp:3402
CEditor()
Definition editor.h:193
void ZoomAdaptOffsetX(float ZoomFactor, const CUIRect &View)
Definition editor.cpp:4763
bool IsTangentOutPointSelected(int Index, int Channel) const
Definition editor.cpp:340
std::map< const char *, CUi::SMessagePopupContext *, CStringKeyComparator > m_PopupMessageContexts
Definition editor.h:738
class IGraphics * Graphics() const
Definition editor.h:156
void AddTileLayer()
Definition quick_actions.cpp:67
bool m_ShowDetail
Definition editor.h:887
void DoQuadEnvelopes(const CLayerQuads *pLayerQuads)
Definition editor.cpp:2466
int m_Mentions
Definition editor.h:851
void OnDialogClose()
Definition editor.cpp:7888
EAxis GetDragAxis(ivec2 Offset) const
Definition editor.cpp:1234
CImageInfo m_TileartImageInfo
Definition editor.h:971
static bool CallbackAddTileart(const char *pFilepath, int StorageType, void *pUser)
Definition tileart.cpp:192
CSmoothValue m_ZoomEnvelopeX
Definition editor.h:860
void FillGameTiles(EGameTileOp FillTile) const
Definition quick_actions.cpp:9
static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1836
void RenderSounds(CUIRect Toolbox)
Definition editor.cpp:4469
EQuadEnvelopePointOperation
Definition editor.h:916
@ ROTATE
Definition editor.h:919
@ NONE
Definition editor.h:917
@ MOVE
Definition editor.h:918
bool IsQuadSelected(int Index) const
Definition editor.cpp:245
float m_aExtraEditorSplits[NUM_EXTRAEDITORS]
Definition editor.h:904
vec2 m_MouseAxisInitialPos
Definition editor.h:713
std::deque< std::shared_ptr< CDataFileWriterFinishJob > > m_WriterFinishJobs
Definition editor.h:963
CFileBrowser m_FileBrowser
Definition editor.h:124
bool ReplaceSound(const char *pFilename, int StorageType, bool CheckDuplicate)
Definition editor.cpp:4256
bool IsInTriangle(vec2 Point, vec2 A, vec2 B, vec2 C)
Definition editor.cpp:2216
std::vector< int > m_vSelectedLayers
Definition editor.h:925
CLayerSelector * LayerSelector()
Definition editor.h:167
void LoadCurrentMap()
Definition editor.cpp:7894
void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index)
Definition editor.cpp:1104
void RenderEditorHistory(CUIRect View)
Definition editor.cpp:6421
void SelectPreviousLayer()
Definition editor.cpp:428
int PopupSelectSoundResult()
Definition popups.cpp:2364
SEditResult< E > DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition editor_props.cpp:18
unsigned char m_SwitchDelay
Definition editor.h:1234
void ComputePointAlignments(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset, std::vector< SAlignmentInfo > &vAlignments, bool Append=false) const
Definition editor.cpp:1267
void DeselectEnvPoints()
Definition editor.cpp:327
bool m_PreventUnusedTilesWasWarned
Definition editor.h:838
void SelectQuadPoint(int QuadIndex, int Index)
Definition editor.cpp:193
CUi m_UI
Definition editor.h:119
IGraphics::CTextureHandle m_TeleTexture
Definition editor.h:133
void RenderSelectedImage(CUIRect View) const
Definition editor.cpp:4445
float m_MouseWorldScale
Definition editor.h:872
static CUi::EPopupMenuFunctionResult PopupSelectConfigAutoMap(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2430
void ResetMentions() override
Definition editor.h:706
void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const
Definition editor.cpp:1245
Definition envelope.h:11
Definition file_browser.h:17
Definition font_typer.h:19
Definition layer_quads.h:7
Definition layer_selector.h:7
Definition layer_sounds.h:7
Definition map_view.h:14
Definition prompt.h:12
Definition editor.h:77
int m_Max
Definition editor.h:89
int m_Value
Definition editor.h:86
int m_Type
Definition editor.h:87
CProperty(std::nullptr_t)
Definition editor.h:82
CProperty(const char *pName, int Value, int Type, int Min, int Max)
Definition editor.h:79
const char * m_pName
Definition editor.h:85
int m_Min
Definition editor.h:88
Definition mapitems.h:337
Definition render_map.h:56
Definition mapitems.h:588
Definition mapitems.h:351
Definition ui_rect.h:12
Definition ui.h:304
EPopupMenuFunctionResult
Definition ui.h:310
Definition color.h:145
Definition color.h:182
Definition client.h:39
Definition config.h:9
Definition editor.h:8
Definition engine.h:15
Definition render_interfaces.h:23
Definition graphics.h:206
void Invalidate()
Definition graphics.h:219
Definition graphics.h:189
@ CORNER_ALL
Definition graphics.h:473
Definition input.h:18
Definition sound.h:12
Definition storage.h:21
Definition textrender.h:291
constexpr T color_cast(const F &)=delete
#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description)
Definition editor.h:189
@ PROPTYPE_NULL
Definition editor.h:94
@ PROPTYPE_AUTOMAPPER_REFERENCE
Definition editor.h:104
@ PROPTYPE_BOOL
Definition editor.h:95
@ PROPTYPE_SHIFT
Definition editor.h:101
@ PROPTYPE_COLOR
Definition editor.h:98
@ PROPTYPE_ENVELOPE
Definition editor.h:100
@ PROPTYPE_AUTOMAPPER
Definition editor.h:103
@ PROPTYPE_ANGLE_SCROLL
Definition editor.h:97
@ PROPTYPE_IMAGE
Definition editor.h:99
@ PROPTYPE_SOUND
Definition editor.h:102
@ PROPTYPE_INT
Definition editor.h:96
@ MODE_SOUNDS
Definition editor.h:58
@ MODE_LAYERS
Definition editor.h:56
@ NUM_MODES
Definition editor.h:60
@ MODE_IMAGES
Definition editor.h:57
@ DIALOG_NONE
Definition editor.h:65
@ DIALOG_QUICK_PROMPT
Definition editor.h:68
@ DIALOG_FILE
Definition editor.h:66
@ DIALOG_MAPSETTINGS_ERROR
Definition editor.h:67
@ DIALOG_PSEUDO_FONT_TYPER
Definition editor.h:73
std::function< void(const T &, char(&aOutput)[128], std::vector< STextColorSplit > &)> FDropdownRenderCallback
Definition editor.h:51
EGameTileOp
Definition enums.h:20
ivec2 CPoint
Definition mapitems.h:255
static constexpr float MENU
Definition editor_ui.h:26
Definition editor.h:1131
int m_Diff
Definition editor.h:1142
CPoint m_AlignedPoint
Definition editor.h:1132
int m_X
Definition editor.h:1137
int m_Y
Definition editor.h:1138
int m_PointIndex
Definition editor.h:1141
EAxis m_Axis
Definition editor.h:1140
Definition editor.h:1103
@ NUM_POINTS
Definition editor.h:1111
@ POINT_CENTER
Definition editor.h:1110
@ POINT_TR
Definition editor.h:1107
@ POINT_TL
Definition editor.h:1106
@ POINT_BL
Definition editor.h:1108
@ POINT_BR
Definition editor.h:1109
CPoint m_aPoints[NUM_POINTS]
Definition editor.h:1113
Definition editor.h:1009
std::vector< int > m_vLayerIndices
Definition editor.h:1012
std::vector< std::shared_ptr< CLayerTiles > > m_vpLayers
Definition editor.h:1011
CLayerTiles::SCommonPropState m_CommonPropState
Definition editor.h:1013
CEditor * m_pEditor
Definition editor.h:1010
Definition ui.h:32
#define B(i, j)
@ TEXTALIGN_MC
Definition textrender.h:35
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:49
@ BUTTONFLAG_LEFT
Definition ui.h:232
vector2_base< int > ivec2
Definition vmath.h:163
vector2_base< float > vec2
Definition vmath.h:161