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 <base/bezier.h>
7#include <base/system.h>
8
9#include <game/client/ui.h>
11#include <game/mapitems.h>
12
13#include <game/editor/enums.h>
28
30
31#include <engine/console.h>
32#include <engine/editor.h>
33#include <engine/engine.h>
34#include <engine/graphics.h>
36#include <engine/shared/jobs.h>
37
38#include "editor_history.h"
40#include "editor_trackers.h"
41#include "editor_ui.h"
42#include "font_typer.h"
43#include "layer_selector.h"
44#include "map_view.h"
45#include "quadart.h"
46#include "smooth_value.h"
47#include <game/editor/prompt.h>
49
50#include <deque>
51#include <functional>
52#include <map>
53#include <memory>
54#include <string>
55#include <vector>
56
57template<typename T>
58using FDropdownRenderCallback = std::function<void(const T &, char (&aOutput)[128], std::vector<STextColorSplit> &)>;
59
60// CEditor SPECIFIC
61enum
62{
67
72
73 // The font typer component sets m_Dialog
74 // while it is active to make sure no other component
75 // interprets the key presses
77};
78
80{
81public:
82 CProperty(const char *pName, int Value, int Type, int Min, int Max) :
83 m_pName(pName), m_Value(Value), m_Type(Type), m_Min(Min), m_Max(Max) {}
84
85 CProperty(std::nullptr_t) :
86 m_pName(nullptr), m_Value(0), m_Type(0), m_Min(0), m_Max(0) {}
87
88 const char *m_pName;
90 int m_Type;
91 int m_Min;
92 int m_Max;
93};
94
95enum
96{
108};
109
110class CEditor : public IEditor, public IEnvelopeEval
111{
112 class IInput *m_pInput = nullptr;
113 class IClient *m_pClient = nullptr;
115 class CConfig *m_pConfig = nullptr;
116 class IConsole *m_pConsole = nullptr;
117 class IEngine *m_pEngine = nullptr;
118 class IGraphics *m_pGraphics = nullptr;
119 class ITextRender *m_pTextRender = nullptr;
120 class ISound *m_pSound = nullptr;
121 class IStorage *m_pStorage = nullptr;
124
125 std::vector<std::reference_wrapper<CEditorComponent>> m_vComponents;
131
133
135
141
142 int GetTextureUsageFlag() const;
143
150
151 std::shared_ptr<CLayerGroup> m_apSavedBrushes[10];
152 static inline constexpr ColorRGBA ms_DefaultPropColor = ColorRGBA(1, 1, 1, 0.5f);
153
154public:
155 class IInput *Input() const { return m_pInput; }
156 class IClient *Client() const { return m_pClient; }
158 class CConfig *Config() const { return m_pConfig; }
159 class IConsole *Console() const { return m_pConsole; }
160 class IEngine *Engine() const { return m_pEngine; }
161 class IGraphics *Graphics() const { return m_pGraphics; }
162 class ISound *Sound() const { return m_pSound; }
163 class ITextRender *TextRender() const { return m_pTextRender; }
164 class IStorage *Storage() const { return m_pStorage; }
165 CUi *Ui() { return &m_UI; }
167
168 CMapView *MapView() { return &m_MapView; }
169 const CMapView *MapView() const { return &m_MapView; }
171
172 void SelectNextLayer();
173 void SelectPreviousLayer();
174
176 bool CanFillGameTiles() const;
177 void AddQuadOrSound();
178 void AddGroup();
179 void AddSoundLayer();
180 void AddTileLayer();
181 void AddQuadsLayer();
182 void AddSwitchLayer();
183 void AddFrontLayer();
184 void AddTuneLayer();
185 void AddSpeedupLayer();
186 void AddTeleLayer();
187 void DeleteSelectedLayer();
188 void LayerSelectImage();
189 bool IsNonGameTileLayerSelected() const;
190 void MapDetails();
191 void TestMapLocally();
192#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) CQuickAction m_QuickAction##name;
194#undef REGISTER_QUICK_ACTION
195
200 m_ZoomEnvelopeX(1.0f, 0.1f, 600.0f),
201 m_ZoomEnvelopeY(640.0f, 0.1f, 32000.0f),
202 m_Map(this),
204 {
211
213 m_Dialog = 0;
214
215 m_BrushColorEnabled = true;
216
217 m_aFileName[0] = '\0';
218 m_aFileNamePending[0] = '\0';
219 m_ValidSaveFilename = false;
220
221 m_PopupEventActivated = false;
223
225
226 m_SelectEntitiesImage = "DDNet";
227
228 m_ResetZoomEnvelope = true;
229 m_OffsetEnvelopeX = 0.1f;
230 m_OffsetEnvelopeY = 0.5f;
231
232 m_ShowMousePointer = true;
233
234 m_GuiActive = true;
235 m_PreviewZoom = false;
236
238 m_ShowDetail = true;
239 m_Animate = false;
240 m_AnimateStart = 0;
241 m_AnimateTime = 0;
242 m_AnimateSpeed = 1;
243 m_AnimateUpdatePopup = false;
244
247
249 m_UpdateEnvPointInfo = false;
250 m_SelectedTangentInPoint = std::pair(-1, -1);
251 m_SelectedTangentOutPoint = std::pair(-1, -1);
253
254 m_QuadKnifeActive = false;
257
258 for(size_t i = 0; i < std::size(m_aSavedColors); ++i)
259 {
260 m_aSavedColors[i] = color_cast<ColorRGBA>(ColorHSLA(i / (float)std::size(m_aSavedColors), 1.0f, 0.5f));
261 }
262
265 CursorTexture.Invalidate();
266
268
269 // DDRace
270
271 m_TeleNumber = 1;
274
275 m_TuningNum = 1;
276 m_ViewTuning = 0;
277
278 m_SwitchNum = 1;
279 m_SwitchDelay = 0;
280 m_SpeedupForce = 50;
282 m_SpeedupAngle = 0;
283 m_LargeLayerWasWarned = false;
287 }
288
290 {
291 public:
292 CHoverTile(int Group, int Layer, int x, int y, const CTile Tile) :
293 m_Group(Group),
294 m_Layer(Layer),
295 m_X(x),
296 m_Y(y),
297 m_Tile(Tile)
298 {
299 }
300
303 int m_X;
304 int m_Y;
306 };
307 std::vector<CHoverTile> m_vHoverTiles;
308 const std::vector<CHoverTile> &HoverTiles() const { return m_vHoverTiles; }
309
310 void Init() override;
311 void OnUpdate() override;
312 void OnRender() override;
313 void OnActivate() override;
314 void OnWindowResize() override;
315 void OnClose() override;
316 void OnDialogClose();
317 bool HasUnsavedData() const override { return m_Map.m_Modified; }
318 void UpdateMentions() override { m_Mentions++; }
319 void ResetMentions() override { m_Mentions = 0; }
320 void OnIngameMoved() override { m_IngameMoved = true; }
321 void ResetIngameMoved() override { m_IngameMoved = false; }
322
324 void OnMouseMove(vec2 MousePos);
334 void HandleAutosave();
335 bool PerformAutosave();
337
338 // TODO: The name of the ShowFileDialogError function is not accurate anymore, this is used for generic error messages.
339 // Popups in UI should be shared_ptrs to make this even more generic.
341 {
342 bool operator()(const char *pLhs, const char *pRhs) const
343 {
344 return str_comp(pLhs, pRhs) < 0;
345 }
346 };
347 std::map<const char *, CUi::SMessagePopupContext *, SStringKeyComparator> m_PopupMessageContexts;
348 [[gnu::format(printf, 2, 3)]] void ShowFileDialogError(const char *pFormat, ...);
349
350 void Reset(bool CreateDefault = true);
351 bool Save(const char *pFilename) override;
352 bool Load(const char *pFilename, int StorageType) override;
353 bool HandleMapDrop(const char *pFilename, int StorageType) override;
354 bool Append(const char *pFilename, int StorageType, bool IgnoreHistory = false);
355 void LoadCurrentMap();
356 void Render();
357
361 void UpdateColorPipette();
362 void RenderMousePointer();
363 void RenderGameEntities(const std::shared_ptr<CLayerTiles> &pTiles);
364 void RenderSwitchEntities(const std::shared_ptr<CLayerTiles> &pTiles);
365
366 std::vector<CQuad *> GetSelectedQuads();
367 std::shared_ptr<CLayer> GetSelectedLayerType(int Index, int Type) const;
368 std::shared_ptr<CLayer> GetSelectedLayer(int Index) const;
369 std::shared_ptr<CLayerGroup> GetSelectedGroup() const;
371 void SelectLayer(int LayerIndex, int GroupIndex = -1);
373 void SelectQuad(int Index);
374 void ToggleSelectQuad(int Index);
375 void DeselectQuads();
376 void DeselectQuadPoints();
377 void SelectQuadPoint(int QuadIndex, int Index);
379 void DeleteSelectedQuads();
380 bool IsQuadSelected(int Index) const;
381 bool IsQuadCornerSelected(int Index) const;
382 bool IsQuadPointSelected(int QuadIndex, int Index) const;
383 int FindSelectedQuadIndex(int Index) const;
384
385 int FindEnvPointIndex(int Index, int Channel) const;
386 void SelectEnvPoint(int Index);
387 void SelectEnvPoint(int Index, int Channel);
388 void ToggleEnvPoint(int Index, int Channel);
389 bool IsEnvPointSelected(int Index, int Channel) const;
390 bool IsEnvPointSelected(int Index) const;
391 void DeselectEnvPoints();
392 void SelectTangentOutPoint(int Index, int Channel);
393 bool IsTangentOutPointSelected(int Index, int Channel) const;
394 void SelectTangentInPoint(int Index, int Channel);
395 bool IsTangentInPointSelected(int Index, int Channel) const;
396 bool IsTangentInSelected() const;
397 bool IsTangentOutSelected() const;
398 bool IsTangentSelected() const;
399 std::pair<CFixedTime, int> EnvGetSelectedTimeAndValue() const;
400
401 template<typename E>
402 SEditResult<E> DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
403 int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
404
406 const void *m_pColorPickerPopupActiveId = nullptr;
407 void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function<void(ColorRGBA Color)> &SetColor);
408
411 char m_aTooltip[256] = "";
412
414
418
419 enum
420 {
440 };
441
447
449 {
450 ALLOWED_IMPLICIT = -1,
451 NOT_ALLOWED = 0,
453 };
455 bool IsAllowPlaceUnusedTiles() const;
456
458
459 int m_Mentions = 0;
460 bool m_IngameMoved = false;
461
463
464 std::vector<std::string> m_vSelectEntitiesFiles;
466
467 // Zooming
470
472
475
478
480 float m_MouseWorldScale = 1.0f; // Mouse (i.e. UI) scale relative to the World (selected Group)
481 vec2 m_MouseWorldPos = vec2(0.0f, 0.0f);
486 char m_MapEditorId; // UI element ID for the main map editor
487
496
502
512 float m_aExtraEditorSplits[NUM_EXTRAEDITORS] = {250.0f, 250.0f, 250.0f};
513 float m_ToolBoxWidth = 100.0f;
514
523
524 std::vector<int> m_vSelectedLayers;
525 std::vector<int> m_vSelectedQuads;
531 std::vector<std::pair<int, int>> m_vSelectedEnvelopePoints;
537 std::pair<int, int> m_SelectedTangentInPoint;
538 std::pair<int, int> m_SelectedTangentOutPoint;
540
544
545 // Color palette and pipette
547 ColorRGBA m_PipetteColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
549
551
561
563
564 std::shared_ptr<CLayerGroup> m_pBrush;
565 std::shared_ptr<CLayerTiles> m_pTilesetPicker;
566 std::shared_ptr<CLayerQuads> m_pQuadsetPicker;
567
568 const void *m_pUiGotContext = nullptr;
569
571 std::deque<std::shared_ptr<CDataFileWriterFinishJob>> m_WriterFinishJobs;
572
574
575 void EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result, size_t Channels) override;
576
580
582 void AddTileart(bool IgnoreHistory = false);
584 void TileartCheckColors();
585
588 void AddQuadArt(bool IgnoreHistory = false);
589
590 void PlaceBorderTiles();
591
592 void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip);
593 int DoButton_Editor_Common(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
594 int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
595 int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners);
596
597 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);
598 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);
599 int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags = BUTTONFLAG_LEFT, const char *pToolTip = nullptr);
600
601 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);
602
603 bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
604 bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
605
606 void DoMapSettingsEditBox(CMapSettingsBackend::CContext *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr);
607
608 template<typename T>
610 template<typename T>
612
613 void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const;
614
615 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);
616
622 {
624 std::vector<std::shared_ptr<CLayerTiles>> m_vpLayers;
625 std::vector<int> m_vLayerIndices;
627 };
629 static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active);
644 static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active);
647 static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active);
648 static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active);
655
656 static bool CallbackOpenMap(const char *pFileName, int StorageType, void *pUser);
657 static bool CallbackAppendMap(const char *pFileName, int StorageType, void *pUser);
658 static bool CallbackSaveMap(const char *pFileName, int StorageType, void *pUser);
659 static bool CallbackSaveCopyMap(const char *pFileName, int StorageType, void *pUser);
660 static bool CallbackAddTileart(const char *pFilepath, int StorageType, void *pUser);
661 static bool CallbackAddQuadArt(const char *pFilepath, int StorageType, void *pUser);
662 static bool CallbackSaveImage(const char *pFileName, int StorageType, void *pUser);
663 static bool CallbackSaveSound(const char *pFileName, int StorageType, void *pUser);
664 static bool CallbackCustomEntities(const char *pFileName, int StorageType, void *pUser);
665
666 void PopupSelectImageInvoke(int Current, float x, float y);
668
669 void PopupSelectGametileOpInvoke(float x, float y);
671
672 void PopupSelectConfigAutoMapInvoke(int Current, float x, float y);
674
675 void PopupSelectSoundInvoke(int Current, float x, float y);
677
678 void PopupSelectAutoMapReferenceInvoke(int Current, float x, float y);
680
681 void DoQuadEnvelopes(const std::vector<CQuad> &vQuads, IGraphics::CTextureHandle Texture = IGraphics::CTextureHandle());
682 void DoQuadEnvPoint(const CQuad *pQuad, int QIndex, int pIndex);
683 void DoQuadPoint(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int v);
684 void SetHotQuadPoint(const std::shared_ptr<CLayerQuads> &pLayer);
685
686 float TriangleArea(vec2 A, vec2 B, vec2 C);
688 void DoQuadKnife(int QuadIndex);
689
691
692 enum class EAxis
693 {
694 AXIS_NONE = 0,
695 AXIS_X,
696 AXIS_Y
697 };
715 void DoQuad(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int Index);
716 void PreparePointDrag(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex);
717 void DoPointDrag(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY);
718 EAxis GetDragAxis(int OffsetX, int OffsetY) const;
720 void DrawAABB(const SAxisAlignedBoundingBox &AABB, int OffsetX = 0, int OffsetY = 0) const;
721 ColorRGBA GetButtonColor(const void *pId, int Checked);
722
723 // Alignment methods
724 // These methods take `OffsetX` and `OffsetY` because the calculations are made with the original positions
725 // of the quad(s), before we started dragging. This allows us to edit `OffsetX` and `OffsetY` based on the previously
726 // calculated alignments.
728 {
729 CPoint m_AlignedPoint; // The "aligned" point, which we want to align/snap to
730 union
731 {
732 // 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
733 // we aligned the Y values (X axis aligned => Y values are the same, Y axis aligned => X values are the same).
734 int m_X;
735 int m_Y;
736 };
737 EAxis m_Axis; // The axis we are aligning on
738 int m_PointIndex; // The point index we are aligning
739 int m_Diff; // Store the difference
740 };
741 void ComputePointAlignments(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY, std::vector<SAlignmentInfo> &vAlignments, bool Append = false) const;
742 void ComputePointsAlignments(const std::shared_ptr<CLayerQuads> &pLayer, bool Pivot, int OffsetX, int OffsetY, std::vector<SAlignmentInfo> &vAlignments) const;
743 void ComputeAABBAlignments(const std::shared_ptr<CLayerQuads> &pLayer, const SAxisAlignedBoundingBox &AABB, int OffsetX, int OffsetY, std::vector<SAlignmentInfo> &vAlignments) const;
744 void DrawPointAlignments(const std::vector<SAlignmentInfo> &vAlignments, int OffsetX, int OffsetY) const;
745 void QuadSelectionAABB(const std::shared_ptr<CLayerQuads> &pLayer, SAxisAlignedBoundingBox &OutAABB);
746 void ApplyAlignments(const std::vector<SAlignmentInfo> &vAlignments, int &OffsetX, int &OffsetY);
747 void ApplyAxisAlignment(int &OffsetX, int &OffsetY) const;
748
749 bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate);
750 static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser);
751 bool ReplaceSound(const char *pFileName, int StorageType, bool CheckDuplicate);
752 static bool ReplaceSoundCallback(const char *pFileName, int StorageType, void *pUser);
753 static bool AddImage(const char *pFilename, int StorageType, void *pUser);
754 static bool AddSound(const char *pFileName, int StorageType, void *pUser);
755 static bool IsAssetUsed(CFileBrowser::EFileType FileType, int Index, void *pUser);
756
757 bool IsEnvelopeUsed(int EnvelopeIndex) const;
759
760 static bool IsVanillaImage(const char *pImage);
761
769
771 void RenderEnvelopeEditorColorBar(CUIRect ColorBar, const std::shared_ptr<CEnvelope> &pEnvelope);
772
775 static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char (&aOutput)[128], std::vector<STextColorSplit> &vColorSplits);
776
778
779 enum class EDragSide // Which side is the drag bar on
780 {
782 SIDE_LEFT,
783 SIDE_TOP,
785 };
786 void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue = 100.0f, float MaxValue = 400.0f);
787
788 void SetHotEnvelopePoint(const CUIRect &View, const std::shared_ptr<CEnvelope> &pEnvelope, int ActiveChannels);
789
791
792 void SelectGameLayer();
793 std::vector<int> SortImages();
794
795 void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId);
796
797 // Zooming
798 void ZoomAdaptOffsetX(float ZoomFactor, const CUIRect &View);
799 void UpdateZoomEnvelopeX(const CUIRect &View);
800
801 void ZoomAdaptOffsetY(float ZoomFactor, const CUIRect &View);
802 void UpdateZoomEnvelopeY(const CUIRect &View);
803
804 void ResetZoomEnvelope(const std::shared_ptr<CEnvelope> &pEnvelope, int ActiveChannels);
805 void RemoveTimeOffsetEnvelope(const std::shared_ptr<CEnvelope> &pEnvelope);
806 float ScreenToEnvelopeX(const CUIRect &View, float x) const;
807 float EnvelopeToScreenX(const CUIRect &View, float x) const;
808 float ScreenToEnvelopeY(const CUIRect &View, float y) const;
809 float EnvelopeToScreenY(const CUIRect &View, float y) const;
810 float ScreenToEnvelopeDX(const CUIRect &View, float DeltaX);
811 float ScreenToEnvelopeDY(const CUIRect &View, float DeltaY);
812
813 // DDRace
814
820
821 unsigned char m_TeleNumber;
823 unsigned char m_ViewTeleNumber;
824
825 unsigned char m_TuningNum;
826 unsigned char m_ViewTuning;
827
828 unsigned char m_SpeedupForce;
829 unsigned char m_SpeedupMaxSpeed;
831
832 unsigned char m_SwitchNum;
833 unsigned char m_SwitchDelay;
834 unsigned char m_ViewSwitch;
835
836 void AdjustBrushSpecialTiles(bool UseNextFree, int Adjust = 0);
837
838 // Undo/Redo
844
845private:
847
848 std::map<int, CPoint[5]> m_QuadDragOriginalPoints;
849};
850
851// make sure to inline this function
852inline class IGraphics *CLayer::Graphics() { return m_pEditor->Graphics(); }
853inline class ITextRender *CLayer::TextRender() { return m_pEditor->TextRender(); }
854
855#endif
Definition config.h:25
Definition editor_history.h:11
Definition map.h:49
bool m_Modified
Definition map.h:59
Definition editor.h:290
CHoverTile(int Group, int Layer, int x, int y, const CTile Tile)
Definition editor.h:292
int m_Layer
Definition editor.h:302
const CTile m_Tile
Definition editor.h:305
int m_Group
Definition editor.h:301
int m_X
Definition editor.h:303
int m_Y
Definition editor.h:304
Definition editor.h:111
void RenderGameEntities(const std::shared_ptr< CLayerTiles > &pTiles)
Definition editor.cpp:7704
IGraphics::CTextureHandle GetSpeedupTexture()
Definition editor.cpp:7986
unsigned char m_SpeedupForce
Definition editor.h:828
int m_ShiftBy
Definition editor.h:573
static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2206
class IStorage * m_pStorage
Definition editor.h:121
static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:25
CEditorMap m_Map
Definition editor.h:570
CEditorHistory m_EnvelopeEditorHistory
Definition editor.h:841
void OnClose() override
Definition editor.cpp:8428
int m_QuadKnifeCount
Definition editor.h:542
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.cpp:259
void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function< void(ColorRGBA Color)> &SetColor)
Definition editor.cpp:3681
int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners)
Definition editor.cpp:199
int PopupSelectGameTileOpResult()
Definition popups.cpp:2384
static bool IsAssetUsed(CFileBrowser::EFileType FileType, int Index, void *pUser)
Definition editor.cpp:4684
bool m_ShowMousePointer
Definition editor.h:476
int m_ToolbarPreviewSound
Definition editor.h:462
void ZoomAdaptOffsetY(float ZoomFactor, const CUIRect &View)
Definition editor.cpp:5251
void RenderPressedKeys(CUIRect View)
Definition editor.cpp:7545
static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:724
static bool CallbackCustomEntities(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:917
bool IsNonGameTileLayerSelected() const
Definition quick_actions.cpp:143
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:289
void DoMapEditor(CUIRect View)
Definition editor.cpp:3041
CPrompt m_Prompt
Definition editor.h:129
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:462
char m_aFileName[IO_MAX_PATH_LENGTH]
Definition editor.h:415
void TestMapLocally()
Definition quick_actions.cpp:219
bool m_IngameMoved
Definition editor.h:460
EUnusedEntities
Definition editor.h:449
IGraphics::CTextureHandle GetFrontTexture()
Definition editor.cpp:7972
int m_SelectedSource
Definition editor.h:536
EAxisLock
Definition editor.h:328
bool m_BrushColorEnabled
Definition editor.h:413
const void * m_pUiGotContext
Definition editor.h:568
float m_AnimateSpeed
Definition editor.h:500
std::vector< int > SortImages()
Definition editor.cpp:4741
static bool ReplaceSoundCallback(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:4679
bool m_ValidSaveFilename
Definition editor.h:417
bool m_EditorWasUsedBefore
Definition editor.h:132
IGraphics::CTextureHandle GetTuneTexture()
Definition editor.cpp:8000
void RenderEnvelopeEditor(CUIRect View)
Definition editor.cpp:5495
void DeselectQuads()
Definition editor.cpp:521
static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1101
CEditorHistory & ActiveHistory()
Definition editor.cpp:8657
CMapSettingsBackend::CContext m_MapSettingsCommandContext
Definition editor.h:579
bool HasUnsavedData() const override
Definition editor.h:317
std::shared_ptr< CLayerTiles > m_pTilesetPicker
Definition editor.h:565
IGraphics::CTextureHandle m_FrontTexture
Definition editor.h:136
int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition editor.cpp:190
unsigned char m_ViewSwitch
Definition editor.h:834
void DeleteSelectedLayer()
Definition quick_actions.cpp:194
void AddQuadArt(bool IgnoreHistory=false)
Definition quadart.cpp:170
CLayerSelector m_LayerSelector
Definition editor.h:127
void DoQuadPoint(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int v)
Definition editor.cpp:2329
void RenderMousePointer()
Definition editor.cpp:7654
void AddGroup()
Definition quick_actions.cpp:50
vec2 m_MouseDeltaWorld
Definition editor.h:483
void Init() override
Definition editor.cpp:8014
static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2885
bool m_ShowPicker
Definition editor.h:522
std::map< const char *, CUi::SMessagePopupContext *, SStringKeyComparator > m_PopupMessageContexts
Definition editor.h:347
std::vector< CHoverTile > m_vHoverTiles
Definition editor.h:307
void OnUpdate() override
Definition editor.cpp:8334
void PopupSelectImageInvoke(int Current, float x, float y)
Definition popups.cpp:2268
void DoQuadEnvelopes(const std::vector< CQuad > &vQuads, IGraphics::CTextureHandle Texture=IGraphics::CTextureHandle())
Definition editor.cpp:2803
std::vector< CQuad * > GetSelectedQuads()
Definition editor.cpp:462
static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2686
const void * m_pContainerPannedLast
Definition editor.h:485
void SelectNextLayer()
Definition editor.cpp:742
unsigned char m_SpeedupMaxSpeed
Definition editor.h:829
float ScreenToEnvelopeDX(const CUIRect &View, float DeltaX)
Definition editor.cpp:5338
bool Save(const char *pFilename) override
Definition editor.cpp:8462
IGraphics::CTextureHandle m_TuneTexture
Definition editor.h:140
CUi * Ui()
Definition editor.h:165
vec2 m_MouseWorldNoParaPos
Definition editor.h:482
float m_ToolBoxWidth
Definition editor.h:513
void RenderMenubar(CUIRect Menubar)
Definition editor.cpp:7126
IGraphics::CTextureHandle GetEntitiesTexture()
Definition editor.cpp:8007
IGraphics::CTextureHandle GetTeleTexture()
Definition editor.cpp:7979
char m_aTileartFilename[IO_MAX_PATH_LENGTH]
Definition editor.h:583
static bool CallbackAddQuadArt(const char *pFilepath, int StorageType, void *pUser)
Definition quadart.cpp:198
bool m_GuiActive
Definition editor.h:477
int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition editor_props.cpp:11
EAxis GetDragAxis(int OffsetX, int OffsetY) const
Definition editor.cpp:1556
char m_aFileNamePending[IO_MAX_PATH_LENGTH]
Definition editor.h:416
void AddSoundLayer()
Definition quick_actions.cpp:57
unsigned char m_TeleCheckpointNumber
Definition editor.h:822
void DeleteSelectedQuads()
Definition editor.cpp:557
int m_PopupEventActivated
Definition editor.h:443
bool m_LargeLayerWasWarned
Definition editor.h:445
void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue=100.0f, float MaxValue=400.0f)
Definition editor.cpp:7072
std::pair< int, int > m_SelectedTangentOutPoint
Definition editor.h:538
class ITextRender * TextRender() const
Definition editor.h:163
void HandleCursorMovement()
Definition editor.cpp:8085
void OnRender() override
Definition editor.cpp:8376
std::map< int, CPoint[5]> m_QuadDragOriginalPoints
Definition editor.h:848
void ToggleSelectQuadPoint(int QuadIndex, int Index)
Definition editor.cpp:537
void SelectLayer(int LayerIndex, int GroupIndex=-1)
Definition editor.cpp:488
void LayerSelectImage()
Definition quick_actions.cpp:162
static bool CallbackSaveMap(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:825
void DoToolbarLayers(CUIRect Toolbar)
Definition editor.cpp:1035
int m_SelectedQuadPoints
Definition editor.h:529
CUi::SColorPickerPopupContext m_ColorPickerPopupContext
Definition editor.h:405
void ResetZoomEnvelope(const std::shared_ptr< CEnvelope > &pEnvelope, int ActiveChannels)
Definition editor.cpp:5264
bool m_Animate
Definition editor.h:497
static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2929
class IConfigManager * ConfigManager() const
Definition editor.h:157
void ShowFileDialogError(const char *pFormat,...)
Definition editor.cpp:5039
static bool CallbackSaveSound(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:897
void SelectGameLayer()
Definition editor.cpp:4726
int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags=BUTTONFLAG_LEFT, const char *pToolTip=nullptr)
Definition editor.cpp:211
int PopupSelectAutoMapReferenceResult()
Definition popups.cpp:2503
vec2 m_aQuadKnifePoints[4]
Definition editor.h:543
void PopupSelectGametileOpInvoke(float x, float y)
Definition popups.cpp:2377
EAxis
Definition editor.h:693
bool IsEnvelopeUsed(int EnvelopeIndex) const
Definition editor.cpp:5175
bool IsTangentSelected() const
Definition editor.cpp:704
static CUi::EPopupMenuFunctionResult PopupEnvPointMulti(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1539
bool IsTangentInSelected() const
Definition editor.cpp:694
static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2991
bool IsTangentOutSelected() const
Definition editor.cpp:699
static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2789
static CUi::EPopupMenuFunctionResult PopupEnvPointCurveType(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1556
const CMapView * MapView() const
Definition editor.h:169
bool Append(const char *pFilename, int StorageType, bool IgnoreHistory=false)
Definition editor.cpp:8517
void TileartCheckColors()
Definition tileart.cpp:173
void PopupSelectConfigAutoMapInvoke(int Current, float x, float y)
Definition popups.cpp:2434
const std::vector< CHoverTile > & HoverTiles() const
Definition editor.h:308
CFontTyper m_FontTyper
Definition editor.h:130
std::shared_ptr< CLayer > GetSelectedLayer(int Index) const
Definition editor.cpp:438
float TriangleArea(vec2 A, vec2 B, vec2 C)
Definition editor.cpp:2554
static constexpr ColorRGBA ms_DefaultPropColor
Definition editor.h:152
static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2646
bool m_QuadKnifeActive
Definition editor.h:541
unsigned char m_TeleNumber
Definition editor.h:821
bool IsAllowPlaceUnusedTiles() const
Definition editor.cpp:3742
void AddTeleLayer()
Definition quick_actions.cpp:132
IGraphics::CTextureHandle m_aCursorTextures[ECursorType::NUM_CURSORS]
Definition editor.h:559
bool IsEnvPointSelected(int Index, int Channel) const
Definition editor.cpp:648
bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate)
Definition editor.cpp:4442
int m_SelectedEnvelope
Definition editor.h:530
std::shared_ptr< CLayer > GetSelectedLayerType(int Index, int Type) const
Definition editor.cpp:454
std::shared_ptr< CLayerGroup > m_pBrush
Definition editor.h:564
void HandleAutosave()
Definition editor.cpp:8220
void UpdateColorPipette()
Definition editor.cpp:7602
static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:4494
void DoToolbarSounds(CUIRect Toolbar)
Definition editor.cpp:1409
bool IsTangentInPointSelected(int Index, int Channel) const
Definition editor.cpp:689
void DoToolbarImages(CUIRect Toolbar)
Definition editor.cpp:1395
void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const
Definition editor.cpp:281
void DoQuadEnvPoint(const CQuad *pQuad, int QIndex, int pIndex)
Definition editor.cpp:2941
EShowTile
Definition editor.h:489
@ SHOW_TILE_DECIMAL
Definition editor.h:491
@ SHOW_TILE_OFF
Definition editor.h:490
@ SHOW_TILE_HEXADECIMAL
Definition editor.h:492
void AddFrontLayer()
Definition quick_actions.cpp:99
CSmoothValue m_ZoomEnvelopeY
Definition editor.h:469
class IConsole * m_pConsole
Definition editor.h:116
void AddTileart(bool IgnoreHistory=false)
Definition tileart.cpp:141
int m_Mode
Definition editor.h:409
CSoundSource * GetSelectedSource() const
Definition editor.cpp:478
ColorRGBA m_PipetteColor
Definition editor.h:547
static CUi::EPopupMenuFunctionResult PopupEnvPoint(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1371
CEnvelopeEditorOperationTracker m_EnvOpTracker
Definition editor.h:843
class IEngine * m_pEngine
Definition editor.h:117
EShowTile m_ShowTileInfo
Definition editor.h:494
char m_MapEditorId
Definition editor.h:486
IGraphics::CTextureHandle m_CheckerTexture
Definition editor.h:550
std::pair< CFixedTime, int > EnvGetSelectedTimeAndValue() const
Definition editor.cpp:709
CLineInputBuffered< 256 > m_SettingsCommandInput
Definition editor.h:577
void DoQuadKnife(int QuadIndex)
Definition editor.cpp:2580
static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char(&aOutput)[128], std::vector< STextColorSplit > &vColorSplits)
Definition editor_server_settings.cpp:1019
int m_SelectedImage
Definition editor.h:534
bool HandleMapDrop(const char *pFilename, int StorageType) override
Definition editor.cpp:8475
void RenderModebar(CUIRect View)
Definition editor.cpp:5064
EShowEnvelope
Definition editor.h:516
@ SHOWENV_ALL
Definition editor.h:519
@ SHOWENV_NONE
Definition editor.h:517
@ SHOWENV_SELECTED
Definition editor.h:518
static bool CallbackAppendMap(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:809
ECursorType m_CursorType
Definition editor.h:560
IGraphics::CTextureHandle m_SpeedupTexture
Definition editor.h:138
void AddQuadsLayer()
Definition quick_actions.cpp:78
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:401
static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2966
float EnvelopeToScreenX(const CUIRect &View, float x) const
Definition editor.cpp:5323
void SelectTangentOutPoint(int Index, int Channel)
Definition editor.cpp:672
void AddSpeedupLayer()
Definition quick_actions.cpp:121
void ApplyAxisAlignment(int &OffsetX, int &OffsetY) const
Definition editor.cpp:2001
char m_aTooltip[256]
Definition editor.h:411
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.cpp:231
class IInput * Input() const
Definition editor.h:155
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.cpp:103
CMapSettingsBackend m_MapSettingsBackend
Definition editor.h:578
void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast)
Definition editor_server_settings.cpp:55
static bool CallbackOpenMap(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:790
static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:840
const void * m_pColorPickerPopupActiveId
Definition editor.h:406
class IStorage * Storage() const
Definition editor.h:164
std::vector< std::pair< int, int > > m_vSelectedEnvelopePoints
Definition editor.h:531
void AdjustBrushSpecialTiles(bool UseNextFree, int Adjust=0)
Definition editor.cpp:8673
vec2 m_MouseWorldPos
Definition editor.h:481
static CUi::EPopupMenuFunctionResult PopupEnvelopeCurvetype(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:3048
float m_OffsetEnvelopeY
Definition editor.h:474
class IGraphics * m_pGraphics
Definition editor.h:118
int PopupSelectConfigAutoMapResult()
Definition popups.cpp:2445
class IClient * m_pClient
Definition editor.h:113
void FreeDynamicPopupMenus()
Definition editor.cpp:7586
static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1661
static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1292
static CUi::EPopupMenuFunctionResult PopupQuadArt(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:3089
void RenderTooltip(CUIRect TooltipRect)
Definition editor.cpp:5158
std::vector< std::reference_wrapper< CEditorComponent > > m_vComponents
Definition editor.h:125
void ToggleSelectQuad(int Index)
Definition editor.cpp:512
void DoPointDrag(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY)
Definition editor.cpp:1550
void SelectTangentInPoint(int Index, int Channel)
Definition editor.cpp:683
std::vector< std::string > m_vSelectEntitiesFiles
Definition editor.h:464
static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2289
void RenderEnvelopeEditorColorBar(CUIRect ColorBar, const std::shared_ptr< CEnvelope > &pEnvelope)
Definition editor.cpp:6823
IGraphics::CTextureHandle m_SwitchTexture
Definition editor.h:139
EExtraEditor m_ActiveExtraEditor
Definition editor.h:511
void SetHotQuadPoint(const std::shared_ptr< CLayerQuads > &pLayer)
Definition editor.cpp:3633
EPreviewState
Definition editor.h:145
@ PREVIEW_UNLOADED
Definition editor.h:146
@ PREVIEW_ERROR
Definition editor.h:148
@ PREVIEW_LOADED
Definition editor.h:147
static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:461
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.cpp:109
void MapDetails()
Definition quick_actions.cpp:176
int GetTextureUsageFlag() const
Definition editor.cpp:7967
void SelectQuad(int Index)
Definition editor.cpp:506
void DrawAABB(const SAxisAlignedBoundingBox &AABB, int OffsetX=0, int OffsetY=0) const
Definition editor.cpp:1911
int m_PopupEnvelopeSelectedPoint
Definition editor.h:652
std::vector< int > m_vSelectedQuads
Definition editor.h:525
int DoButton_Editor_Common(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition editor.cpp:178
CEditorHistory m_EditorHistory
Definition editor.h:839
int FindEnvPointIndex(int Index, int Channel) const
Definition editor.cpp:606
void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect)
Definition editor.cpp:5132
int m_CurrentQuadIndex
Definition editor.h:533
float ScreenToEnvelopeX(const CUIRect &View, float x) const
Definition editor.cpp:5318
void OnIngameMoved() override
Definition editor.h:320
void QuadSelectionAABB(const std::shared_ptr< CLayerQuads > &pLayer, SAxisAlignedBoundingBox &OutAABB)
Definition editor.cpp:1935
void Reset(bool CreateDefault=true)
Definition editor.cpp:7915
int m_Dialog
Definition editor.h:410
class IClient * Client() const
Definition editor.h:156
void EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result, size_t Channels) override
Definition editor.cpp:87
void UpdateMentions() override
Definition editor.h:318
void OnActivate() override
Definition editor.cpp:8417
void ComputeAABBAlignments(const std::shared_ptr< CLayerQuads > &pLayer, const SAxisAlignedBoundingBox &AABB, int OffsetX, int OffsetY, std::vector< SAlignmentInfo > &vAlignments) const
Definition editor.cpp:1775
void AddSelectedLayer(int LayerIndex)
Definition editor.cpp:499
static bool IsVanillaImage(const char *pImage)
Definition editor.cpp:82
void RemoveUnusedEnvelopes()
Definition editor.cpp:5214
void OnWindowResize() override
Definition editor.cpp:8423
float m_AnimateTime
Definition editor.h:499
bool m_ColorPipetteActive
Definition editor.h:548
bool m_UpdateEnvPointInfo
Definition editor.h:539
bool m_ResetZoomEnvelope
Definition editor.h:471
void RenderSavingIndicator(CUIRect View)
Definition editor.cpp:7568
CRenderMap * RenderMap()
Definition editor.h:166
class ISound * Sound() const
Definition editor.h:162
std::shared_ptr< CLayerGroup > m_apSavedBrushes[10]
Definition editor.h:151
class ISound * m_pSound
Definition editor.h:120
void RemoveTimeOffsetEnvelope(const std::shared_ptr< CEnvelope > &pEnvelope)
Definition editor.cpp:5348
const void * m_pContainerPanned
Definition editor.h:484
EDragSide
Definition editor.h:780
float ScreenToEnvelopeY(const CUIRect &View, float y) const
Definition editor.cpp:5328
static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1983
void DrawPointAlignments(const std::vector< SAlignmentInfo > &vAlignments, int OffsetX, int OffsetY) const
Definition editor.cpp:1887
void DoQuad(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int Index)
Definition editor.cpp:2010
static bool AddImage(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:4499
bool IsQuadPointSelected(int QuadIndex, int Index) const
Definition editor.cpp:593
void RenderSwitchEntities(const std::shared_ptr< CLayerTiles > &pTiles)
Definition editor.cpp:7855
bool m_AnimateUpdatePopup
Definition editor.h:501
static bool CallbackSaveImage(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:877
class IConsole * Console() const
Definition editor.h:159
CQuadEditTracker m_QuadTracker
Definition editor.h:842
int64_t m_AnimateStart
Definition editor.h:498
static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1908
void MouseAxisLock(vec2 &CursorRel)
Definition editor.cpp:8180
class ITextRender * m_pTextRender
Definition editor.h:119
int FindSelectedQuadIndex(int Index) const
Definition editor.cpp:598
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.cpp:246
void ComputePointsAlignments(const std::shared_ptr< CLayerQuads > &pLayer, bool Pivot, int OffsetX, int OffsetY, std::vector< SAlignmentInfo > &vAlignments) const
Definition editor.cpp:1712
void ApplyAlignments(const std::vector< SAlignmentInfo > &vAlignments, int &OffsetX, int &OffsetY)
Definition editor.cpp:1969
void AddTuneLayer()
Definition quick_actions.cpp:110
int m_SelectedQuadPoint
Definition editor.h:526
enum CEditor::EAxisLock m_MouseAxisLockState
void OnMouseMove(vec2 MousePos)
Definition editor.cpp:8132
bool CanFillGameTiles() const
Definition quick_actions.cpp:16
bool IsQuadCornerSelected(int Index) const
Definition editor.cpp:588
CRenderMap m_RenderMap
Definition editor.h:122
void SetHotEnvelopePoint(const CUIRect &View, const std::shared_ptr< CEnvelope > &pEnvelope, int ActiveChannels)
Definition editor.cpp:5441
void PreparePointDrag(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex)
Definition editor.cpp:1545
IGraphics::CTextureHandle GetSwitchTexture()
Definition editor.cpp:7993
static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:237
void ToggleEnvPoint(int Index, int Channel)
Definition editor.cpp:633
int m_SelectedSound
Definition editor.h:535
std::shared_ptr< CLayerGroup > GetSelectedGroup() const
Definition editor.cpp:431
void SelectEnvPoint(int Index)
Definition editor.cpp:619
float EnvelopeToScreenY(const CUIRect &View, float y) const
Definition editor.cpp:5333
static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2515
std::string m_SelectEntitiesImage
Definition editor.h:465
class IConfigManager * m_pConfigManager
Definition editor.h:114
CImageInfo m_QuadArtImageInfo
Definition editor.h:586
class CConfig * Config() const
Definition editor.h:158
bool m_BrushDrawDestructive
Definition editor.h:457
class IInput * m_pInput
Definition editor.h:112
bool m_PreviewZoom
Definition editor.h:479
float m_OffsetEnvelopeX
Definition editor.h:473
void PopupSelectAutoMapReferenceInvoke(int Current, float x, float y)
Definition popups.cpp:2493
void RenderMapSettingsErrorDialog()
Definition editor_server_settings.cpp:546
void AddSwitchLayer()
Definition quick_actions.cpp:88
ColorRGBA GetButtonColor(const void *pId, int Checked)
Definition editor.cpp:115
class IEngine * Engine() const
Definition editor.h:160
int PopupSelectImageResult()
Definition popups.cpp:2276
void UpdateZoomEnvelopeX(const CUIRect &View)
Definition editor.cpp:5244
CMapView * MapView()
Definition editor.h:168
ECursorType
Definition editor.h:553
@ NUM_CURSORS
Definition editor.h:557
@ CURSOR_NORMAL
Definition editor.h:554
@ CURSOR_RESIZE_V
Definition editor.h:555
@ CURSOR_RESIZE_H
Definition editor.h:556
std::pair< int, int > m_SelectedTangentInPoint
Definition editor.h:537
void HandleWriterFinishJobs()
Definition editor.cpp:8288
void Render()
Definition editor.cpp:7215
void ResetIngameMoved() override
Definition editor.h:321
CQuadArtParameters m_QuadArtParameters
Definition editor.h:587
int m_SelectedGroup
Definition editor.h:528
class CConfig * m_pConfig
Definition editor.h:115
void RenderSelectedImage(CUIRect View)
Definition editor.cpp:4926
void DeselectQuadPoints()
Definition editor.cpp:526
int m_SelectedQuadEnvelope
Definition editor.h:532
CMapView m_MapView
Definition editor.h:126
IGraphics::CTextureHandle m_EntitiesTexture
Definition editor.h:134
void PlaceBorderTiles()
Definition editor.cpp:8062
static CUi::EPopupMenuFunctionResult PopupSelectAutoMapReference(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2458
bool Load(const char *pFilename, int StorageType) override
Definition editor.cpp:8490
void UpdateZoomEnvelopeY(const CUIRect &View)
Definition editor.cpp:5257
short m_SpeedupAngle
Definition editor.h:830
bool ReplaceSound(const char *pFileName, int StorageType, bool CheckDuplicate)
Definition editor.cpp:4623
unsigned char m_ViewTeleNumber
Definition editor.h:823
void AddQuadOrSound()
Definition quick_actions.cpp:24
EExtraEditor
Definition editor.h:504
@ EXTRAEDITOR_ENVELOPES
Definition editor.h:506
@ EXTRAEDITOR_NONE
Definition editor.h:505
@ NUM_EXTRAEDITORS
Definition editor.h:509
@ EXTRAEDITOR_SERVER_SETTINGS
Definition editor.h:507
@ EXTRAEDITOR_HISTORY
Definition editor.h:508
std::shared_ptr< CLayerQuads > m_pQuadsetPicker
Definition editor.h:566
ColorRGBA m_aSavedColors[8]
Definition editor.h:546
void RenderImagesList(CUIRect Toolbox)
Definition editor.cpp:4775
void PopupSelectSoundInvoke(int Current, float x, float y)
Definition popups.cpp:2323
static bool AddSound(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:4560
int m_PopupEventType
Definition editor.h:442
unsigned char m_TuningNum
Definition editor.h:825
void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip)
Definition editor.cpp:170
void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId)
Definition editor.cpp:948
static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2359
EUnusedEntities m_AllowPlaceUnusedTiles
Definition editor.h:454
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.cpp:293
unsigned char m_ViewTuning
Definition editor.h:826
int m_PopupEventWasActivated
Definition editor.h:444
float ScreenToEnvelopeDY(const CUIRect &View, float DeltaY)
Definition editor.cpp:5343
static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:155
void RenderLayers(CUIRect LayersBox)
Definition editor.cpp:3748
CEditor()
Definition editor.h:196
void ZoomAdaptOffsetX(float ZoomFactor, const CUIRect &View)
Definition editor.cpp:5238
int m_SelectedQuadIndex
Definition editor.h:527
bool IsTangentOutPointSelected(int Index, int Channel) const
Definition editor.cpp:678
@ POPEVENT_REMOVE_USED_IMAGE
Definition editor.h:436
@ POPEVENT_IMAGE_MAX
Definition editor.h:429
@ POPEVENT_LOAD
Definition editor.h:422
@ POPEVENT_LARGELAYER
Definition editor.h:426
@ POPEVENT_TILEART_MANY_COLORS
Definition editor.h:433
@ POPEVENT_RESTART_SERVER
Definition editor.h:438
@ POPEVENT_EXIT
Definition editor.h:421
@ POPEVENT_SOUND_MAX
Definition editor.h:430
@ POPEVENT_RESTARTING_SERVER
Definition editor.h:439
@ POPEVENT_LOADCURRENT
Definition editor.h:423
@ POPEVENT_TILEART_BIG_IMAGE
Definition editor.h:432
@ POPEVENT_QUADART_BIG_IMAGE
Definition editor.h:435
@ POPEVENT_REMOVE_USED_SOUND
Definition editor.h:437
@ POPEVENT_NEW
Definition editor.h:425
@ POPEVENT_PREVENTUNUSEDTILES
Definition editor.h:427
@ POPEVENT_PLACE_BORDER_TILES
Definition editor.h:431
@ POPEVENT_LOADDROP
Definition editor.h:424
@ POPEVENT_TILEART_TOO_MANY_COLORS
Definition editor.h:434
@ POPEVENT_IMAGEDIV16
Definition editor.h:428
class IGraphics * Graphics() const
Definition editor.h:161
void AddTileLayer()
Definition quick_actions.cpp:67
bool m_ShowDetail
Definition editor.h:495
int m_Mentions
Definition editor.h:459
void OnDialogClose()
Definition editor.cpp:8438
void ComputePointAlignments(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY, std::vector< SAlignmentInfo > &vAlignments, bool Append=false) const
Definition editor.cpp:1589
CImageInfo m_TileartImageInfo
Definition editor.h:581
static bool CallbackAddTileart(const char *pFilepath, int StorageType, void *pUser)
Definition tileart.cpp:192
CSmoothValue m_ZoomEnvelopeX
Definition editor.h:468
void FillGameTiles(EGameTileOp FillTile) const
Definition quick_actions.cpp:9
static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1801
void RenderSounds(CUIRect Toolbox)
Definition editor.cpp:4949
bool IsQuadSelected(int Index) const
Definition editor.cpp:583
float m_aExtraEditorSplits[NUM_EXTRAEDITORS]
Definition editor.h:512
vec2 m_MouseAxisInitialPos
Definition editor.h:326
std::deque< std::shared_ptr< CDataFileWriterFinishJob > > m_WriterFinishJobs
Definition editor.h:571
CFileBrowser m_FileBrowser
Definition editor.h:128
CEditorHistory m_ServerSettingsHistory
Definition editor.h:840
bool IsInTriangle(vec2 Point, vec2 A, vec2 B, vec2 C)
Definition editor.cpp:2559
std::vector< int > m_vSelectedLayers
Definition editor.h:524
CLayerSelector * LayerSelector()
Definition editor.h:170
void LoadCurrentMap()
Definition editor.cpp:8444
void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index)
Definition editor.cpp:1441
void RenderEditorHistory(CUIRect View)
Definition editor.cpp:6921
bool PerformAutosave()
Definition editor.cpp:8252
void SelectPreviousLayer()
Definition editor.cpp:766
int PopupSelectSoundResult()
Definition popups.cpp:2331
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:833
void DeselectEnvPoints()
Definition editor.cpp:665
bool m_PreventUnusedTilesWasWarned
Definition editor.h:446
void SelectQuadPoint(int QuadIndex, int Index)
Definition editor.cpp:531
CUi m_UI
Definition editor.h:123
IGraphics::CTextureHandle m_TeleTexture
Definition editor.h:137
static bool CallbackSaveCopyMap(const char *pFileName, int StorageType, void *pUser)
Definition editor.cpp:859
unsigned char m_SwitchNum
Definition editor.h:832
float m_MouseWorldScale
Definition editor.h:480
static CUi::EPopupMenuFunctionResult PopupSelectConfigAutoMap(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2397
EShowEnvelope m_ShowEnvelopePreview
Definition editor.h:521
void ResetMentions() override
Definition editor.h:319
void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const
Definition editor.cpp:1567
Definition editor_trackers.h:75
Definition file_browser.h:17
EFileType
Definition file_browser.h:20
Definition font_typer.h:14
Definition image.h:12
Definition layer_selector.h:7
class ITextRender * TextRender()
Definition editor.h:853
class CEditor * m_pEditor
Definition layer.h:18
class IGraphics * Graphics()
Definition editor.h:852
Definition lineinput.h:25
Definition editor_server_settings.h:225
Definition editor_server_settings.h:195
Definition map_view.h:14
Definition prompt.h:11
Definition editor.h:80
int m_Max
Definition editor.h:92
int m_Value
Definition editor.h:89
int m_Type
Definition editor.h:90
CProperty(std::nullptr_t)
Definition editor.h:85
CProperty(const char *pName, int Value, int Type, int Min, int Max)
Definition editor.h:82
const char * m_pName
Definition editor.h:88
int m_Min
Definition editor.h:91
Definition quadart.h:12
Definition editor_trackers.h:19
Definition mapitems.h:303
Definition render_map.h:55
Definition smooth_value.h:12
Definition mapitems.h:554
Definition mapitems.h:317
Definition ui_rect.h:11
Definition ui.h:297
EPopupMenuFunctionResult
Definition ui.h:303
Definition color.h:161
Definition color.h:198
Definition client.h:39
Definition config.h:9
Definition console.h:18
Definition editor.h:8
Definition engine.h:15
Definition render_interfaces.h:24
Definition graphics.h:205
void Invalidate()
Definition graphics.h:218
Definition graphics.h:188
@ CORNER_ALL
Definition graphics.h:461
Definition input.h:18
Definition sound.h:12
Definition storage.h:21
Definition textrender.h:280
Definition vmath.h:15
constexpr vector2_base()=default
#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description)
Definition editor.h:192
@ PROPTYPE_NULL
Definition editor.h:97
@ PROPTYPE_AUTOMAPPER_REFERENCE
Definition editor.h:107
@ PROPTYPE_BOOL
Definition editor.h:98
@ PROPTYPE_SHIFT
Definition editor.h:104
@ PROPTYPE_COLOR
Definition editor.h:101
@ PROPTYPE_ENVELOPE
Definition editor.h:103
@ PROPTYPE_AUTOMAPPER
Definition editor.h:106
@ PROPTYPE_ANGLE_SCROLL
Definition editor.h:100
@ PROPTYPE_IMAGE
Definition editor.h:102
@ PROPTYPE_SOUND
Definition editor.h:105
@ PROPTYPE_INT
Definition editor.h:99
std::function< void(const T &, char(&aOutput)[128], std::vector< STextColorSplit > &)> FDropdownRenderCallback
Definition editor.h:58
@ DIALOG_NONE
Definition editor.h:68
@ DIALOG_QUICK_PROMPT
Definition editor.h:71
@ DIALOG_FILE
Definition editor.h:69
@ MODE_SOUNDS
Definition editor.h:65
@ MODE_LAYERS
Definition editor.h:63
@ DIALOG_MAPSETTINGS_ERROR
Definition editor.h:70
@ NUM_MODES
Definition editor.h:66
@ MODE_IMAGES
Definition editor.h:64
@ DIALOG_PSEUDO_FONT_TYPER
Definition editor.h:76
EGameTileOp
Definition enums.h:20
void mem_zero(T *block, size_t size)
Definition system.h:166
int str_comp(const char *a, const char *b)
Definition system.cpp:3324
static constexpr float MENU
Definition editor_ui.h:24
Definition editor.h:728
int m_Diff
Definition editor.h:739
CPoint m_AlignedPoint
Definition editor.h:729
int m_X
Definition editor.h:734
int m_Y
Definition editor.h:735
int m_PointIndex
Definition editor.h:738
EAxis m_Axis
Definition editor.h:737
Definition editor.h:699
@ NUM_POINTS
Definition editor.h:707
@ POINT_CENTER
Definition editor.h:706
@ POINT_TR
Definition editor.h:703
@ POINT_TL
Definition editor.h:702
@ POINT_BL
Definition editor.h:704
@ POINT_BR
Definition editor.h:705
CPoint m_aPoints[NUM_POINTS]
Definition editor.h:709
Definition editor.h:622
std::vector< int > m_vLayerIndices
Definition editor.h:625
std::vector< std::shared_ptr< CLayerTiles > > m_vpLayers
Definition editor.h:624
CLayerTiles::SCommonPropState m_CommonPropState
Definition editor.h:626
CEditor * m_pEditor
Definition editor.h:623
Definition editor.h:341
bool operator()(const char *pLhs, const char *pRhs) const
Definition editor.h:342
Definition layer_tiles.h:147
Definition editor_ui.h:7
Definition ui.h:286
Definition editor_server_settings.h:47
#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:225
vector2_base< float > vec2
Definition vmath.h:161