diff --git a/Blocks3D.vcproj b/Blocks3D.vcproj
index 01d89c1..2b1e136 100644
--- a/Blocks3D.vcproj
+++ b/Blocks3D.vcproj
@@ -359,28 +359,6 @@
-
-
-
-
-
-
-
-
@@ -425,50 +403,6 @@
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -557,50 +491,6 @@
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -623,6 +513,124 @@
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
@@ -812,14 +816,6 @@
RelativePath=".\src\include\DataModelV2\GroupInstance.h"
>
-
-
-
-
@@ -836,18 +832,38 @@
RelativePath=".\src\include\DataModelV2\PVInstance.h"
>
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-#include
-#include
-#include "src/include/resource.h"
-
-
-
-
+// Microsoft Visual C++ generated resource script.
//
-// Bitmap resources
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Neutral resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
+#ifdef _WIN32
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1 ICON "roblox_RN1_icon.ico"
+#endif // Neutral resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (Canada) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC)
+#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
-IDB_BITMAP1 BITMAP "Parts.bmp"
-
-
+#pragma code_page(1252)
+#endif //_WIN32
+/////////////////////////////////////////////////////////////////////////////
//
-// Dialog resources
+// Bitmap
//
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-IDD_DIALOG1 DIALOG 0, 0, 295, 43
-STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFOREGROUND | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
-EXSTYLE WS_EX_WINDOWEDGE
-CAPTION "Insert Object"
-FONT 8, "Ms Shell Dlg"
-{
- EDITTEXT IDE_EDIT, 35, 6, 195, 14, ES_AUTOHSCROLL, WS_EX_LEFT
- LTEXT "Class:", 0, 10, 9, 20, 9, SS_LEFT, WS_EX_LEFT
- PUSHBUTTON "Cancel", IDCANCEL, 237, 24, 50, 14, 0, WS_EX_LEFT
- DEFPUSHBUTTON "OK", IDOK, 237, 6, 50, 14, 0, WS_EX_LEFT
-}
+
+IDB_BITMAP1 BITMAP "Parts.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_DIALOG1 DIALOGEX 0, 0, 304, 46
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,247,7,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,247,24,50,14
+ EDITTEXT IDC_EDIT1,68,7,162,14,ES_AUTOHSCROLL
+ LTEXT "Class:",-1,43,7,20,8
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_DIALOG1, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 297
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 39
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // English (Canada) resources
+/////////////////////////////////////////////////////////////////////////////
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
//
-// Icon resources
+// Generated from the TEXTINCLUDE 3 resource.
//
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-IDI_ICON1 ICON "roblox_RN1_icon.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/resource.h b/resource.h
new file mode 100644
index 0000000..2f38c74
--- /dev/null
+++ b/resource.h
@@ -0,0 +1,2064 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by Dialogs.rc
+//
+#define SW_HIDE 0
+#define HIDE_WINDOW 0
+#define WM_NULL 0x0000
+#define WA_INACTIVE 0
+#define HTNOWHERE 0
+#define SMTO_NORMAL 0x0000
+#define ICON_SMALL 0
+#define SIZE_RESTORED 0
+#define BN_CLICKED 0
+#define BST_UNCHECKED 0x0000
+#define HDS_HORZ 0x0000
+#define TBS_HORZ 0x0000
+#define TBS_BOTTOM 0x0000
+#define TBS_RIGHT 0x0000
+#define LVS_ICON 0x0000
+#define LVS_ALIGNTOP 0x0000
+#define TCS_TABS 0x0000
+#define TCS_SINGLELINE 0x0000
+#define TCS_RIGHTJUSTIFY 0x0000
+#define DTS_SHORTDATEFORMAT 0x0000
+#define PGS_VERT 0x00000000
+#define LANG_NEUTRAL 0x00
+#define SUBLANG_NEUTRAL 0x00
+#define SORT_DEFAULT 0x0
+#define SORT_JAPANESE_XJIS 0x0
+#define SORT_CHINESE_BIG5 0x0
+#define SORT_CHINESE_PRCP 0x0
+#define SORT_KOREAN_KSC 0x0
+#define SORT_HUNGARIAN_DEFAULT 0x0
+#define SORT_GEORGIAN_TRADITIONAL 0x0
+#define PSP_DEFAULT 0x00000000
+#define PSPCB_ADDREF 0
+#define PSH_DEFAULT 0x00000000
+#define PSNRET_NOERROR 0
+#define PSBTN_BACK 0
+#define CDRF_DODEFAULT 0x00000000
+#define ILC_COLOR 0x00000000
+#define ILD_NORMAL 0x00000000
+#define ILS_NORMAL 0x00000000
+#define ILCF_MOVE 0x00000000
+#define HDFT_ISSTRING 0x0000
+#define HDF_LEFT 0x0000
+#define TBSTYLE_BUTTON 0x0000
+#define IDB_STD_SMALL_COLOR 0
+#define STD_CUT 0
+#define VIEW_LARGEICONS 0
+#define HIST_BACK 0
+#define HICF_OTHER 0x00000000
+#define TBDDRET_DEFAULT 0
+#define TTDT_AUTOMATIC 0
+#define TTI_NONE 0
+#define TBTS_TOP 0
+#define TB_LINEUP 0
+#define DL_CURSORSET 0
+#define LVSIL_NORMAL 0
+#define LVNI_ALL 0x0000
+#define LVIR_BOUNDS 0
+#define LVA_DEFAULT 0x0000
+#define LVCFMT_LEFT 0x0000
+#define LVBKIF_SOURCE_NONE 0x00000000
+#define LVBKIF_STYLE_NORMAL 0x00000000
+#define LVCDI_ITEM 0x00000000
+#define TVSIL_NORMAL 0
+#define TVGN_ROOT 0x0000
+#define TVC_UNKNOWN 0x0000
+#define TVNRET_DEFAULT 0
+#define MCSC_BACKGROUND 0
+#define MCHT_NOWHERE 0x00000000
+#define GMR_VISIBLE 0
+#define GDT_VALID 0
+#define PGF_INVISIBLE 0
+#define PGB_TOPORLEFT 0
+#define FSB_REGULAR_MODE 0
+#define ICM_NOTOPEN 0x0000
+#define EPR_0 0
+#define CTFMODEBIAS_DEFAULT 0x0000
+#define EMO_EXIT 0
+#define EMO_EXPANDSELECTION 0
+#define ENM_NONE 0x00000000
+#define ES_EX_NOCALLOLEINIT 0x00000000
+#define CFU_UNDERLINENONE 0
+#define SCF_DEFAULT 0x0000
+#define PFNS_PAREN 0x000
+#define SEL_EMPTY 0x0000
+#define ST_DEFAULT 0
+#define GT_DEFAULT 0
+#define GTL_DEFAULT 0
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1
+#define SW_SHOWNORMAL 1
+#define SW_NORMAL 1
+#define SHOW_OPENWINDOW 1
+#define SW_PARENTCLOSING 1
+#define VK_LBUTTON 0x01
+#define WM_CREATE 0x0001
+#define WA_ACTIVE 1
+#define PWR_OK 1
+#define PWR_SUSPENDREQUEST 1
+#define NFR_ANSI 1
+#define UIS_SET 1
+#define UISF_HIDEFOCUS 0x1
+#define XBUTTON1 0x0001
+#define WMSZ_LEFT 1
+#define HTCLIENT 1
+#define SMTO_BLOCK 0x0001
+#define MA_ACTIVATE 1
+#define ICON_BIG 1
+#define SIZE_MINIMIZED 1
+#define MK_LBUTTON 0x0001
+#define TME_HOVER 0x00000001
+#define CS_VREDRAW 0x0001
+#define CF_TEXT 1
+#define IDOK 1
+#define BN_PAINT 1
+#define BST_CHECKED 0x0001
+#define TTS_ALWAYSTIP 0x01
+#define TBS_AUTOTICKS 0x0001
+#define UDS_WRAP 0x0001
+#define PBS_SMOOTH 0x01
+#define LVS_REPORT 0x0001
+#define TVS_HASBUTTONS 0x0001
+#define TCS_SCROLLOPPOSITE 0x0001
+#define ACS_CENTER 0x0001
+#define MCS_DAYSTATE 0x0001
+#define DTS_UPDOWN 0x0001
+#define PGS_HORZ 0x00000001
+#define NFS_EDIT 0x0001
+#define LANG_ARABIC 0x01
+#define SUBLANG_DEFAULT 0x01
+#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
+#define SUBLANG_AZERI_LATIN 0x01
+#define SUBLANG_CHINESE_TRADITIONAL 0x01
+#define SUBLANG_DUTCH 0x01
+#define SUBLANG_ENGLISH_US 0x01
+#define SUBLANG_FRENCH 0x01
+#define SUBLANG_GERMAN 0x01
+#define SUBLANG_ITALIAN 0x01
+#define SUBLANG_KOREAN 0x01
+#define SUBLANG_LITHUANIAN 0x01
+#define SUBLANG_MALAY_MALAYSIA 0x01
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
+#define SUBLANG_SPANISH 0x01
+#define SUBLANG_SWEDISH 0x01
+#define SUBLANG_URDU_PAKISTAN 0x01
+#define SUBLANG_UZBEK_LATIN 0x01
+#define SORT_JAPANESE_UNICODE 0x1
+#define SORT_CHINESE_UNICODE 0x1
+#define SORT_KOREAN_UNICODE 0x1
+#define SORT_GERMAN_PHONE_BOOK 0x1
+#define SORT_HUNGARIAN_TECHNICAL 0x1
+#define SORT_GEORGIAN_MODERN 0x1
+#define VS_VERSION_INFO 1
+#define VFFF_ISSHAREDFILE 0x0001
+#define VFF_CURNEDEST 0x0001
+#define VIFF_FORCEINSTALL 0x0001
+#define PSP_DLGINDIRECT 0x00000001
+#define PSPCB_RELEASE 1
+#define PSH_PROPTITLE 0x00000001
+#define PSCB_INITIALIZED 1
+#define PSNRET_INVALID 1
+#define PSWIZB_BACK 0x00000001
+#define PSBTN_NEXT 1
+#define ICC_LISTVIEW_CLASSES 0x00000001
+#define CDDS_PREPAINT 0x00000001
+#define CDIS_SELECTED 0x0001
+#define ILC_MASK 0x00000001
+#define ILD_TRANSPARENT 0x00000001
+#define ILS_GLOW 0x00000001
+#define ILCF_SWAP 0x00000001
+#define HDFT_ISNUMBER 0x0001
+#define HDI_WIDTH 0x0001
+#define HDF_RIGHT 0x0001
+#define HHT_NOWHERE 0x0001
+#define TBSTATE_CHECKED 0x01
+#define TBSTYLE_SEP 0x0001
+#define TBSTYLE_EX_DRAWDDARROWS 0x00000001
+#define IDB_STD_LARGE_COLOR 1
+#define STD_COPY 1
+#define VIEW_SMALLICONS 1
+#define HIST_FORWARD 1
+#define TBIMHT_AFTER 0x00000001
+#define TBBF_LARGE 0x0001
+#define TBIF_IMAGE 0x00000001
+#define HICF_MOUSE 0x00000001
+#define TBNRF_HIDEHELP 0x00000001
+#define TBNF_IMAGE 0x00000001
+#define TBDDRET_NODEFAULT 1
+#define RBIM_IMAGELIST 0x00000001
+#define RBBS_BREAK 0x00000001
+#define RBBIM_STYLE 0x00000001
+#define RBNM_ID 0x00000001
+#define RBHT_NOWHERE 0x0001
+#define TTF_IDISHWND 0x0001
+#define TTDT_RESHOW 1
+#define TTI_INFO 1
+#define TBTS_LEFT 1
+#define TB_LINEDOWN 1
+#define TBCD_TICS 0x0001
+#define DL_STOPCURSOR 1
+#define HOTKEYF_SHIFT 0x01
+#define HKCOMB_NONE 0x0001
+#define LVSIL_SMALL 1
+#define LVIF_TEXT 0x0001
+#define LVIS_FOCUSED 0x0001
+#define LVNI_FOCUSED 0x0001
+#define LVFI_PARAM 0x0001
+#define LVIR_ICON 1
+#define LVHT_NOWHERE 0x0001
+#define LVA_ALIGNLEFT 0x0001
+#define LVCF_FMT 0x0001
+#define LVCFMT_RIGHT 0x0001
+#define LVSICF_NOINVALIDATEALL 0x00000001
+#define LVS_EX_GRIDLINES 0x00000001
+#define LVBKIF_SOURCE_HBITMAP 0x00000001
+#define LVKF_ALT 0x0001
+#define LVCDI_GROUP 0x00000001
+#define LVGIT_UNFOLDED 0x0001
+#define TVIF_TEXT 0x0001
+#define TVE_COLLAPSE 0x0001
+#define TVGN_NEXT 0x0001
+#define TVHT_NOWHERE 0x0001
+#define TVC_BYMOUSE 0x0001
+#define TVNRET_SKIPOLD 1
+#define CBEIF_TEXT 0x00000001
+#define CBES_EX_NOEDITIMAGE 0x00000001
+#define CBENF_KILLFOCUS 1
+#define TCS_EX_FLATSEPARATORS 0x00000001
+#define TCIF_TEXT 0x0001
+#define TCIS_BUTTONPRESSED 0x0001
+#define TCHT_NOWHERE 0x0001
+#define ACN_START 1
+#define MCSC_TEXT 1
+#define GMR_DAYSTATE 1
+#define GDTR_MIN 0x0001
+#define GDT_NONE 1
+#define PGF_NORMAL 1
+#define PGB_BOTTOMORRIGHT 1
+#define PGF_SCROLLUP 1
+#define PGK_SHIFT 1
+#define PGF_CALCWIDTH 1
+#define DPAS_SORTED 0x0001
+#define FSB_ENCARTA_MODE 1
+#define SES_EMULATESYSEDIT 1
+#define IMF_AUTOKEYBOARD 0x0001
+#define ICM_LEVEL3 0x0001
+#define TO_ADVANCEDTYPOGRAPHY 1
+#define EPR_270 1
+#define CTFMODEBIAS_FILENAME 0x0001
+#define IMF_SMODE_PLAURALCLAUSE 0x0001
+#define ICT_RESULTREADSTR 1
+#define EMO_ENTER 1
+#define EMO_EXPANDDOCUMENT 1
+#define ENM_CHANGE 0x00000001
+#define ECO_AUTOWORDSELECTION 0x00000001
+#define ECOOP_SET 0x0001
+#define PC_FOLLOWING 1
+#define IMF_FORCENONE 0x0001
+#define CFM_BOLD 0x00000001
+#define CFE_BOLD 0x0001
+#define CFU_UNDERLINE 1
+#define SCF_SELECTION 0x0001
+#define SF_TEXT 0x0001
+#define PFM_STARTINDENT 0x00000001
+#define PFN_BULLET 1
+#define PFA_LEFT 1
+#define SEL_TEXT 0x0001
+#define OLEOP_DOVERB 1
+#define ST_KEEPUNDO 1
+#define GT_USECRLF 1
+#define GTL_USECRLF 1
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
+#define SW_SHOWMINIMIZED 2
+#define SHOW_ICONWINDOW 2
+#define SW_OTHERZOOM 2
+#define VK_RBUTTON 0x02
+#define WM_DESTROY 0x0002
+#define WA_CLICKACTIVE 2
+#define PWR_SUSPENDRESUME 2
+#define NFR_UNICODE 2
+#define UIS_CLEAR 2
+#define UISF_HIDEACCEL 0x2
+#define XBUTTON2 0x0002
+#define WMSZ_RIGHT 2
+#define HTCAPTION 2
+#define SMTO_ABORTIFHUNG 0x0002
+#define MA_ACTIVATEANDEAT 2
+#define SIZE_MAXIMIZED 2
+#define MK_RBUTTON 0x0002
+#define TME_LEAVE 0x00000002
+#define CS_HREDRAW 0x0002
+#define CF_BITMAP 2
+#define IDCANCEL 2
+#define BN_HILITE 2
+#define BST_INDETERMINATE 0x0002
+#define HDS_BUTTONS 0x0002
+#define TTS_NOPREFIX 0x02
+#define TBS_VERT 0x0002
+#define UDS_SETBUDDYINT 0x0002
+#define LVS_SMALLICON 0x0002
+#define TVS_HASLINES 0x0002
+#define TCS_BOTTOM 0x0002
+#define TCS_RIGHT 0x0002
+#define ACS_TRANSPARENT 0x0002
+#define MCS_MULTISELECT 0x0002
+#define DTS_SHOWNONE 0x0002
+#define PGS_AUTOSCROLL 0x00000002
+#define NFS_STATIC 0x0002
+#define LANG_BULGARIAN 0x02
+#define SUBLANG_SYS_DEFAULT 0x02
+#define SUBLANG_ARABIC_IRAQ 0x02
+#define SUBLANG_AZERI_CYRILLIC 0x02
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02
+#define SUBLANG_DUTCH_BELGIAN 0x02
+#define SUBLANG_ENGLISH_UK 0x02
+#define SUBLANG_FRENCH_BELGIAN 0x02
+#define SUBLANG_GERMAN_SWISS 0x02
+#define SUBLANG_ITALIAN_SWISS 0x02
+#define SUBLANG_KASHMIRI_INDIA 0x02
+#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+#define SUBLANG_NEPALI_INDIA 0x02
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02
+#define SUBLANG_PORTUGUESE 0x02
+#define SUBLANG_SERBIAN_LATIN 0x02
+#define SUBLANG_SPANISH_MEXICAN 0x02
+#define SUBLANG_SWEDISH_FINLAND 0x02
+#define SUBLANG_URDU_INDIA 0x02
+#define SUBLANG_UZBEK_CYRILLIC 0x02
+#define SORT_CHINESE_PRC 0x2
+#define VFF_FILEINUSE 0x0002
+#define VIFF_DONTDELETEOLD 0x0002
+#define PSP_USEHICON 0x00000002
+#define PSPCB_CREATE 2
+#define PSH_USEHICON 0x00000002
+#define PSCB_PRECREATE 2
+#define PSNRET_INVALID_NOCHANGEPAGE 2
+#define PSWIZB_NEXT 0x00000002
+#define PSBTN_FINISH 2
+#define ID_PSRESTARTWINDOWS 0x2
+#define ICC_TREEVIEW_CLASSES 0x00000002
+#define CDRF_NEWFONT 0x00000002
+#define CDDS_POSTPAINT 0x00000002
+#define CDIS_GRAYED 0x0002
+#define ILD_BLEND25 0x00000002
+#define ILS_SHADOW 0x00000002
+#define HDI_TEXT 0x0002
+#define HDF_CENTER 0x0002
+#define HHT_ONHEADER 0x0002
+#define CMB_MASKED 0x02
+#define TBSTATE_PRESSED 0x02
+#define TBSTYLE_CHECK 0x0002
+#define STD_PASTE 2
+#define VIEW_LIST 2
+#define HIST_FAVORITES 2
+#define TBIMHT_BACKGROUND 0x00000002
+#define TBIF_TEXT 0x00000002
+#define HICF_ARROWKEYS 0x00000002
+#define TBNRF_ENDCUSTOMIZE 0x00000002
+#define TBNF_TEXT 0x00000002
+#define TBDDRET_TREATPRESSED 2
+#define RBBS_FIXEDSIZE 0x00000002
+#define RBBIM_COLORS 0x00000002
+#define RBNM_STYLE 0x00000002
+#define RBHT_CAPTION 0x0002
+#define TTF_CENTERTIP 0x0002
+#define TTDT_AUTOPOP 2
+#define TTI_WARNING 2
+#define TBTS_BOTTOM 2
+#define TB_PAGEUP 2
+#define TBCD_THUMB 0x0002
+#define DL_COPYCURSOR 2
+#define HOTKEYF_CONTROL 0x02
+#define HKCOMB_S 0x0002
+#define LVSIL_STATE 2
+#define LVIF_IMAGE 0x0002
+#define LVIS_SELECTED 0x0002
+#define LVNI_SELECTED 0x0002
+#define LVFI_STRING 0x0002
+#define LVIR_LABEL 2
+#define LVHT_ONITEMICON 0x0002
+#define LVA_ALIGNTOP 0x0002
+#define LVCF_WIDTH 0x0002
+#define LVCFMT_CENTER 0x0002
+#define LVSICF_NOSCROLL 0x00000002
+#define LVS_EX_SUBITEMIMAGES 0x00000002
+#define LVBKIF_SOURCE_URL 0x00000002
+#define LVKF_CONTROL 0x0002
+#define TVIF_IMAGE 0x0002
+#define TVIS_SELECTED 0x0002
+#define TVE_EXPAND 0x0002
+#define TVSIL_STATE 2
+#define TVGN_PREVIOUS 0x0002
+#define TVHT_ONITEMICON 0x0002
+#define TVC_BYKEYBOARD 0x0002
+#define TVNRET_SKIPNEW 2
+#define CBEIF_IMAGE 0x00000002
+#define CBES_EX_NOEDITIMAGEINDENT 0x00000002
+#define CBENF_RETURN 2
+#define TCS_EX_REGISTERDROP 0x00000002
+#define TCIF_IMAGE 0x0002
+#define TCIS_HIGHLIGHTED 0x0002
+#define TCHT_ONITEMICON 0x0002
+#define ACN_STOP 2
+#define MCSC_TITLEBK 2
+#define GDTR_MAX 0x0002
+#define PGF_GRAYED 2
+#define PGF_SCROLLDOWN 2
+#define PGK_CONTROL 2
+#define PGF_CALCHEIGHT 2
+#define DPAS_INSERTBEFORE 0x0002
+#define FSB_FLAT_MODE 2
+#define SES_BEEPONMAXTEXT 2
+#define IMF_AUTOFONT 0x0002
+#define ICM_LEVEL2 0x0002
+#define TO_SIMPLELINEBREAK 2
+#define EPR_180 2
+#define CTFMODEBIAS_NAME 0x0002
+#define IMF_SMODE_NONE 0x0002
+#define EMO_PROMOTE 2
+#define VM_OUTLINE 2
+#define ENM_UPDATE 0x00000002
+#define ECOOP_OR 0x0002
+#define PC_LEADING 2
+#define IMF_FORCEENABLE 0x0002
+#define CFM_ITALIC 0x00000002
+#define CFE_ITALIC 0x0002
+#define CFU_UNDERLINEWORD 2
+#define SCF_WORD 0x0002
+#define SF_RTF 0x0002
+#define PFM_RIGHTINDENT 0x00000002
+#define PFN_ARABIC 2
+#define PFA_RIGHT 2
+#define SEL_OBJECT 0x0002
+#define ST_SELECTION 2
+#define GT_SELECTION 2
+#define GTL_PRECISE 2
+#define IDC_STATIC 2
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
+#define SW_SHOWMAXIMIZED 3
+#define SW_MAXIMIZE 3
+#define SHOW_FULLSCREEN 3
+#define SW_PARENTOPENING 3
+#define VK_CANCEL 0x03
+#define WM_MOVE 0x0003
+#define PWR_CRITICALRESUME 3
+#define NF_QUERY 3
+#define UIS_INITIALIZE 3
+#define WMSZ_TOP 3
+#define HTSYSMENU 3
+#define MA_NOACTIVATE 3
+#define SIZE_MAXSHOW 3
+#define CF_METAFILEPICT 3
+#define IDABORT 3
+#define BN_UNHILITE 3
+#define LVS_LIST 0x0003
+#define LVS_TYPEMASK 0x0003
+#define LANG_CATALAN 0x03
+#define SUBLANG_ARABIC_EGYPT 0x03
+#define SUBLANG_CHINESE_HONGKONG 0x03
+#define SUBLANG_ENGLISH_AUS 0x03
+#define SUBLANG_FRENCH_CANADIAN 0x03
+#define SUBLANG_GERMAN_AUSTRIAN 0x03
+#define SUBLANG_SERBIAN_CYRILLIC 0x03
+#define SUBLANG_SPANISH_MODERN 0x03
+#define SORT_CHINESE_BOPOMOFO 0x3
+#define PSNRET_MESSAGEHANDLED 3
+#define PSBTN_OK 3
+#define CDDS_PREERASE 0x00000003
+#define HDF_JUSTIFYMASK 0x0003
+#define STD_UNDO 3
+#define VIEW_DETAILS 3
+#define HIST_ADDTOFAVORITES 3
+#define RBHT_CLIENT 0x0003
+#define TTDT_INITIAL 3
+#define TTI_ERROR 3
+#define TBTS_RIGHT 3
+#define TB_PAGEDOWN 3
+#define TBCD_CHANNEL 0x0003
+#define DL_MOVECURSOR 3
+#define LVIR_SELECTBOUNDS 3
+#define LVCFMT_JUSTIFYMASK 0x0003
+#define LVBKIF_SOURCE_MASK 0x00000003
+#define TVE_TOGGLE 0x0003
+#define TVGN_PARENT 0x0003
+#define CBENF_ESCAPE 3
+#define MCSC_TITLETEXT 3
+#define ICM_LEVEL2_5 0x0003
+#define EPR_90 3
+#define CTFMODEBIAS_READING 0x0003
+#define EMO_EXPAND 3
+#define ECOOP_AND 0x0003
+#define WB_CLASSIFY 3
+#define PC_OVERFLOW 3
+#define CFU_UNDERLINEDOUBLE 3
+#define SF_RTFNOOBJS 0x0003
+#define PFN_LCLETTER 3
+#define PFA_CENTER 3
+#define SW_SHOWNOACTIVATE 4
+#define SHOW_OPENNOACTIVATE 4
+#define SW_OTHERUNZOOM 4
+#define VK_MBUTTON 0x04
+#define NF_REQUERY 4
+#define WMSZ_TOPLEFT 4
+#define HTGROWBOX 4
+#define MA_NOACTIVATEANDEAT 4
+#define SIZE_MAXHIDE 4
+#define MK_SHIFT 0x0004
+#define CF_SYLK 4
+#define IDRETRY 4
+#define BN_DISABLE 4
+#define BST_PUSHED 0x0004
+#define HDS_HOTTRACK 0x0004
+#define TBS_TOP 0x0004
+#define TBS_LEFT 0x0004
+#define UDS_ALIGNRIGHT 0x0004
+#define PBS_VERTICAL 0x04
+#define LVS_SINGLESEL 0x0004
+#define TVS_LINESATROOT 0x0004
+#define TCS_MULTISELECT 0x0004
+#define ACS_AUTOPLAY 0x0004
+#define MCS_WEEKNUMBERS 0x0004
+#define DTS_LONGDATEFORMAT 0x0004
+#define PGS_DRAGNDROP 0x00000004
+#define NFS_LISTCOMBO 0x0004
+#define LANG_CHINESE 0x04
+#define SUBLANG_ARABIC_LIBYA 0x04
+#define SUBLANG_CHINESE_SINGAPORE 0x04
+#define SUBLANG_ENGLISH_CAN 0x04
+#define SUBLANG_FRENCH_SWISS 0x04
+#define SUBLANG_GERMAN_LUXEMBOURG 0x04
+#define SUBLANG_SPANISH_GUATEMALA 0x04
+#define VFF_BUFFTOOSMALL 0x0004
+#define PSP_USEICONID 0x00000004
+#define PSH_USEICONID 0x00000004
+#define PSWIZB_FINISH 0x00000004
+#define PSBTN_APPLYNOW 4
+#define ICC_BAR_CLASSES 0x00000004
+#define CDRF_SKIPDEFAULT 0x00000004
+#define CDDS_POSTERASE 0x00000004
+#define CDIS_DISABLED 0x0004
+#define ILC_COLOR4 0x00000004
+#define ILD_BLEND50 0x00000004
+#define ILS_SATURATE 0x00000004
+#define HDI_FORMAT 0x0004
+#define HDF_RTLREADING 0x0004
+#define HHT_ONDIVIDER 0x0004
+#define TBSTATE_ENABLED 0x04
+#define TBSTYLE_GROUP 0x0004
+#define IDB_VIEW_SMALL_COLOR 4
+#define STD_REDOW 4
+#define VIEW_SORTNAME 4
+#define HIST_VIEWTREE 4
+#define TBIF_STATE 0x00000004
+#define HICF_ACCELERATOR 0x00000004
+#define RBBS_CHILDEDGE 0x00000004
+#define RBBIM_TEXT 0x00000004
+#define RBNM_LPARAM 0x00000004
+#define RBHT_GRABBER 0x0004
+#define TTF_RTLREADING 0x0004
+#define TB_THUMBPOSITION 4
+#define HOTKEYF_ALT 0x04
+#define HKCOMB_C 0x0004
+#define LVIF_PARAM 0x0004
+#define LVIS_CUT 0x0004
+#define LVNI_CUT 0x0004
+#define LVHT_ONITEMLABEL 0x0004
+#define LVCF_TEXT 0x0004
+#define LVS_EX_CHECKBOXES 0x00000004
+#define LVKF_SHIFT 0x0004
+#define TVIF_PARAM 0x0004
+#define TVIS_CUT 0x0004
+#define TVGN_CHILD 0x0004
+#define TVHT_ONITEMLABEL 0x0004
+#define CBEIF_SELECTEDIMAGE 0x00000004
+#define CBES_EX_PATHWORDBREAKPROC 0x00000004
+#define CBENF_DROPDOWN 4
+#define TCIF_RTLREADING 0x0004
+#define TCHT_ONITEMLABEL 0x0004
+#define MCSC_MONTHBK 4
+#define PGF_DEPRESSED 4
+#define PGF_SCROLLLEFT 4
+#define PGK_MENU 4
+#define DPAS_INSERTAFTER 0x0004
+#define SES_EXTENDBACKCOLOR 4
+#define IMF_IMECANCELCOMPLETE 0x0004
+#define ICM_LEVEL2_SUI 0x0004
+#define TO_DISABLECUSTOMTEXTOUT 4
+#define CTFMODEBIAS_DATETIME 0x0004
+#define EMO_MOVESELECTION 4
+#define VM_NORMAL 4
+#define ENM_SCROLL 0x00000004
+#define ECOOP_XOR 0x0004
+#define WB_MOVEWORDLEFT 4
+#define WB_MOVEWORDPREV 4
+#define PC_DELIMITER 4
+#define IMF_FORCEDISABLE 0x0004
+#define CFM_UNDERLINE 0x00000004
+#define CFE_UNDERLINE 0x0004
+#define CFU_UNDERLINEDOTTED 4
+#define SCF_ALL 0x0004
+#define SF_TEXTIZED 0x0004
+#define PFM_OFFSET 0x00000004
+#define PFN_UCLETTER 4
+#define PFA_JUSTIFY 4
+#define PFA_FULL_INTERWORD 4
+#define SEL_MULTICHAR 0x0004
+#define ST_NEWCHARS 4
+#define GT_RAWTEXT 4
+#define GTL_CLOSE 4
+#define BOM_NEUTRALOVERRIDE 0x0004
+#define BOE_NEUTRALOVERRIDE 0x0004
+#define SW_SHOW 5
+#define VK_XBUTTON1 0x05
+#define WM_SIZE 0x0005
+#define WMSZ_TOPRIGHT 5
+#define HTMENU 5
+#define CF_DIF 5
+#define IDIGNORE 5
+#define BN_DOUBLECLICKED 5
+#define LANG_CZECH 0x05
+#define SUBLANG_ARABIC_ALGERIA 0x05
+#define SUBLANG_CHINESE_MACAU 0x05
+#define SUBLANG_ENGLISH_NZ 0x05
+#define SUBLANG_FRENCH_LUXEMBOURG 0x05
+#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+#define SUBLANG_SPANISH_COSTA_RICA 0x05
+#define PSBTN_CANCEL 5
+#define COMCTL32_VERSION 5
+#define IDB_VIEW_LARGE_COLOR 5
+#define STD_DELETE 5
+#define VIEW_SORTSIZE 5
+#define TB_THUMBTRACK 5
+#define LVA_SNAPTOGRID 0x0005
+#define TVGN_FIRSTVISIBLE 0x0005
+#define MCSC_TRAILINGTEXT 5
+#define ICM_CTF 0x0005
+#define CTFMODEBIAS_CONVERSATION 0x0005
+#define EMO_GETVIEWMODE 5
+#define WB_MOVEWORDRIGHT 5
+#define WB_MOVEWORDNEXT 5
+#define CFU_UNDERLINEDASH 5
+#define PFN_LCROMAN 5
+#define PFA_FULL_INTERLETTER 5
+#define SW_MINIMIZE 6
+#define VK_XBUTTON2 0x06
+#define WM_ACTIVATE 0x0006
+#define WMSZ_BOTTOM 6
+#define HTHSCROLL 6
+#define CF_TIFF 6
+#define IDYES 6
+#define BN_SETFOCUS 6
+#define LANG_DANISH 0x06
+#define SUBLANG_ARABIC_MOROCCO 0x06
+#define SUBLANG_ENGLISH_EIRE 0x06
+#define SUBLANG_FRENCH_MONACO 0x06
+#define SUBLANG_SPANISH_PANAMA 0x06
+#define PSBTN_HELP 6
+#define PSBTN_MAX 6
+#define STD_FILENEW 6
+#define VIEW_SORTDATE 6
+#define TB_TOP 6
+#define TVGN_NEXTVISIBLE 0x0006
+#define CTFMODEBIAS_NUMERIC 0x0006
+#define WB_LEFTBREAK 6
+#define WB_PREVBREAK 6
+#define CFU_UNDERLINEDASHDOT 6
+#define PFN_UCROMAN 6
+#define PFA_FULL_SCALED 6
+#define SW_SHOWMINNOACTIVE 7
+#define WM_SETFOCUS 0x0007
+#define WMSZ_BOTTOMLEFT 7
+#define HTVSCROLL 7
+#define CF_OEMTEXT 7
+#define IDNO 7
+#define BN_KILLFOCUS 7
+#define LANG_GERMAN 0x07
+#define SUBLANG_ARABIC_TUNISIA 0x07
+#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+#define STD_FILEOPEN 7
+#define VIEW_SORTTYPE 7
+#define TB_BOTTOM 7
+#define TVGN_PREVIOUSVISIBLE 0x0007
+#define CTFMODEBIAS_HIRAGANA 0x0007
+#define WB_RIGHTBREAK 7
+#define WB_NEXTBREAK 7
+#define CFU_UNDERLINEDASHDOTDOT 7
+#define PFA_FULL_GLYPHS 7
+#define SW_SHOWNA 8
+#define VK_BACK 0x08
+#define WM_KILLFOCUS 0x0008
+#define WMSZ_BOTTOMRIGHT 8
+#define HTMINBUTTON 8
+#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
+#define MK_CONTROL 0x0008
+#define CS_DBLCLKS 0x0008
+#define CF_DIB 8
+#define IDCLOSE 8
+#define BST_FOCUS 0x0008
+#define HDS_HIDDEN 0x0008
+#define TBS_BOTH 0x0008
+#define UDS_ALIGNLEFT 0x0008
+#define LVS_SHOWSELALWAYS 0x0008
+#define TVS_EDITLABELS 0x0008
+#define TCS_FLATBUTTONS 0x0008
+#define ACS_TIMER 0x0008
+#define MCS_NOTODAYCIRCLE 0x0008
+#define NFS_BUTTON 0x0008
+#define LANG_GREEK 0x08
+#define SUBLANG_ARABIC_OMAN 0x08
+#define SUBLANG_ENGLISH_JAMAICA 0x08
+#define SUBLANG_SPANISH_VENEZUELA 0x08
+#define PSP_USETITLE 0x00000008
+#define PSH_PROPSHEETPAGE 0x00000008
+#define PSWIZB_DISABLEDFINISH 0x00000008
+#define ICC_TAB_CLASSES 0x00000008
+#define CDIS_CHECKED 0x0008
+#define ILC_COLOR8 0x00000008
+#define ILS_ALPHA 0x00000008
+#define HDI_LPARAM 0x0008
+#define HHT_ONDIVOPEN 0x0008
+#define TBSTATE_HIDDEN 0x08
+#define TBSTYLE_DROPDOWN 0x0008
+#define TBSTYLE_EX_MIXEDBUTTONS 0x00000008
+#define IDB_HIST_SMALL_COLOR 8
+#define STD_FILESAVE 8
+#define VIEW_PARENTFOLDER 8
+#define TBIF_STYLE 0x00000008
+#define HICF_DUPACCEL 0x00000008
+#define RBBS_HIDDEN 0x00000008
+#define RBBIM_IMAGE 0x00000008
+#define RBHT_CHEVRON 0x0008
+#define TB_ENDTRACK 8
+#define HOTKEYF_EXT 0x08
+#define HKCOMB_A 0x0008
+#define LVIF_STATE 0x0008
+#define LVIS_DROPHILITED 0x0008
+#define LVNI_DROPHILITED 0x0008
+#define LVFI_PARTIAL 0x0008
+#define LVHT_ONITEMSTATEICON 0x0008
+#define LVHT_ABOVE 0x0008
+#define LVCF_SUBITEM 0x0008
+#define LVS_EX_TRACKSELECT 0x00000008
+#define TVIF_STATE 0x0008
+#define TVIS_DROPHILITED 0x0008
+#define TVGN_DROPHILITE 0x0008
+#define TVHT_ONITEMINDENT 0x0008
+#define CBEIF_OVERLAY 0x00000008
+#define CBES_EX_NOSIZELIMIT 0x00000008
+#define TCIF_PARAM 0x0008
+#define PGF_HOT 8
+#define PGF_SCROLLRIGHT 8
+#define SES_MAPCPS 8
+#define IMF_IMEALWAYSSENDNOTIFY 0x0008
+#define TO_ADVANCEDLAYOUT 8
+#define CTFMODEBIAS_KATAKANA 0x0008
+#define ENM_SCROLLEVENTS 0x00000008
+#define ES_NOOLEDRAGDROP 0x00000008
+#define IMF_CLOSESTATUSWINDOW 0x0008
+#define CFM_STRIKEOUT 0x00000008
+#define CFE_STRIKEOUT 0x0008
+#define CFU_UNDERLINEWAVE 8
+#define SCF_USEUIRULES 0x0008
+#define PFM_ALIGNMENT 0x00000008
+#define PFA_SNAP_GRID 8
+#define SEL_MULTIOBJECT 0x0008
+#define GT_NOHIDDENTEXT 8
+#define GTL_NUMCHARS 8
+#define BOM_CONTEXTREADING 0x0008
+#define BOE_CONTEXTREADING 0x0008
+#define SW_RESTORE 9
+#define VK_TAB 0x09
+#define HTMAXBUTTON 9
+#define CF_PALETTE 9
+#define IDHELP 9
+#define DTS_TIMEFORMAT 0x0009
+#define LANG_ENGLISH 0x09
+#define SUBLANG_ARABIC_YEMEN 0x09
+#define SUBLANG_ENGLISH_CARIBBEAN 0x09
+#define SUBLANG_SPANISH_COLOMBIA 0x09
+#define IDB_HIST_LARGE_COLOR 9
+#define STD_PRINTPRE 9
+#define VIEW_NETCONNECT 9
+#define TVGN_CARET 0x0009
+#define CTFMODEBIAS_HANGUL 0x0009
+#define VM_PAGE 9
+#define CFU_UNDERLINETHICK 9
+#define SW_SHOWDEFAULT 10
+#define WM_ENABLE 0x000A
+#define HTLEFT 10
+#define CF_PENDATA 10
+#define IDTRYAGAIN 10
+#define HELP_CONTEXTMENU 0x000a
+#define LANG_SPANISH 0x0a
+#define SUBLANG_ARABIC_SYRIA 0x0a
+#define SUBLANG_ENGLISH_BELIZE 0x0a
+#define SUBLANG_SPANISH_PERU 0x0a
+#define STD_PROPERTIES 10
+#define VIEW_NETDISCONNECT 10
+#define TVGN_LASTVISIBLE 0x000A
+#define CTFMODEBIAS_HALFWIDTHKATAKANA 0x000A
+#define CFU_UNDERLINEHAIRLINE 10
+#define SW_FORCEMINIMIZE 11
+#define SW_MAX 11
+#define WM_SETREDRAW 0x000B
+#define HTRIGHT 11
+#define CF_RIFF 11
+#define IDCONTINUE 11
+#define HELP_FINDER 0x000b
+#define LANG_FINNISH 0x0b
+#define SUBLANG_ARABIC_JORDAN 0x0b
+#define SUBLANG_ENGLISH_TRINIDAD 0x0b
+#define SUBLANG_SPANISH_ARGENTINA 0x0b
+#define STD_HELP 11
+#define VIEW_NEWFOLDER 11
+#define CTFMODEBIAS_FULLWIDTHALPHANUMERIC 0x000B
+#define CFU_UNDERLINEDOUBLEWAVE 11
+#define VK_CLEAR 0x0C
+#define WM_SETTEXT 0x000C
+#define HTTOP 12
+#define CF_WAVE 12
+#define HELP_WM_HELP 0x000c
+#define DTS_SHORTDATECENTURYFORMAT 0x000C
+#define LANG_FRENCH 0x0c
+#define SUBLANG_ARABIC_LEBANON 0x0c
+#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
+#define SUBLANG_SPANISH_ECUADOR 0x0c
+#define STD_FIND 12
+#define VIEW_VIEWMENU 12
+#define CTFMODEBIAS_HALFWIDTHALPHANUMERIC 0x000C
+#define CFU_UNDERLINEHEAVYWAVE 12
+#define VK_RETURN 0x0D
+#define WM_GETTEXT 0x000D
+#define HTTOPLEFT 13
+#define CF_UNICODETEXT 13
+#define HELP_SETPOPUP_POS 0x000d
+#define LANG_HEBREW 0x0d
+#define SUBLANG_ARABIC_KUWAIT 0x0d
+#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+#define SUBLANG_SPANISH_CHILE 0x0d
+#define STD_REPLACE 13
+#define CFU_UNDERLINELONGDASH 13
+#define WM_GETTEXTLENGTH 0x000E
+#define HTTOPRIGHT 14
+#define CF_ENHMETAFILE 14
+#define LANG_HUNGARIAN 0x0e
+#define SUBLANG_ARABIC_UAE 0x0e
+#define SUBLANG_SPANISH_URUGUAY 0x0e
+#define STD_PRINT 14
+#define CFU_UNDERLINETHICKDASH 14
+#define WM_PAINT 0x000F
+#define HTBOTTOM 15
+#define CF_HDROP 15
+#define LANG_ICELANDIC 0x0f
+#define SUBLANG_ARABIC_BAHRAIN 0x0f
+#define SUBLANG_SPANISH_PARAGUAY 0x0f
+#define CFU_UNDERLINETHICKDASHDOT 15
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16
+#define VK_SHIFT 0x10
+#define WM_CLOSE 0x0010
+#define HTBOTTOMLEFT 16
+#define WVR_ALIGNTOP 0x0010
+#define MK_MBUTTON 0x0010
+#define TME_NONCLIENT 0x00000010
+#define CF_LOCALE 16
+#define HELP_TCARD_DATA 0x0010
+#define TTS_NOANIMATE 0x10
+#define TBS_NOTICKS 0x0010
+#define UDS_AUTOBUDDY 0x0010
+#define LVS_SORTASCENDING 0x0010
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TCS_FORCEICONLEFT 0x0010
+#define MCS_NOTODAY 0x0010
+#define DTS_APPCANPARSE 0x0010
+#define NFS_ALL 0x0010
+#define LANG_ITALIAN 0x10
+#define SUBLANG_ARABIC_QATAR 0x10
+#define SUBLANG_SPANISH_BOLIVIA 0x10
+#define PSP_RTLREADING 0x00000010
+#define PSH_WIZARDHASFINISH 0x00000010
+#define ICC_UPDOWN_CLASS 0x00000010
+#define CDRF_NOTIFYPOSTPAINT 0x00000010
+#define CDIS_FOCUS 0x0010
+#define ILC_COLOR16 0x00000010
+#define ILD_MASK 0x00000010
+#define HDI_BITMAP 0x0010
+#define HHT_ONFILTER 0x0010
+#define TBSTATE_INDETERMINATE 0x10
+#define TBSTYLE_AUTOSIZE 0x0010
+#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x00000010
+#define TBIF_LPARAM 0x00000010
+#define HICF_ENTERING 0x00000010
+#define RBBS_NOVERT 0x00000010
+#define RBBIM_CHILD 0x00000010
+#define TTF_SUBCLASS 0x0010
+#define HKCOMB_SC 0x0010
+#define LVIF_INDENT 0x0010
+#define LVIS_GLOW 0x0010
+#define LVHT_BELOW 0x0010
+#define LVCF_IMAGE 0x0010
+#define LVS_EX_HEADERDRAGDROP 0x00000010
+#define LV_MAX_WORKAREAS 16
+#define LVBKIF_STYLE_TILE 0x00000010
+#define LVBKIF_STYLE_MASK 0x00000010
+#define TVIF_HANDLE 0x0010
+#define TVIS_BOLD 0x0010
+#define TVHT_ONITEMBUTTON 0x0010
+#define CBEIF_INDENT 0x00000010
+#define CBES_EX_CASESENSITIVE 0x00000010
+#define TCIF_STATE 0x0010
+#define SES_EMULATE10 16
+#define IMF_AUTOFONTSIZEADJUST 0x0010
+#define ENM_DRAGDROPDONE 0x00000010
+#define WBF_WORDWRAP 0x010
+#define CFM_PROTECTED 0x00000010
+#define CFE_PROTECTED 0x0010
+#define CFU_UNDERLINETHICKDASHDOTDOT 16
+#define SCF_ASSOCIATEFONT 0x0010
+#define SF_UNICODE 0x0010
+#define PFM_TABSTOPS 0x00000010
+#define GTL_NUMBYTES 16
+#define BOM_CONTEXTALIGNMENT 0x0010
+#define BOE_CONTEXTALIGNMENT 0x0010
+#define VK_CONTROL 0x11
+#define WM_QUERYENDSESSION 0x0011
+#define HTBOTTOMRIGHT 17
+#define CF_DIBV5 17
+#define HELP_TCARD_OTHER_CALLER 0x0011
+#define LANG_JAPANESE 0x11
+#define SUBLANG_SPANISH_EL_SALVADOR 0x11
+#define CFU_UNDERLINETHICKDOTTED 17
+#define VK_MENU 0x12
+#define WM_QUIT 0x0012
+#define HTBORDER 18
+#define CF_MAX 18
+#define LANG_KOREAN 0x12
+#define SUBLANG_SPANISH_HONDURAS 0x12
+#define CFU_UNDERLINETHICKLONGDASH 18
+#define VK_PAUSE 0x13
+#define WM_QUERYOPEN 0x0013
+#define HTOBJECT 19
+#define LANG_DUTCH 0x13
+#define SUBLANG_SPANISH_NICARAGUA 0x13
+#define VK_CAPITAL 0x14
+#define WM_ERASEBKGND 0x0014
+#define HTCLOSE 20
+#define LANG_NORWEGIAN 0x14
+#define SUBLANG_SPANISH_PUERTO_RICO 0x14
+#define VK_KANA 0x15
+#define VK_HANGEUL 0x15
+#define VK_HANGUL 0x15
+#define WM_SYSCOLORCHANGE 0x0015
+#define HTHELP 21
+#define LANG_POLISH 0x15
+#define WM_ENDSESSION 0x0016
+#define LANG_PORTUGUESE 0x16
+#define VK_JUNJA 0x17
+#define RT_MANIFEST 24
+#define VK_FINAL 0x18
+#define WM_SHOWWINDOW 0x0018
+#define LANG_ROMANIAN 0x18
+#define ILC_COLOR24 0x00000018
+#define VK_HANJA 0x19
+#define VK_KANJI 0x19
+#define LANG_RUSSIAN 0x19
+#define WM_WININICHANGE 0x001A
+#define LANG_CROATIAN 0x1a
+#define LANG_SERBIAN 0x1a
+#define VK_ESCAPE 0x1B
+#define WM_DEVMODECHANGE 0x001B
+#define LANG_SLOVAK 0x1b
+#define VK_CONVERT 0x1C
+#define WM_ACTIVATEAPP 0x001C
+#define LANG_ALBANIAN 0x1c
+#define VK_NONCONVERT 0x1D
+#define WM_FONTCHANGE 0x001D
+#define LANG_SWEDISH 0x1d
+#define VK_ACCEPT 0x1E
+#define WM_TIMECHANGE 0x001E
+#define LANG_THAI 0x1e
+#define VK_MODECHANGE 0x1F
+#define WM_CANCELMODE 0x001F
+#define LANG_TURKISH 0x1f
+#define VK_SPACE 0x20
+#define WM_SETCURSOR 0x0020
+#define WVR_ALIGNLEFT 0x0020
+#define MK_XBUTTON1 0x0020
+#define CS_OWNDC 0x0020
+#define TTS_NOFADE 0x20
+#define TBS_ENABLESELRANGE 0x0020
+#define UDS_ARROWKEYS 0x0020
+#define LVS_SORTDESCENDING 0x0020
+#define TVS_SHOWSELALWAYS 0x0020
+#define TCS_FORCELABELLEFT 0x0020
+#define DTS_RIGHTALIGN 0x0020
+#define NFS_USEFONTASSOC 0x0020
+#define LANG_URDU 0x20
+#define PSP_HASHELP 0x00000020
+#define PSH_WIZARD 0x00000020
+#define ICC_PROGRESS_CLASS 0x00000020
+#define CDRF_NOTIFYITEMDRAW 0x00000020
+#define CDRF_NOTIFYSUBITEMDRAW 0x00000020
+#define CDIS_DEFAULT 0x0020
+#define ILC_COLOR32 0x00000020
+#define ILD_IMAGE 0x00000020
+#define HDI_IMAGE 0x0020
+#define HHT_ONFILTERBUTTON 0x0020
+#define TBSTATE_WRAP 0x20
+#define TBSTYLE_NOPREFIX 0x0020
+#define TBIF_COMMAND 0x00000020
+#define HICF_LEAVING 0x00000020
+#define RBBS_FIXEDBMP 0x00000020
+#define RBBIM_CHILDSIZE 0x00000020
+#define TTF_TRACK 0x0020
+#define HKCOMB_SA 0x0020
+#define LVIS_ACTIVATING 0x0020
+#define LVFI_WRAP 0x0020
+#define LVHT_TORIGHT 0x0020
+#define LVCF_ORDER 0x0020
+#define LVS_EX_FULLROWSELECT 0x00000020
+#define TVIF_SELECTEDIMAGE 0x0020
+#define TVIS_EXPANDED 0x0020
+#define TVHT_ONITEMRIGHT 0x0020
+#define CBEIF_LPARAM 0x00000020
+#define SES_USECRLF 32
+#define IMF_UIFONTS 0x0020
+#define ENM_PARAGRAPHEXPANDED 0x00000020
+#define WBF_WORDBREAK 0x020
+#define IMF_VERTICAL 0x0020
+#define CFM_LINK 0x00000020
+#define CFE_LINK 0x0020
+#define SCF_NOKBUPDATE 0x0020
+#define SF_USECODEPAGE 0x0020
+#define MAX_TAB_STOPS 32
+#define PFM_NUMBERING 0x00000020
+#define VK_PRIOR 0x21
+#define WM_MOUSEACTIVATE 0x0021
+#define LANG_INDONESIAN 0x21
+#define VK_NEXT 0x22
+#define WM_CHILDACTIVATE 0x0022
+#define LANG_UKRAINIAN 0x22
+#define VK_END 0x23
+#define WM_QUEUESYNC 0x0023
+#define LANG_BELARUSIAN 0x23
+#define VK_HOME 0x24
+#define WM_GETMINMAXINFO 0x0024
+#define LANG_SLOVENIAN 0x24
+#define VK_LEFT 0x25
+#define LANG_ESTONIAN 0x25
+#define VK_UP 0x26
+#define WM_PAINTICON 0x0026
+#define LANG_LATVIAN 0x26
+#define VK_RIGHT 0x27
+#define WM_ICONERASEBKGND 0x0027
+#define LANG_LITHUANIAN 0x27
+#define VK_DOWN 0x28
+#define WM_NEXTDLGCTL 0x0028
+#define VK_SELECT 0x29
+#define LANG_FARSI 0x29
+#define VK_PRINT 0x2A
+#define WM_SPOOLERSTATUS 0x002A
+#define LANG_VIETNAMESE 0x2a
+#define VK_EXECUTE 0x2B
+#define WM_DRAWITEM 0x002B
+#define LANG_ARMENIAN 0x2b
+#define VK_SNAPSHOT 0x2C
+#define WM_MEASUREITEM 0x002C
+#define LANG_AZERI 0x2c
+#define VK_INSERT 0x2D
+#define WM_DELETEITEM 0x002D
+#define LANG_BASQUE 0x2d
+#define VK_DELETE 0x2E
+#define WM_VKEYTOITEM 0x002E
+#define VK_HELP 0x2F
+#define WM_CHARTOITEM 0x002F
+#define LANG_MACEDONIAN 0x2f
+#define WM_SETFONT 0x0030
+#define WM_GETFONT 0x0031
+#define WM_SETHOTKEY 0x0032
+#define WM_GETHOTKEY 0x0033
+#define LANG_AFRIKAANS 0x36
+#define WM_QUERYDRAGICON 0x0037
+#define LANG_GEORGIAN 0x37
+#define LANG_FAEROESE 0x38
+#define WM_COMPAREITEM 0x0039
+#define LANG_HINDI 0x39
+#define WM_GETOBJECT 0x003D
+#define LANG_MALAY 0x3e
+#define LANG_KAZAK 0x3f
+#define MAX_TABLE_CELLS 63
+#define WVR_ALIGNBOTTOM 0x0040
+#define MK_XBUTTON2 0x0040
+#define CS_CLASSDC 0x0040
+#define HDS_DRAGDROP 0x0040
+#define TTS_BALLOON 0x40
+#define TBS_FIXEDLENGTH 0x0040
+#define UDS_HORZ 0x0040
+#define LVS_SHAREIMAGELISTS 0x0040
+#define TVS_RTLREADING 0x0040
+#define TCS_HOTTRACK 0x0040
+#define LANG_KYRGYZ 0x40
+#define PSP_USEREFPARENT 0x00000040
+#define PSH_USEPSTARTPAGE 0x00000040
+#define ICC_HOTKEY_CLASS 0x00000040
+#define CDRF_NOTIFYPOSTERASE 0x00000040
+#define CDIS_HOT 0x0040
+#define ILD_ROP 0x00000040
+#define HDI_DI_SETITEM 0x0040
+#define TBSTATE_ELLIPSES 0x40
+#define BTNS_SHOWTEXT 0x0040
+#define TBIF_SIZE 0x00000040
+#define HICF_RESELECT 0x00000040
+#define RBBS_VARIABLEHEIGHT 0x00000040
+#define RBBIM_SIZE 0x00000040
+#define HKCOMB_CA 0x0040
+#define LVFI_NEARESTXY 0x0040
+#define LVHT_TOLEFT 0x0040
+#define LVS_EX_ONECLICKACTIVATE 0x00000040
+#define TVIF_CHILDREN 0x0040
+#define TVIS_EXPANDEDONCE 0x0040
+#define TVHT_ONITEMSTATEICON 0x0040
+#define SES_USEAIMM 64
+#define ENM_PAGECHANGE 0x00000040
+#define ECO_AUTOVSCROLL 0x00000040
+#define WBF_OVERFLOW 0x040
+#define IMF_FORCEACTIVE 0x0040
+#define CFM_SMALLCAPS 0x0040
+#define SCF_ASSOCIATEFONT2 0x0040
+#define SF_NCRFORNONASCII 0x40
+#define PFM_SPACEBEFORE 0x00000040
+#define WM_COMPACTING 0x0041
+#define LANG_SWAHILI 0x41
+#define LANG_UZBEK 0x43
+#define WM_COMMNOTIFY 0x0044
+#define LANG_TATAR 0x44
+#define LANG_BENGALI 0x45
+#define WM_WINDOWPOSCHANGING 0x0046
+#define LANG_PUNJABI 0x46
+#define WM_WINDOWPOSCHANGED 0x0047
+#define LANG_GUJARATI 0x47
+#define WM_POWER 0x0048
+#define LANG_ORIYA 0x48
+#define LANG_TAMIL 0x49
+#define WM_COPYDATA 0x004A
+#define LANG_TELUGU 0x4a
+#define WM_CANCELJOURNAL 0x004B
+#define LANG_KANNADA 0x4b
+#define LANG_MALAYALAM 0x4c
+#define LANG_ASSAMESE 0x4d
+#define WM_NOTIFY 0x004E
+#define LANG_MARATHI 0x4e
+#define LANG_SANSKRIT 0x4f
+#define WM_INPUTLANGCHANGEREQUEST 0x0050
+#define LANG_MONGOLIAN 0x50
+#define WIZ_CXBMP 80
+#define WM_INPUTLANGCHANGE 0x0051
+#define WM_TCARD 0x0052
+#define WM_HELP 0x0053
+#define WM_USERCHANGED 0x0054
+#define WM_NOTIFYFORMAT 0x0055
+#define LANG_GALICIAN 0x56
+#define LANG_KONKANI 0x57
+#define LANG_MANIPURI 0x58
+#define LANG_SINDHI 0x59
+#define LANG_SYRIAC 0x5a
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define WIZ_BODYX 92
+#define VK_APPS 0x5D
+#define VK_SLEEP 0x5F
+#define VK_NUMPAD0 0x60
+#define LANG_KASHMIRI 0x60
+#define VK_NUMPAD1 0x61
+#define LANG_NEPALI 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VS_USER_DEFINED 100
+#define MAXPROPPAGES 100
+#define ODT_HEADER 100
+#define VK_NUMPAD5 0x65
+#define LANG_DIVEHI 0x65
+#define ODT_TAB 101
+#define IDD_DIALOG1 101
+#define VK_NUMPAD6 0x66
+#define ODT_LISTVIEW 102
+#define IDI_ICON1 102
+#define VK_NUMPAD7 0x67
+#define IDB_BITMAP1 103
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define WHEEL_DELTA 120
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define WM_CONTEXTMENU 0x007B
+#define VK_F13 0x7C
+#define WM_STYLECHANGING 0x007C
+#define VK_F14 0x7D
+#define WM_STYLECHANGED 0x007D
+#define VK_F15 0x7E
+#define WM_DISPLAYCHANGE 0x007E
+#define VK_F16 0x7F
+#define WM_GETICON 0x007F
+#define LANG_INVARIANT 0x7f
+#define VK_F17 0x80
+#define WM_SETICON 0x0080
+#define WVR_ALIGNRIGHT 0x0080
+#define CS_PARENTDC 0x0080
+#define CF_OWNERDISPLAY 0x0080
+#define HDS_FULLDRAG 0x0080
+#define TTS_CLOSE 0x80
+#define TBS_NOTHUMB 0x0080
+#define UDS_NOTHOUSANDS 0x0080
+#define LVS_NOLABELWRAP 0x0080
+#define TVS_NOTOOLTIPS 0x0080
+#define TCS_VERTICAL 0x0080
+#define PSP_USECALLBACK 0x00000080
+#define PSH_NOAPPLYNOW 0x00000080
+#define ICC_ANIMATE_CLASS 0x00000080
+#define CDIS_MARKED 0x0080
+#define HDI_ORDER 0x0080
+#define TBSTATE_MARKED 0x80
+#define BTNS_WHOLEDROPDOWN 0x0080
+#define HICF_LMOUSE 0x00000080
+#define RBBS_GRIPPERALWAYS 0x00000080
+#define RBBIM_BACKGROUND 0x00000080
+#define TTF_ABSOLUTE 0x0080
+#define HKCOMB_SCA 0x0080
+#define LVS_EX_TWOCLICKACTIVATE 0x00000080
+#define TVIF_INTEGRAL 0x0080
+#define TVIS_EXPANDPARTIAL 0x0080
+#define SES_NOIME 128
+#define IMF_DUALFONT 0x0080
+#define ECO_AUTOHSCROLL 0x00000080
+#define WBF_LEVEL1 0x080
+#define IMF_FORCEINACTIVE 0x0080
+#define CFM_ALLCAPS 0x0080
+#define SFF_WRITEXTRAPAR 0x80
+#define PFM_SPACEAFTER 0x00000080
+#define VK_F18 0x81
+#define WM_NCCREATE 0x0081
+#define CF_DSPTEXT 0x0081
+#define VK_F19 0x82
+#define WM_NCDESTROY 0x0082
+#define CF_DSPBITMAP 0x0082
+#define VK_F20 0x83
+#define WM_NCCALCSIZE 0x0083
+#define CF_DSPMETAFILEPICT 0x0083
+#define VK_F21 0x84
+#define WM_NCHITTEST 0x0084
+#define VK_F22 0x85
+#define WM_NCPAINT 0x0085
+#define VK_F23 0x86
+#define WM_NCACTIVATE 0x0086
+#define VK_F24 0x87
+#define WM_GETDLGCODE 0x0087
+#define WM_SYNCPAINT 0x0088
+#define WIZ_CYDLG 140
+#define CF_DSPENHMETAFILE 0x008E
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+#define VK_OEM_NEC_EQUAL 0x92
+#define VK_OEM_FJ_JISHO 0x92
+#define VK_OEM_FJ_MASSHOU 0x93
+#define VK_OEM_FJ_TOUROKU 0x94
+#define VK_OEM_FJ_LOYA 0x95
+#define VK_OEM_FJ_ROYA 0x96
+#define VK_LSHIFT 0xA0
+#define WM_NCMOUSEMOVE 0x00A0
+#define VK_RSHIFT 0xA1
+#define WM_NCLBUTTONDOWN 0x00A1
+#define VK_LCONTROL 0xA2
+#define WM_NCLBUTTONUP 0x00A2
+#define VK_RCONTROL 0xA3
+#define WM_NCLBUTTONDBLCLK 0x00A3
+#define VK_LMENU 0xA4
+#define WM_NCRBUTTONDOWN 0x00A4
+#define VK_RMENU 0xA5
+#define WM_NCRBUTTONUP 0x00A5
+#define VK_BROWSER_BACK 0xA6
+#define WM_NCRBUTTONDBLCLK 0x00A6
+#define VK_BROWSER_FORWARD 0xA7
+#define WM_NCMBUTTONDOWN 0x00A7
+#define VK_BROWSER_REFRESH 0xA8
+#define WM_NCMBUTTONUP 0x00A8
+#define VK_BROWSER_STOP 0xA9
+#define WM_NCMBUTTONDBLCLK 0x00A9
+#define VK_BROWSER_SEARCH 0xAA
+#define VK_BROWSER_FAVORITES 0xAB
+#define WM_NCXBUTTONDOWN 0x00AB
+#define VK_BROWSER_HOME 0xAC
+#define WM_NCXBUTTONUP 0x00AC
+#define VK_VOLUME_MUTE 0xAD
+#define WM_NCXBUTTONDBLCLK 0x00AD
+#define VK_VOLUME_DOWN 0xAE
+#define VK_VOLUME_UP 0xAF
+#define VK_MEDIA_NEXT_TRACK 0xB0
+#define EM_GETSEL 0x00B0
+#define VK_MEDIA_PREV_TRACK 0xB1
+#define EM_SETSEL 0x00B1
+#define VK_MEDIA_STOP 0xB2
+#define EM_GETRECT 0x00B2
+#define VK_MEDIA_PLAY_PAUSE 0xB3
+#define EM_SETRECT 0x00B3
+#define VK_LAUNCH_MAIL 0xB4
+#define EM_SETRECTNP 0x00B4
+#define VK_LAUNCH_MEDIA_SELECT 0xB5
+#define EM_SCROLL 0x00B5
+#define VK_LAUNCH_APP1 0xB6
+#define EM_LINESCROLL 0x00B6
+#define VK_LAUNCH_APP2 0xB7
+#define EM_SCROLLCARET 0x00B7
+#define EM_GETMODIFY 0x00B8
+#define WIZ_BODYCX 184
+#define EM_SETMODIFY 0x00B9
+#define VK_OEM_1 0xBA
+#define EM_GETLINECOUNT 0x00BA
+#define VK_OEM_PLUS 0xBB
+#define EM_LINEINDEX 0x00BB
+#define VK_OEM_COMMA 0xBC
+#define EM_SETHANDLE 0x00BC
+#define PROP_SM_CYDLG 188
+#define VK_OEM_MINUS 0xBD
+#define EM_GETHANDLE 0x00BD
+#define VK_OEM_PERIOD 0xBE
+#define EM_GETTHUMB 0x00BE
+#define VK_OEM_2 0xBF
+#define VK_OEM_3 0xC0
+#define EM_LINELENGTH 0x00C1
+#define EM_REPLACESEL 0x00C2
+#define EM_GETLINE 0x00C4
+#define EM_LIMITTEXT 0x00C5
+#define EM_CANUNDO 0x00C6
+#define EM_UNDO 0x00C7
+#define EM_FMTLINES 0x00C8
+#define EM_LINEFROMCHAR 0x00C9
+#define EM_SETTABSTOPS 0x00CB
+#define EM_SETPASSWORDCHAR 0x00CC
+#define EM_EMPTYUNDOBUFFER 0x00CD
+#define EM_GETFIRSTVISIBLELINE 0x00CE
+#define EM_SETREADONLY 0x00CF
+#define EM_SETWORDBREAKPROC 0x00D0
+#define EM_GETWORDBREAKPROC 0x00D1
+#define EM_GETPASSWORDCHAR 0x00D2
+#define EM_SETMARGINS 0x00D3
+#define EM_GETMARGINS 0x00D4
+#define PROP_SM_CXDLG 212
+#define EM_GETLIMITTEXT 0x00D5
+#define EM_POSFROMCHAR 0x00D6
+#define EM_CHARFROMPOS 0x00D7
+#define PROP_MED_CYDLG 215
+#define EM_SETIMESTATUS 0x00D8
+#define EM_GETIMESTATUS 0x00D9
+#define PROP_LG_CYDLG 218
+#define VK_OEM_4 0xDB
+#define VK_OEM_5 0xDC
+#define VK_OEM_6 0xDD
+#define VK_OEM_7 0xDE
+#define VK_OEM_8 0xDF
+#define VK_OEM_AX 0xE1
+#define VK_OEM_102 0xE2
+#define VK_ICO_HELP 0xE3
+#define PROP_MED_CXDLG 227
+#define VK_ICO_00 0xE4
+#define VK_PROCESSKEY 0xE5
+#define VK_ICO_CLEAR 0xE6
+#define VK_PACKET 0xE7
+#define VK_OEM_RESET 0xE9
+#define VK_OEM_JUMP 0xEA
+#define VK_OEM_PA1 0xEB
+#define VK_OEM_PA2 0xEC
+#define VK_OEM_PA3 0xED
+#define VK_OEM_WSCTRL 0xEE
+#define VK_OEM_CUSEL 0xEF
+#define VK_OEM_ATTN 0xF0
+#define BM_GETCHECK 0x00F0
+#define VK_OEM_FINISH 0xF1
+#define BM_SETCHECK 0x00F1
+#define VK_OEM_COPY 0xF2
+#define BM_GETSTATE 0x00F2
+#define VK_OEM_AUTO 0xF3
+#define BM_SETSTATE 0x00F3
+#define VK_OEM_ENLW 0xF4
+#define BM_SETSTYLE 0x00F4
+#define VK_OEM_BACKTAB 0xF5
+#define BM_CLICK 0x00F5
+#define VK_ATTN 0xF6
+#define BM_GETIMAGE 0x00F6
+#define VK_CRSEL 0xF7
+#define BM_SETIMAGE 0x00F7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define PROP_LG_CXDLG 252
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+#define ILC_COLORDDB 0x000000FE
+#define CFU_INVERT 0xFE
+#define ICC_WIN95_CLASSES 0x000000FF
+#define SB_SIMPLEID 0x00ff
+#define CFU_CF1UNDERLINE 0xFF
+#define WM_KEYFIRST 0x0100
+#define WM_KEYDOWN 0x0100
+#define WVR_HREDRAW 0x0100
+#define HDS_FILTERBAR 0x0100
+#define RBS_TOOLTIPS 0x0100
+#define SBARS_SIZEGRIP 0x0100
+#define TBS_TOOLTIPS 0x0100
+#define UDS_HOTTRACK 0x0100
+#define LVS_AUTOARRANGE 0x0100
+#define TVS_CHECKBOXES 0x0100
+#define TCS_BUTTONS 0x0100
+#define PSH_USECALLBACK 0x00000100
+#define ICC_DATE_CLASSES 0x00000100
+#define CDIS_INDETERMINATE 0x0100
+#define HDI_FILTER 0x0100
+#define HHT_ABOVE 0x0100
+#define TBSTYLE_TOOLTIPS 0x0100
+#define HICF_TOGGLEDROPDOWN 0x00000100
+#define RBBS_NOGRIPPER 0x00000100
+#define RBBIM_ID 0x00000100
+#define TTF_TRANSPARENT 0x0100
+#define SBT_NOBORDERS 0x0100
+#define LVNI_ABOVE 0x0100
+#define LVS_EX_FLATSB 0x00000100
+#define TVHT_ABOVE 0x0100
+#define SES_ALLOWBEEPS 256
+#define ECO_NOHIDESEL 0x00000100
+#define WBF_LEVEL2 0x100
+#define IMF_FORCEREMEMBER 0x0100
+#define CFM_HIDDEN 0x0100
+#define PFM_LINESPACING 0x00000100
+#define PFNS_PARENS 0x100
+#define WM_KEYUP 0x0101
+#define WM_CHAR 0x0102
+#define WM_DEADCHAR 0x0103
+#define WM_SYSKEYDOWN 0x0104
+#define CBEMAXSTRLEN 260
+#define WM_SYSKEYUP 0x0105
+#define WM_SYSCHAR 0x0106
+#define WM_SYSDEADCHAR 0x0107
+#define WM_KEYLAST 0x0108
+#define WM_UNICHAR 0x0109
+#define WM_IME_STARTCOMPOSITION 0x010D
+#define WM_IME_ENDCOMPOSITION 0x010E
+#define WM_IME_COMPOSITION 0x010F
+#define WM_IME_KEYLAST 0x010F
+#define WM_INITDIALOG 0x0110
+#define WM_COMMAND 0x0111
+#define WM_SYSCOMMAND 0x0112
+#define WM_TIMER 0x0113
+#define WM_HSCROLL 0x0114
+#define WIZ_CXDLG 276
+#define WM_VSCROLL 0x0115
+#define WM_INITMENU 0x0116
+#define WM_INITMENUPOPUP 0x0117
+#define WM_MENUSELECT 0x011F
+#define WM_MENUCHAR 0x0120
+#define WM_ENTERIDLE 0x0121
+#define WM_MENURBUTTONUP 0x0122
+#define WM_MENUDRAG 0x0123
+#define WM_MENUGETOBJECT 0x0124
+#define WM_UNINITMENUPOPUP 0x0125
+#define WM_MENUCOMMAND 0x0126
+#define WM_CHANGEUISTATE 0x0127
+#define WM_UPDATEUISTATE 0x0128
+#define WM_QUERYUISTATE 0x0129
+#define WM_CTLCOLORMSGBOX 0x0132
+#define WM_CTLCOLOREDIT 0x0133
+#define WM_CTLCOLORLISTBOX 0x0134
+#define WM_CTLCOLORBTN 0x0135
+#define WM_CTLCOLORDLG 0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC 0x0138
+#define MN_GETHMENU 0x01E1
+#define WM_MOUSEFIRST 0x0200
+#define WM_MOUSEMOVE 0x0200
+#define WVR_VREDRAW 0x0200
+#define CS_NOCLOSE 0x0200
+#define CF_PRIVATEFIRST 0x0200
+#define RBS_VARHEIGHT 0x0200
+#define TBS_REVERSED 0x0200
+#define LVS_EDITLABELS 0x0200
+#define TVS_TRACKSELECT 0x0200
+#define TCS_MULTILINE 0x0200
+#define PSH_HASHELP 0x00000200
+#define ICC_USEREX_CLASSES 0x00000200
+#define HHT_BELOW 0x0200
+#define TBSTYLE_WRAPABLE 0x0200
+#define RBBS_USECHEVRON 0x00000200
+#define RBBIM_IDEALSIZE 0x00000200
+#define SBT_POPOUT 0x0200
+#define LVNI_BELOW 0x0200
+#define LVS_EX_REGIONAL 0x00000200
+#define TVHT_BELOW 0x0200
+#define SES_UPPERCASE 512
+#define WBF_CUSTOM 0x200
+#define CFM_OUTLINE 0x0200
+#define PFNS_PERIOD 0x200
+#define WM_LBUTTONDOWN 0x0201
+#define WM_LBUTTONUP 0x0202
+#define WM_LBUTTONDBLCLK 0x0203
+#define WM_RBUTTONDOWN 0x0204
+#define WM_RBUTTONUP 0x0205
+#define WM_RBUTTONDBLCLK 0x0206
+#define WM_MBUTTONDOWN 0x0207
+#define WM_MBUTTONUP 0x0208
+#define WM_MBUTTONDBLCLK 0x0209
+#define WM_MOUSEWHEEL 0x020A
+#define WM_XBUTTONDOWN 0x020B
+#define WM_XBUTTONUP 0x020C
+#define WM_XBUTTONDBLCLK 0x020D
+#define WM_MOUSELAST 0x020D
+#define WM_PARENTNOTIFY 0x0210
+#define WM_ENTERMENULOOP 0x0211
+#define WM_EXITMENULOOP 0x0212
+#define WM_NEXTMENU 0x0213
+#define WM_SIZING 0x0214
+#define WM_CAPTURECHANGED 0x0215
+#define WM_MOVING 0x0216
+#define WM_POWERBROADCAST 0x0218
+#define WM_DEVICECHANGE 0x0219
+#define WM_MDICREATE 0x0220
+#define WM_MDIDESTROY 0x0221
+#define WM_MDIACTIVATE 0x0222
+#define WM_MDIRESTORE 0x0223
+#define WM_MDINEXT 0x0224
+#define WM_MDIMAXIMIZE 0x0225
+#define WM_MDITILE 0x0226
+#define WM_MDICASCADE 0x0227
+#define WM_MDIICONARRANGE 0x0228
+#define WM_MDIGETACTIVE 0x0229
+#define WM_MDISETMENU 0x0230
+#define WM_ENTERSIZEMOVE 0x0231
+#define WM_EXITSIZEMOVE 0x0232
+#define WM_DROPFILES 0x0233
+#define WM_MDIREFRESHMENU 0x0234
+#define WM_IME_SETCONTEXT 0x0281
+#define WM_IME_NOTIFY 0x0282
+#define WM_IME_CONTROL 0x0283
+#define WM_IME_COMPOSITIONFULL 0x0284
+#define WM_IME_SELECT 0x0285
+#define WM_IME_CHAR 0x0286
+#define WM_IME_REQUEST 0x0288
+#define WM_IME_KEYDOWN 0x0290
+#define WM_IME_KEYUP 0x0291
+#define WM_NCMOUSEHOVER 0x02A0
+#define WM_MOUSEHOVER 0x02A1
+#define WM_NCMOUSELEAVE 0x02A2
+#define WM_MOUSELEAVE 0x02A3
+#define lDefaultTab 720
+#define CF_PRIVATELAST 0x02FF
+#define WM_CUT 0x0300
+#define CF_GDIOBJFIRST 0x0300
+#define _RICHEDIT_VER 0x0300
+#define PFNS_PLAIN 0x300
+#define WM_COPY 0x0301
+#define WM_PASTE 0x0302
+#define WM_CLEAR 0x0303
+#define WM_UNDO 0x0304
+#define WM_RENDERFORMAT 0x0305
+#define WM_RENDERALLFORMATS 0x0306
+#define WM_DESTROYCLIPBOARD 0x0307
+#define WM_DRAWCLIPBOARD 0x0308
+#define WM_PAINTCLIPBOARD 0x0309
+#define WM_VSCROLLCLIPBOARD 0x030A
+#define WM_SIZECLIPBOARD 0x030B
+#define WM_ASKCBFORMATNAME 0x030C
+#define WM_CHANGECBCHAIN 0x030D
+#define WM_HSCROLLCLIPBOARD 0x030E
+#define WM_QUERYNEWPALETTE 0x030F
+#define WM_PALETTEISCHANGING 0x0310
+#define WM_PALETTECHANGED 0x0311
+#define WM_HOTKEY 0x0312
+#define WM_PRINT 0x0317
+#define WM_PRINTCLIENT 0x0318
+#define WM_APPCOMMAND 0x0319
+#define WM_HANDHELDFIRST 0x0358
+#define WM_HANDHELDLAST 0x035F
+#define WM_AFXFIRST 0x0360
+#define WM_AFXLAST 0x037F
+#define WM_PENWINFIRST 0x0380
+#define WM_PENWINLAST 0x038F
+#define WM_DDE_FIRST 0x03E0
+#define IDC_EDIT1 1000
+#define CF_GDIOBJLAST 0x03FF
+#define WM_USER 0x0400
+#define WVR_VALIDRECTS 0x0400
+#define RBS_BANDBORDERS 0x0400
+#define TBS_DOWNISLEFT 0x0400
+#define LVS_OWNERDRAWFIXED 0x0400
+#define TVS_SINGLEEXPAND 0x0400
+#define TCS_FIXEDWIDTH 0x0400
+#define ctlFirst 0x0400
+#define psh1 0x0400
+#define PSP_PREMATURE 0x00000400
+#define PSH_MODELESS 0x00000400
+#define ICC_COOL_CLASSES 0x00000400
+#define INFOTIPSIZE 1024
+#define HHT_TORIGHT 0x0400
+#define TBSTYLE_ALTDRAG 0x0400
+#define RBBS_HIDETITLE 0x00000400
+#define RBBIM_LPARAM 0x00000400
+#define SBT_RTLREADING 0x0400
+#define LVNI_TOLEFT 0x0400
+#define LVS_EX_INFOTIP 0x00000400
+#define TVHT_TORIGHT 0x0400
+#define SES_LOWERCASE 1024
+#define IMF_MULTIPLEEDIT 0x0400
+#define CFM_SHADOW 0x0400
+#define PFM_STYLE 0x00000400
+#define PFNS_NONUMBER 0x400
+#define psh2 0x0401
+#define psh3 0x0402
+#define psh4 0x0403
+#define psh5 0x0404
+#define psh6 0x0405
+#define psh7 0x0406
+#define psh8 0x0407
+#define psh9 0x0408
+#define psh10 0x0409
+#define psh11 0x040a
+#define psh12 0x040b
+#define psh13 0x040c
+#define psh14 0x040d
+#define psh15 0x040e
+#define psh16 0x040f
+#define _WIN32_WINDOWS 0x0410
+#define chx1 0x0410
+#define chx2 0x0411
+#define chx3 0x0412
+#define chx4 0x0413
+#define chx5 0x0414
+#define chx6 0x0415
+#define chx7 0x0416
+#define chx8 0x0417
+#define chx9 0x0418
+#define chx10 0x0419
+#define chx11 0x041a
+#define chx12 0x041b
+#define chx13 0x041c
+#define chx14 0x041d
+#define chx15 0x041e
+#define chx16 0x041f
+#define rad1 0x0420
+#define rad2 0x0421
+#define rad3 0x0422
+#define rad4 0x0423
+#define rad5 0x0424
+#define rad6 0x0425
+#define rad7 0x0426
+#define rad8 0x0427
+#define rad9 0x0428
+#define rad10 0x0429
+#define rad11 0x042a
+#define rad12 0x042b
+#define rad13 0x042c
+#define rad14 0x042d
+#define rad15 0x042e
+#define rad16 0x042f
+#define grp1 0x0430
+#define grp2 0x0431
+#define grp3 0x0432
+#define grp4 0x0433
+#define frm1 0x0434
+#define frm2 0x0435
+#define frm3 0x0436
+#define frm4 0x0437
+#define rct1 0x0438
+#define rct2 0x0439
+#define rct3 0x043a
+#define rct4 0x043b
+#define ico1 0x043c
+#define ico2 0x043d
+#define ico3 0x043e
+#define ico4 0x043f
+#define stc1 0x0440
+#define stc2 0x0441
+#define stc3 0x0442
+#define stc4 0x0443
+#define stc5 0x0444
+#define stc6 0x0445
+#define stc7 0x0446
+#define stc8 0x0447
+#define stc9 0x0448
+#define stc10 0x0449
+#define stc11 0x044a
+#define stc12 0x044b
+#define stc13 0x044c
+#define stc14 0x044d
+#define stc15 0x044e
+#define stc16 0x044f
+#define stc17 0x0450
+#define stc18 0x0451
+#define stc19 0x0452
+#define stc20 0x0453
+#define stc21 0x0454
+#define stc22 0x0455
+#define stc23 0x0456
+#define stc24 0x0457
+#define stc25 0x0458
+#define stc26 0x0459
+#define stc27 0x045a
+#define stc28 0x045b
+#define stc29 0x045c
+#define stc30 0x045d
+#define stc31 0x045e
+#define stc32 0x045f
+#define lst1 0x0460
+#define lst2 0x0461
+#define lst3 0x0462
+#define lst4 0x0463
+#define lst5 0x0464
+#define lst6 0x0465
+#define lst7 0x0466
+#define lst8 0x0467
+#define lst9 0x0468
+#define lst10 0x0469
+#define lst11 0x046a
+#define lst12 0x046b
+#define lst13 0x046c
+#define lst14 0x046d
+#define lst15 0x046e
+#define lst16 0x046f
+#define cmb1 0x0470
+#define cmb2 0x0471
+#define cmb3 0x0472
+#define cmb4 0x0473
+#define cmb5 0x0474
+#define cmb6 0x0475
+#define cmb7 0x0476
+#define cmb8 0x0477
+#define cmb9 0x0478
+#define cmb10 0x0479
+#define cmb11 0x047a
+#define cmb12 0x047b
+#define cmb13 0x047c
+#define cmb14 0x047d
+#define cmb15 0x047e
+#define cmb16 0x047f
+#define edt1 0x0480
+#define edt2 0x0481
+#define edt3 0x0482
+#define edt4 0x0483
+#define edt5 0x0484
+#define edt6 0x0485
+#define edt7 0x0486
+#define edt8 0x0487
+#define edt9 0x0488
+#define edt10 0x0489
+#define edt11 0x048a
+#define edt12 0x048b
+#define edt13 0x048c
+#define edt14 0x048d
+#define edt15 0x048e
+#define edt16 0x048f
+#define scr1 0x0490
+#define scr2 0x0491
+#define scr3 0x0492
+#define scr4 0x0493
+#define scr5 0x0494
+#define scr6 0x0495
+#define scr7 0x0496
+#define scr8 0x0497
+#define ctl1 0x04A0
+#define ctlLast 0x04ff
+#define _WIN32_WINNT 0x0500
+#define WINVER 0x0501
+#define _WIN32_IE 0x0501
+#define FILEOPENORD 1536
+#define MULTIFILEOPENORD 1537
+#define PRINTDLGORD 1538
+#define PRNSETUPDLGORD 1539
+#define FINDDLGORD 1540
+#define REPLACEDLGORD 1541
+#define FONTDLGORD 1542
+#define FORMATDLGORD31 1543
+#define FORMATDLGORD30 1544
+#define RUNDLGORD 1545
+#define PAGESETUPDLGORD 1546
+#define NEWFILEOPENORD 1547
+#define PRINTDLGEXORD 1549
+#define PAGESETUPDLGORDMOTIF 1550
+#define COLORMGMTDLGORD 1551
+#define NEWFILEOPENV2ORD 1552
+#define yHeightCharPtsMost 1638
+#define EN_MSGFILTER 0x0700
+#define SF_RTFVAL 0x0700
+#define EN_REQUESTRESIZE 0x0701
+#define EN_SELCHANGE 0x0702
+#define EN_DROPFILES 0x0703
+#define EN_PROTECTED 0x0704
+#define EN_CORRECTTEXT 0x0705
+#define EN_STOPNOUNDO 0x0706
+#define EN_IMECHANGE 0x0707
+#define EN_SAVECLIPBOARD 0x0708
+#define EN_OLEOPFAILED 0x0709
+#define EN_OBJECTPOSITIONS 0x070a
+#define EN_LINK 0x070b
+#define EN_DRAGDROPDONE 0x070c
+#define EN_PARAGRAPHEXPANDED 0x070d
+#define EN_PAGECHANGE 0x070e
+#define EN_LOWFIRTF 0x070f
+#define EN_ALIGNLTR 0x0710
+#define EN_ALIGNRTL 0x0711
+#define IDC_PROPERTYGRID 2000
+#define CS_SAVEBITS 0x0800
+#define RBS_FIXEDORDER 0x0800
+#define SBARS_TOOLTIPS 0x0800
+#define SBT_TOOLTIPS 0x0800
+#define LVS_ALIGNLEFT 0x0800
+#define TVS_INFOTIP 0x0800
+#define TCS_RAGGEDRIGHT 0x0800
+#define PSP_HIDEHEADER 0x00000800
+#define PSH_RTLREADING 0x00000800
+#define ICC_INTERNET_CLASSES 0x00000800
+#define ILC_PALETTE 0x00000800
+#define HDF_IMAGE 0x0800
+#define HHT_TOLEFT 0x0800
+#define TBSTYLE_FLAT 0x0800
+#define RBBS_TOPALIGN 0x00000800
+#define RBBIM_HEADERSIZE 0x00000800
+#define SBT_NOTABPARSING 0x0800
+#define LVIF_NORECOMPUTE 0x0800
+#define LVNI_TORIGHT 0x0800
+#define LVCFMT_IMAGE 0x0800
+#define LVS_EX_UNDERLINEHOT 0x00000800
+#define TVHT_TOLEFT 0x0800
+#define SES_NOINPUTSEQUENCECHK 2048
+#define ECO_READONLY 0x00000800
+#define CFM_EMBOSS 0x0800
+#define SFF_PWD 0x0800
+#define PFM_BORDER 0x00000800
+#define LVS_ALIGNMASK 0x0c00
+#define ILD_OVERLAYMASK 0x00000F00
+#define LVIS_OVERLAYMASK 0x0F00
+#define TVIS_OVERLAYMASK 0x0F00
+#define CS_BYTEALIGNCLIENT 0x1000
+#define RBS_REGISTERDROP 0x1000
+#define LVS_OWNERDATA 0x1000
+#define TVS_FULLROWSELECT 0x1000
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define PSP_USEHEADERTITLE 0x00001000
+#define PSH_WIZARDCONTEXTHELP 0x00001000
+#define ICC_PAGESCROLLER_CLASS 0x00001000
+#define LVM_FIRST 0x1000
+#define ILD_PRESERVEALPHA 0x00001000
+#define HDF_BITMAP_ON_RIGHT 0x1000
+#define TBSTYLE_LIST 0x1000
+#define TTF_PARSELINKS 0x1000
+#define SBT_OWNERDRAW 0x1000
+#define LVCFMT_BITMAP_ON_RIGHT 0x1000
+#define LVS_EX_UNDERLINECOLD 0x00001000
+#define LVIF_DI_SETITEM 0x1000
+#define TVIF_DI_SETITEM 0x1000
+#define MCM_FIRST 0x1000
+#define DTM_FIRST 0x1000
+#define SES_BIDI 4096
+#define ECO_WANTRETURN 0x00001000
+#define CFM_IMPRINT 0x1000
+#define SFF_KEEPDOCINFO 0x1000
+#define PFM_SHADING 0x00001000
+#define TV_FIRST 0x1100
+#define HDM_FIRST 0x1200
+#define TCM_FIRST 0x1300
+#define PGM_FIRST 0x1400
+#define CS_BYTEALIGNWINDOW 0x2000
+#define RBS_AUTOSIZE 0x2000
+#define LVS_NOSCROLL 0x2000
+#define TVS_NOSCROLL 0x2000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define PSP_USEHEADERSUBTITLE 0x00002000
+#define ICC_NATIVEFNTCTL_CLASS 0x00002000
+#define CCM_FIRST 0x2000
+#define ILD_SCALE 0x00002000
+#define HDF_BITMAP 0x2000
+#define TBSTYLE_CUSTOMERASE 0x2000
+#define LVS_EX_MULTIWORKAREAS 0x00002000
+#define SES_SCROLLONKILLFOCUS 8192
+#define ES_DISABLENOSCROLL 0x00002000
+#define CFM_DISABLED 0x2000
+#define SFF_PERSISTVIEWSCALE 0x2000
+#define PFM_NUMBERINGSTYLE 0x00002000
+#define CS_GLOBALCLASS 0x4000
+#define RBS_VERTICALGRIPPER 0x4000
+#define LVS_NOCOLUMNHEADER 0x4000
+#define TVS_NONEVENHEIGHT 0x4000
+#define TCS_TOOLTIPS 0x4000
+#define ILD_DPISCALE 0x00004000
+#define HDF_STRING 0x4000
+#define TBSTYLE_REGISTERDROP 0x4000
+#define LVS_EX_LABELTIP 0x00004000
+#define TVE_EXPANDPARTIAL 0x4000
+#define SES_XLTCRCRLFTOCR 16384
+#define ES_SUNKEN 0x00004000
+#define CFM_REVISED 0x4000
+#define SFF_PLAINRTF 0x4000
+#define PFM_NUMBERINGTAB 0x00004000
+#define MSGF_COMMCTRL_BEGINDRAG 0x4200
+#define MSGF_COMMCTRL_SIZEHEADER 0x4201
+#define MSGF_COMMCTRL_DRAGSELECT 0x4202
+#define MSGF_COMMCTRL_TOOLBARCUST 0x4203
+#define IDH_NO_HELP 28440
+#define IDH_MISSING_CONTEXT 28441
+#define IDH_GENERIC_HELP_BUTTON 28442
+#define IDH_OK 28443
+#define IDH_CANCEL 28444
+#define IDH_HELP 28445
+#define IDTIMEOUT 32000
+#define OCR_NORMAL 32512
+#define OIC_SAMPLE 32512
+#define IDI_APPLICATION 32512
+#define OCR_IBEAM 32513
+#define OIC_HAND 32513
+#define IDI_HAND 32513
+#define OCR_WAIT 32514
+#define OIC_QUES 32514
+#define IDI_QUESTION 32514
+#define OCR_CROSS 32515
+#define OIC_BANG 32515
+#define IDI_EXCLAMATION 32515
+#define OCR_UP 32516
+#define OIC_NOTE 32516
+#define IDI_ASTERISK 32516
+#define OIC_WINLOGO 32517
+#define IDI_WINLOGO 32517
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OCR_NO 32648
+#define OCR_HAND 32649
+#define OCR_APPSTARTING 32650
+#define OBM_LFARROWI 32734
+#define OBM_RGARROWI 32735
+#define OBM_DNARROWI 32736
+#define OBM_UPARROWI 32737
+#define OBM_COMBO 32738
+#define OBM_MNARROW 32739
+#define OBM_LFARROWD 32740
+#define OBM_RGARROWD 32741
+#define OBM_DNARROWD 32742
+#define OBM_UPARROWD 32743
+#define OBM_RESTORED 32744
+#define OBM_ZOOMD 32745
+#define OBM_REDUCED 32746
+#define OBM_RESTORE 32747
+#define OBM_ZOOM 32748
+#define OBM_REDUCE 32749
+#define OBM_LFARROW 32750
+#define OBM_RGARROW 32751
+#define OBM_DNARROW 32752
+#define OBM_UPARROW 32753
+#define OBM_CLOSE 32754
+#define OBM_OLD_RESTORE 32755
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_REDUCE 32757
+#define OBM_BTNCORNERS 32758
+#define OBM_CHECKBOXES 32759
+#define OBM_CHECK 32760
+#define OBM_BTSIZE 32761
+#define OBM_OLD_LFARROW 32762
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_UPARROW 32765
+#define OBM_SIZE 32766
+#define OBM_OLD_CLOSE 32767
+#define UD_MAXVAL 0x7fff
+#define cchTextLimitDefault 32767
+#define WM_APP 0x8000
+#define HELP_TCARD 0x8000
+#define RBS_DBLCLKTOGGLE 0x8000
+#define LVS_NOSORTHEADER 0x8000
+#define TVS_NOHSCROLL 0x8000
+#define TCS_FOCUSNEVER 0x8000
+#define PSH_WATERMARK 0x00008000
+#define HDFT_HASNOVALUE 0x8000
+#define HDF_OWNERDRAW 0x8000
+#define TBSTYLE_TRANSPARENT 0x8000
+#define TTF_DI_SETITEM 0x8000
+#define LVCFMT_COL_HAS_IMAGES 0x8000
+#define LVS_EX_BORDERSELECT 0x00008000
+#define TVE_COLLAPSERESET 0x8000
+#define SES_DRAFTMODE 32768
+#define ES_SAVESEL 0x00008000
+#define ECO_SAVESEL 0x00008000
+#define CFM_REVAUTHOR 0x00008000
+#define SFF_SELECTION 0x8000
+#define PFM_NUMBERINGSTART 0x00008000
+#define PFNS_NEWNUMBER 0x8000
+#define GCM_RIGHTMOUSEDROP 0x8000
+#define SC_SIZE 0xF000
+#define LVIS_STATEIMAGEMASK 0xF000
+#define TVIS_STATEIMAGEMASK 0xF000
+#define TVIS_USERMASK 0xF000
+#define SC_SEPARATOR 0xF00F
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_MAXIMIZE 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+#define SC_DEFAULT 0xF160
+#define SC_MONITORPOWER 0xF170
+#define SC_CONTEXTHELP 0xF180
+#define LVS_TYPESTYLEMASK 0xfc00
+#define HTERROR -2
+#define I_IMAGENONE -2
+#define LVSCW_AUTOSIZE_USEHEADER -2
+#define PWR_FAIL -1
+#define HTTRANSPARENT -1
+#define I_INDENTCALLBACK -1
+#define I_IMAGECALLBACK -1
+#define LVSCW_AUTOSIZE -1
+#define I_CHILDRENCALLBACK -1
+#define GDT_ERROR -1
+#define DPA_ERR -1
+#define DSA_ERR -1
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 102
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/src/include/DataModel/BaseButtonInstance.h b/src/include/DataModel/BaseButtonInstance.h
deleted file mode 100644
index 1e48e6d..0000000
--- a/src/include/DataModel/BaseButtonInstance.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "Instance.h"
-#include "Listener/ButtonListener.h"
-
-class ButtonListener;
-class Instance;
-
-class BaseButtonInstance : public Instance
-{
-public:
- BaseButtonInstance(void);
- virtual ~BaseButtonInstance(void);
- virtual void render(RenderDevice* rd);
- virtual void drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown);
- virtual bool mouseInButton(float, float, RenderDevice* rd);
- virtual void onMouseClick();
- void setButtonListener(ButtonListener&);
- bool floatBottom;
- bool floatRight;
- bool floatCenter;
- volatile bool disabled;
- bool selected;
-protected:
- bool mouseInArea(float, float, float, float, float, float);
- class ButtonListener* listener;
-};
diff --git a/src/include/DataModel/DataModelInstance.h b/src/include/DataModel/DataModelInstance.h
deleted file mode 100644
index fb0d19a..0000000
--- a/src/include/DataModel/DataModelInstance.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#pragma once
-#include "WorkspaceInstance.h"
-#include "LevelInstance.h"
-#include "PartInstance.h"
-#include "rapidxml/rapidxml.hpp"
-#include "GuiRootInstance.h"
-
-class GuiRootInstance;
-
-class DataModelInstance :
- public Instance
-{
-public:
- DataModelInstance(void);
- ~DataModelInstance(void);
- void setMessage(std::string);
- void setMessageBrickCount();
- void clearMessage();
- bool debugGetOpen();
- bool getOpen();
- bool load(const char* filename,bool clearObjects);
- bool readXMLFileStream(std::ifstream* file);
- void drawMessage(RenderDevice*);
- WorkspaceInstance* getWorkspace();
- LevelInstance * getLevel();
- std::string message;
- std::string _loadedFileName;
- bool showMessage;
- G3D::GFontRef font;
- GuiRootInstance* getGuiRoot();
- //float mousex;
- //float mousey;
- //Vector2 getMousePos();
- //void setMousePos(int x,int y);
- //void setMousePos(Vector2 pos);
- //bool mouseButton1Down;
- PartInstance* makePart();
- void clearLevel();
- void toggleRun();
- bool isRunning();
-#if _DEBUG
- void modXMLLevel(float modY);
-#endif
-private:
- bool isBrickCount;
- bool scanXMLObject(rapidxml::xml_node<>* node);
- rapidxml::xml_node<>* getNode(rapidxml::xml_node<> * node,const char* name );
- float getFloatValue(rapidxml::xml_node<> * node,const char* name);
- bool _successfulLoad;
- std::string _errMsg;
- bool _legacyLoad;
- float _modY;
- WorkspaceInstance* workspace;
- LevelInstance * level;
- GuiRootInstance* guiRoot;
- bool running;
-};
diff --git a/src/include/DataModel/GroupInstance.h b/src/include/DataModel/GroupInstance.h
deleted file mode 100644
index 08baed3..0000000
--- a/src/include/DataModel/GroupInstance.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-#include "PartInstance.h"
-
-class GroupInstance :
- public PVInstance
-{
-public:
- GroupInstance(void);
- ~GroupInstance(void);
- GroupInstance(const GroupInstance &oinst);
- virtual std::vector getProperties();
- virtual void PropUpdate(LPPROPGRIDITEM &pItem);
- std::vector unGroup();
- PartInstance * primaryPart;
- void render(RenderDevice * r);
-};
diff --git a/src/include/DataModel/GuiRootInstance.h b/src/include/DataModel/GuiRootInstance.h
deleted file mode 100644
index 5f916d0..0000000
--- a/src/include/DataModel/GuiRootInstance.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-#include "Instance.h"
-
-class ImageButtonInstance;
-
-class TextButtonInstance;
-
-class GuiRootInstance : public Instance
-{
-public:
- GuiRootInstance();
- GuiRootInstance::~GuiRootInstance();
- TextButtonInstance* makeTextButton();
- void drawButtons(RenderDevice* rd);
- ImageButtonInstance* makeImageButton(G3D::TextureRef newImage, G3D::TextureRef overImage, G3D::TextureRef downImage, G3D::TextureRef disableImage);
- void renderGUI(G3D::RenderDevice* rd, double fps);
- void setDebugMessage(std::string msg, G3D::RealTime msgTime);
- void update();
- bool mouseInGUI(G3D::RenderDevice* renderDevice,int x,int y);
- void onMouseLeftUp(G3D::RenderDevice* renderDevice, int x,int y);
-private:
- std::string _message;
- G3D::RealTime _messageTime;
-};
\ No newline at end of file
diff --git a/src/include/DataModel/ImageButtonInstance.h b/src/include/DataModel/ImageButtonInstance.h
deleted file mode 100644
index 9b1dfd8..0000000
--- a/src/include/DataModel/ImageButtonInstance.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-#include "BaseButtonInstance.h"
-
-class BaseButtonInstance;
-
-class ImageButtonInstance : public BaseButtonInstance
-{
-public:
- //ImageButtonInstance(G3D::TextureRef);
- //ImageButtonInstance(G3D::TextureRef,G3D::TextureRef);
- //ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef);
- ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef,G3D::TextureRef);
- ~ImageButtonInstance(void);
- void drawObj(RenderDevice*, Vector2, bool);
- Vector2 size;
- Vector2 position;
-
- G3D::TextureRef image;
- int openGLID;
- G3D::TextureRef image_ovr;
- int openGLID_ovr;
- G3D::TextureRef image_dn;
- int openGLID_dn;
- G3D::TextureRef image_ds;
- int openGLID_ds;
- bool mouseInButton(float, float, RenderDevice*);
-};
diff --git a/src/include/DataModel/Instance.h b/src/include/DataModel/Instance.h
deleted file mode 100644
index 7e25dce..0000000
--- a/src/include/DataModel/Instance.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-#include
-#include "propertyGrid.h"
-#include "map"
-
-class Instance
-{
-public:
- bool canDelete;
- Instance(void);
- Instance(const Instance&);
- virtual ~Instance(void);
- std::string name;
- virtual void render(RenderDevice*);
- virtual void update();
- std::vector children; // All children.
- std::string getClassName();
- Instance* findFirstChild(std::string);
- std::vector getChildren();
- std::vector getAllChildren();
- virtual void setParent(Instance*);
- void setName(std::string newName);
- void addChild(Instance*);
- void removeChild(Instance*);
- void clearChildren();
- Instance* getParent();
- virtual Instance* clone() const { return new Instance(*this); }
- virtual std::vector getProperties();
- virtual void PropUpdate(LPPROPGRIDITEM &pItem);
- int listicon;
-protected:
- std::string className;
- Instance* parent; // Another pointer.
- PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[] = NULL);
-private:
- static const std::map g_logLevelsDescriptions;
-};
diff --git a/src/include/DataModel/LevelInstance.h b/src/include/DataModel/LevelInstance.h
deleted file mode 100644
index f29ca78..0000000
--- a/src/include/DataModel/LevelInstance.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-#include "instance.h"
-
-class LevelInstance :
- public Instance
-{
-public:
- LevelInstance(void);
- ~LevelInstance(void);
- float timer;
- int score;
- virtual std::vector getProperties();
- std::string winMessage;
- std::string loseMessage;
- virtual void PropUpdate(LPPROPGRIDITEM &pItem);
-};
diff --git a/src/include/DataModel/PVInstance.h b/src/include/DataModel/PVInstance.h
deleted file mode 100644
index c22436f..0000000
--- a/src/include/DataModel/PVInstance.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#pragma once
-#include "instance.h"
-#include "enum.h"
-
-class PVInstance :
- public Instance
-{
-public:
- PVInstance(void);
- ~PVInstance(void);
- PVInstance(const PVInstance &oinst);
- virtual void postRender(RenderDevice* rd);
- virtual std::vector getProperties();
- virtual void PropUpdate(LPPROPGRIDITEM &pItem);
- bool nameShown;
- bool controllerFlagShown;
- Enum::Controller::Value controller;
-protected:
- static G3D::Color3 getControllerColor(int controller)
- {
- switch(controller)
- {
- case Enum::Controller::KeyboardLeft:
- return Color3::red();
- case Enum::Controller::KeyboardRight:
- return Color3::blue();
- case Enum::Controller::Chase:
- return Color3::black();
- case Enum::Controller::Flee:
- return Color3::yellow();
- }
- return Color3::gray();
- }
-};
diff --git a/src/include/DataModel/PartInstance.h b/src/include/DataModel/PartInstance.h
deleted file mode 100644
index 6df56b7..0000000
--- a/src/include/DataModel/PartInstance.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#pragma once
-#include "PVInstance.h"
-#include "Enum.h"
-#define _USE_MATH_DEFINES
-#include
-
-#define NEW_BOX_RENDER
-
-class PartInstance : public PVInstance
-{
-public:
-
- PartInstance(void);
- PartInstance(const PartInstance &oinst);
- Instance* clone() const { return new PartInstance(*this); }
- virtual void PartInstance::postRender(RenderDevice* rd);
- ~PartInstance(void);
- virtual void render(RenderDevice*);
- Enum::SurfaceType::Value top;
- Enum::SurfaceType::Value front;
- Enum::SurfaceType::Value right;
- Enum::SurfaceType::Value back;
- Enum::SurfaceType::Value left;
- Enum::SurfaceType::Value bottom;
- Enum::Shape::Value shape;
- CoordinateFrame cFrame;
- Color3 color;
- Vector3 getPosition();
- Vector3 getVelocity();
- Vector3 getRotVelocity();
- void setParent(Instance* parent);
- void setPosition(Vector3);
- void setVelocity(Vector3);
- bool collides(PartInstance * part);
- void setRotVelocity(Vector3);
- CoordinateFrame getCFrame();
- void setCFrame(CoordinateFrame);
- Box getBox();
- Sphere getSphere();
- Box getScaledBox();
- CoordinateFrame getCFrameRenderBased();
- Vector3 getSize();
- void setSize(Vector3);
- void setShape(Enum::Shape::Value shape);
- bool canCollide;
- bool anchored;
- bool collides(Box);
- virtual std::vector getProperties();
- virtual void PropUpdate(LPPROPGRIDITEM &pItem);
- #ifdef NEW_BOX_RENDER
- void addVertex(Vector3 vertexPos,Color3 color);
- void addNormals(Vector3 normal);
- void addSingularNormal(Vector3 normal);
- void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
- void addQuad(Vector3 v1,Vector3 v2, Vector3 v3, Vector3 v4);
- void genSmoothNormals(int);
- void addSmoothTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
- void makeSmoothFace(int vertex1, int vertex2, int vertex3);
- void addPlus(Vector3 v1);
- void addPlus2(Vector3 v1);
- void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
- void makeFace(int vertex1, int vertex2, int vertex3);
- void fromArrays(float verts[], float norms[], float ind[], unsigned int countVN, unsigned int countInd);
- bool isUniqueVertex(Vector3 pos);
- #endif
-private:
- Vector3 position;
- Vector3 size;
- Vector3 velocity;
- Vector3 rotVelocity;
- float _bevelSize;
- int _parseVert;
- int _debugTimer;
- std::vector _debugUniqueVertices;
- #ifdef NEW_BOX_RENDER
- std::vector _vertices;
- std::vector _normals;
- #else
- GLfloat _vertices[96];
- #endif
- std::vector _indices;
- bool changed;
- Box itemBox;
- GLuint glList;
-};
diff --git a/src/include/DataModel/TextButtonInstance.h b/src/include/DataModel/TextButtonInstance.h
deleted file mode 100644
index cc53f7f..0000000
--- a/src/include/DataModel/TextButtonInstance.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#pragma once
-#include "BaseButtonInstance.h"
-class TextButtonInstance : public BaseButtonInstance
-{
-public:
- TextButtonInstance(void);
- ~TextButtonInstance(void);
- void setAllColorsSame();
- Vector2 boxBegin;
- Vector2 boxEnd;
- Vector2 fontLocationRelativeTo;
- Color4 textColor;
- Color4 textOutlineColor;
- Color4 boxColor;
- Color4 boxOutlineColor;
- Color4 textColorOvr;
- Color4 textOutlineColorOvr;
- Color4 boxColorOvr;
- Color4 boxOutlineColorOvr;
- Color4 textColorDn;
- Color4 textOutlineColorDn;
- Color4 boxColorDn;
- Color4 boxOutlineColorDn;
- Color4 textColorDis;
- Color4 textOutlineColorDis;
- Color4 boxColorDis;
- Color4 boxOutlineColorDis;
- bool centeredWithinBox;
- std::string title;
- G3D::GFontRef font;
- bool visible;
- int textSize;
- void drawObj(RenderDevice*, Vector2, bool);
- bool mouseInButton(float, float, RenderDevice*);
-};
\ No newline at end of file
diff --git a/src/include/DataModel/ToggleImageButtonInstance.h b/src/include/DataModel/ToggleImageButtonInstance.h
deleted file mode 100644
index 0e6f685..0000000
--- a/src/include/DataModel/ToggleImageButtonInstance.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-#include "imagebuttoninstance.h"
-
-
-class ToggleImageButtonInstance : public ImageButtonInstance
-{
-public:
- //ImageButtonInstance(G3D::TextureRef);
- //ImageButtonInstance(G3D::TextureRef,G3D::TextureRef);
- //ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef);
- ToggleImageButtonInstance(G3D::TextureRef newImage,G3D::TextureRef overImage = NULL,
- G3D::TextureRef downImage = NULL,
- G3D::TextureRef disableImage = NULL,
- G3D::TextureRef newImage2 = NULL,
- G3D::TextureRef overImage2 = NULL,
- G3D::TextureRef downImage2 = NULL,
- G3D::TextureRef disableImage2 = NULL);
- ~ToggleImageButtonInstance(void);
- void drawObj(RenderDevice*, Vector2, bool);
- bool checked;
- G3D::TextureRef image2;
- int openGLID2;
- G3D::TextureRef image_ovr2;
- int openGLID2_ovr;
- G3D::TextureRef image_dn2;
- int openGLID2_dn;
- G3D::TextureRef image_ds2;
- int openGLID2_ds;
-};
diff --git a/src/include/DataModel/WorkspaceInstance.h b/src/include/DataModel/WorkspaceInstance.h
deleted file mode 100644
index c854d6d..0000000
--- a/src/include/DataModel/WorkspaceInstance.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-#include "GroupInstance.h"
-#include "PartInstance.h"
-
-class WorkspaceInstance :
- public GroupInstance
-{
-public:
- WorkspaceInstance(void);
- ~WorkspaceInstance(void);
- std::vector partObjects;
-};
diff --git a/src/include/DataModelV2/BaseGuiInstance.h b/src/include/DataModelV2/BaseGuiInstance.h
new file mode 100644
index 0000000..1f8895d
--- /dev/null
+++ b/src/include/DataModelV2/BaseGuiInstance.h
@@ -0,0 +1,49 @@
+#pragma once
+#include "Instance.h"
+
+struct UDim
+{
+ float scale;
+ float offset;
+ UDim()
+ {
+ scale = offset = 0;
+ }
+ UDim(float scale_, float offset_)
+ {
+ scale = scale_;
+ offset = offset_;
+ }
+};
+
+struct UDim2
+{
+ UDim x;
+ UDim y;
+ UDim2(UDim x_, UDim y_)
+ {
+ x = x_;
+ y = y_;
+ }
+ UDim2(float scale_x, float offset_x, float scale_y, float offset_y)
+ {
+ x = UDim(scale_x, offset_x);
+ y = UDim(scale_y, offset_y);
+ }
+};
+
+class Instance;
+
+class BaseGuiInstance : public Instance
+{
+public:
+ BaseGuiInstance(void);
+ virtual ~BaseGuiInstance(void);
+ virtual void render(RenderDevice* rd);
+ virtual bool mouseHovered(float, float, RenderDevice* rd);
+ UDim2 position;
+ UDim2 size;
+protected:
+ bool mouseInArea(float, float, float, float, float, float);
+ class ButtonListener* listener;
+};
diff --git a/src/source/Application.cpp b/src/source/Application.cpp
index b7467e3..24120dd 100644
--- a/src/source/Application.cpp
+++ b/src/source/Application.cpp
@@ -153,6 +153,7 @@ void Application::navigateToolbox(std::string path)
void Application::deleteInstance()
{
+ int deletedInstances = 0;
if(g_selectedInstances.size() > 0)
{
size_t undeletable = 0;
@@ -160,7 +161,7 @@ void Application::deleteInstance()
{
if(g_selectedInstances.at(0)->canDelete)
{
- AudioPlayer::playSound(GetFileInPath("/content/sounds/pageturn.wav"));
+ deletedInstances++;
Instance* selectedInstance = g_selectedInstances.at(0);
selectedInstance->setParent(NULL);
delete selectedInstance;
@@ -173,6 +174,8 @@ void Application::deleteInstance()
}
}
}
+ if(deletedInstances > 0)
+ AudioPlayer::playSound(GetFileInPath("/content/sounds/pageturn.wav"));
if(g_selectedInstances.size() == 0)
g_usableApp->_propWindow->ClearProperties();
}
diff --git a/src/source/DataModel/BaseButtonInstance.cpp b/src/source/DataModel/BaseButtonInstance.cpp
deleted file mode 100644
index 4a31eb2..0000000
--- a/src/source/DataModel/BaseButtonInstance.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "DataModel/BaseButtonInstance.h"
-#include "Globals.h"
-#include "Application.h"
-
-
-ButtonListener* listener = NULL;
-
-BaseButtonInstance::BaseButtonInstance(void)
-{
- Instance::Instance();
- listener = NULL;
-}
-
-void BaseButtonInstance::render(RenderDevice* rd)
-{
- DataModelInstance* dataModel = g_dataModel;
- Vector2 pos = Vector2(g_usableApp->mouse.x,g_usableApp->mouse.y);
- drawObj(rd, pos, g_usableApp->mouse.isMouseDown());
- Instance::render(rd);
-}
-
-BaseButtonInstance::~BaseButtonInstance(void)
-{
- if(listener != NULL && listener->doDelete)
- {
- delete listener;
- listener = NULL;
- }
-}
-
-void BaseButtonInstance::setButtonListener(ButtonListener& buttonListener)
-{
- listener = buttonListener;
-}
-
-void BaseButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown){}
-
-bool BaseButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd){return false;}
-
-void BaseButtonInstance::onMouseClick()
-{
- if(listener != NULL)
- {
- listener->onButton1MouseClick(this);
-
- }
-}
-
-
-bool BaseButtonInstance::mouseInArea(float point1x, float point1y, float point2x, float point2y, float mousex, float mousey)
-{
-
-
- if(mousex >= point1x && mousey >= point1y)
- {
- if(mousex < point2x && mousey < point2y)
- {
- return true;
- }
- }
- return false;
-}
\ No newline at end of file
diff --git a/src/source/DataModel/DataModelInstance.cpp b/src/source/DataModel/DataModelInstance.cpp
deleted file mode 100644
index 1ac2fdc..0000000
--- a/src/source/DataModel/DataModelInstance.cpp
+++ /dev/null
@@ -1,613 +0,0 @@
-#include
-#include "DataModel/GuiRootInstance.h"
-#include "DataModel/DataModelInstance.h"
-#include
-#include
-#include
-#include
-#include "ErrorFunctions.h"
-
-using namespace std;
-using namespace rapidxml;
-
-
-DataModelInstance::DataModelInstance(void)
-{
- Instance::Instance();
- workspace = new WorkspaceInstance();
- guiRoot = new GuiRootInstance();
- level = new LevelInstance();
- //children.push_back(workspace);
- //children.push_back(level);
- className = "dataModel";
- //mousex = 0;
- //mousey = 0;
- //mouseButton1Down = false;
- showMessage = false;
- canDelete = false;
- _modY=0;
- workspace->setParent(this);
- level->setParent(this);
- _loadedFileName="..//skooter.rbxm";
- listicon = 5;
- running = false;
-
-}
-
-void DataModelInstance::toggleRun()
-{
- running = !running;
-}
-bool DataModelInstance::isRunning()
-{
- return running;
-}
-
-DataModelInstance::~DataModelInstance(void)
-{
-}
-
-#ifdef _DEBUG
-void DataModelInstance::modXMLLevel(float modY)
-{
- _modY += modY;
- clearLevel();
- debugGetOpen();
-
-}
-#endif
-
-void DataModelInstance::clearLevel()
-{
- workspace->clearChildren();
-}
-PartInstance* DataModelInstance::makePart()
-{
- PartInstance* part = new PartInstance();
- return part;
-}
-
-rapidxml::xml_node<>* DataModelInstance::getNode(xml_node<> * node,const char* name)
-{
- xml_node<> * tempNode = node->first_node(name);
- if (!tempNode)
- {
- _errMsg = "Expected <";
- _errMsg += name;
- _errMsg+="> tag.";
- _successfulLoad=false;
- return 0;
- }
- return tempNode;
-}
-float DataModelInstance::getFloatValue(xml_node<> * node,const char* name)
-{
- xml_node<> * tempNode = node->first_node(name);
- if (!tempNode)
- {
- _errMsg = "Expected <";
- _errMsg += name;
- _errMsg+="> tag.";
- _successfulLoad=false;
- return 0;
- }
- float newFloat;
- stringstream converter;
- converter << tempNode->value();
- converter >> newFloat;
- return newFloat;
-}
-
-
-Color3 bcToRGB(short bc)
-{
- switch(bc)
- {
- case 1: return Color3(0.94901967048645F,0.95294123888016F,0.95294123888016F);
- case 2: return Color3(0.63137257099152F,0.64705884456635F,0.63529413938522F);
- case 3: return Color3(0.9764706492424F,0.91372555494308F,0.60000002384186F);
- case 5: return Color3(0.84313732385635F,0.77254909276962F,0.60392159223557F);
- case 6: return Color3(0.7607843875885F,0.85490202903748F,0.72156864404678F);
- case 9: return Color3(0.90980398654938F,0.7294117808342F,0.78431379795074F);
- case 11: return Color3(0.50196081399918F,0.73333334922791F,0.85882359743118F);
- case 12: return Color3(0.79607850313187F,0.51764708757401F,0.258823543787F);
- case 18: return Color3(0.80000007152557F,0.55686277151108F,0.41176474094391F);
- case 21: return Color3(0.76862752437592F,0.15686275064945F,0.10980392992496F);
- case 22: return Color3(0.76862752437592F,0.43921571969986F,0.62745100259781F);
- case 23: return Color3(0.050980396568775F,0.41176474094391F,0.6745098233223F);
- case 24: return Color3(0.96078437566757F,0.80392163991928F,0.18823531270027F);
- case 25: return Color3(0.38431376218796F,0.27843138575554F,0.19607844948769F);
- case 26: return Color3(0.10588236153126F,0.16470588743687F,0.20784315466881F);
- case 27: return Color3(0.42745101451874F,0.43137258291245F,0.42352944612503F);
- case 28: return Color3(0.15686275064945F,0.49803924560547F,0.27843138575554F);
- case 29: return Color3(0.63137257099152F,0.76862752437592F,0.54901963472366F);
- case 36: return Color3(0.95294123888016F,0.8117647767067F,0.60784316062927F);
- case 37: return Color3(0.29411765933037F,0.59215688705444F,0.29411765933037F);
- case 38: return Color3(0.62745100259781F,0.37254902720451F,0.20784315466881F);
- case 39: return Color3(0.75686281919479F,0.79215693473816F,0.8705883026123F);
- case 40: return Color3(0.92549026012421F,0.92549026012421F,0.92549026012421F);
- case 41: return Color3(0.80392163991928F,0.32941177487373F,0.29411765933037F);
- case 42: return Color3(0.75686281919479F,0.87450987100601F,0.94117653369904F);
- case 43: return Color3(0.48235297203064F,0.71372550725937F,0.90980398654938F);
- case 44: return Color3(0.96862751245499F,0.94509810209274F,0.55294120311737F);
- case 45: return Color3(0.70588237047195F,0.82352948188782F,0.89411771297455F);
- case 47: return Color3(0.85098046064377F,0.52156865596771F,0.42352944612503F);
- case 48: return Color3(0.51764708757401F,0.71372550725937F,0.55294120311737F);
- case 49: return Color3(0.97254908084869F,0.94509810209274F,0.51764708757401F);
- case 50: return Color3(0.92549026012421F,0.90980398654938F,0.8705883026123F);
- case 100: return Color3(0.93333339691162F,0.76862752437592F,0.71372550725937F);
- case 101: return Color3(0.85490202903748F,0.52549022436142F,0.47843140363693F);
- case 102: return Color3(0.43137258291245F,0.60000002384186F,0.79215693473816F);
- case 103: return Color3(0.78039222955704F,0.75686281919479F,0.71764707565308F);
- case 104: return Color3(0.41960787773132F,0.19607844948769F,0.48627454042435F);
- case 105: return Color3(0.88627457618713F,0.60784316062927F,0.25098040699959F);
- case 106: return Color3(0.85490202903748F,0.52156865596771F,0.2549019753933F);
- case 107: return Color3(0,0.56078433990479F,0.61176472902298F);
- case 108: return Color3(0.4078431725502F,0.36078432202339F,0.26274511218071F);
- case 110: return Color3(0.26274511218071F,0.32941177487373F,0.57647061347961F);
- case 111: return Color3(0.74901962280273F,0.71764707565308F,0.69411766529083F);
- case 112: return Color3(0.4078431725502F,0.45490199327469F,0.6745098233223F);
- case 113: return Color3(0.89411771297455F,0.678431391716F,0.78431379795074F);
- case 115: return Color3(0.78039222955704F,0.82352948188782F,0.23529413342476F);
- case 116: return Color3(0.33333334326744F,0.64705884456635F,0.68627452850342F);
- case 118: return Color3(0.71764707565308F,0.84313732385635F,0.83529418706894F);
- case 119: return Color3(0.64313727617264F,0.74117648601532F,0.27843138575554F);
- case 120: return Color3(0.85098046064377F,0.89411771297455F,0.65490198135376F);
- case 121: return Color3(0.90588241815567F,0.6745098233223F,0.34509804844856F);
- case 123: return Color3(0.82745105028152F,0.43529415130615F,0.29803922772408F);
- case 124: return Color3(0.57254904508591F,0.22352942824364F,0.47058826684952F);
- case 125: return Color3(0.91764712333679F,0.72156864404678F,0.57254904508591F);
- case 126: return Color3(0.64705884456635F,0.64705884456635F,0.79607850313187F);
- case 127: return Color3(0.86274516582489F,0.73725491762161F,0.50588238239288F);
- case 128: return Color3(0.68235296010971F,0.47843140363693F,0.34901961684227F);
- case 131: return Color3(0.61176472902298F,0.63921570777893F,0.65882354974747F);
- case 133: return Color3(0.83529418706894F,0.45098042488098F,0.23921570181847F);
- case 134: return Color3(0.84705889225006F,0.8666667342186F,0.33725491166115F);
- case 135: return Color3(0.45490199327469F,0.52549022436142F,0.61568629741669F);
- case 136: return Color3(0.52941179275513F,0.48627454042435F,0.56470590829849F);
- case 137: return Color3(0.87843143939972F,0.59607845544815F,0.39215689897537F);
- case 138: return Color3(0.58431375026703F,0.54117649793625F,0.45098042488098F);
- case 140: return Color3(0.12549020349979F,0.22745099663734F,0.33725491166115F);
- case 141: return Color3(0.15294118225574F,0.27450981736183F,0.17647059261799F);
- case 143: return Color3(0.8117647767067F,0.88627457618713F,0.96862751245499F);
- case 145: return Color3(0.47450983524323F,0.53333336114883F,0.63137257099152F);
- case 146: return Color3(0.58431375026703F,0.55686277151108F,0.63921570777893F);
- case 147: return Color3(0.57647061347961F,0.52941179275513F,0.40392160415649F);
- case 148: return Color3(0.34117648005486F,0.34509804844856F,0.34117648005486F);
- case 149: return Color3(0.086274512112141F,0.11372549831867F,0.19607844948769F);
- case 150: return Color3(0.67058825492859F,0.678431391716F,0.6745098233223F);
- case 151: return Color3(0.47058826684952F,0.56470590829849F,0.50980395078659F);
- case 153: return Color3(0.58431375026703F,0.47450983524323F,0.46666669845581F);
- case 154: return Color3(0.48235297203064F,0.1803921610117F,0.1843137294054F);
- case 157: return Color3(1,0.96470594406128F,0.48235297203064F);
- case 158: return Color3(0.88235300779343F,0.64313727617264F,0.7607843875885F);
- case 168: return Color3(0.4588235616684F,0.42352944612503F,0.38431376218796F);
- case 176: return Color3(0.59215688705444F,0.41176474094391F,0.35686275362968F);
- case 178: return Color3(0.70588237047195F,0.51764708757401F,0.33333334326744F);
- case 179: return Color3(0.53725492954254F,0.52941179275513F,0.53333336114883F);
- case 180: return Color3(0.84313732385635F,0.66274511814117F,0.29411765933037F);
- case 190: return Color3(0.9764706492424F,0.83921575546265F,0.1803921610117F);
- case 191: return Color3(0.90980398654938F,0.67058825492859F,0.17647059261799F);
- case 192: return Color3(0.41176474094391F,0.25098040699959F,0.15686275064945F);
- case 193: return Color3(0.8117647767067F,0.37647062540054F,0.14117647707462F);
- case 195: return Color3(0.27450981736183F,0.40392160415649F,0.64313727617264F);
- case 196: return Color3(0.13725490868092F,0.27843138575554F,0.54509806632996F);
- case 198: return Color3(0.55686277151108F,0.258823543787F,0.52156865596771F);
- case 199: return Color3(0.38823533058167F,0.37254902720451F,0.38431376218796F);
- case 200: return Color3(0.50980395078659F,0.54117649793625F,0.3647058904171F);
- case 208: return Color3(0.89803928136826F,0.89411771297455F,0.87450987100601F);
- case 209: return Color3(0.69019609689713F,0.55686277151108F,0.26666668057442F);
- case 210: return Color3(0.43921571969986F,0.58431375026703F,0.47058826684952F);
- case 211: return Color3(0.47450983524323F,0.70980393886566F,0.70980393886566F);
- case 212: return Color3(0.6235294342041F,0.76470595598221F,0.91372555494308F);
- case 213: return Color3(0.42352944612503F,0.50588238239288F,0.71764707565308F);
- case 216: return Color3(0.56078433990479F,0.29803922772408F,0.16470588743687F);
- case 217: return Color3(0.48627454042435F,0.36078432202339F,0.27450981736183F);
- case 218: return Color3(0.58823531866074F,0.43921571969986F,0.6235294342041F);
- case 219: return Color3(0.41960787773132F,0.38431376218796F,0.60784316062927F);
- case 220: return Color3(0.65490198135376F,0.66274511814117F,0.80784320831299F);
- case 221: return Color3(0.80392163991928F,0.38431376218796F,0.59607845544815F);
- case 222: return Color3(0.89411771297455F,0.678431391716F,0.78431379795074F);
- case 223: return Color3(0.86274516582489F,0.56470590829849F,0.58431375026703F);
- case 224: return Color3(0.94117653369904F,0.83529418706894F,0.62745100259781F);
- case 225: return Color3(0.9215686917305F,0.72156864404678F,0.49803924560547F);
- case 226: return Color3(0.99215692281723F,0.91764712333679F,0.55294120311737F);
- case 232: return Color3(0.49019610881805F,0.73333334922791F,0.8666667342186F);
- case 268: return Color3(0.2039215862751F,0.16862745583057F,0.4588235616684F);
- case 1001: return Color3(0.97254908084869F,0.97254908084869F,0.97254908084869F);
- case 1002: return Color3(0.80392163991928F,0.80392163991928F,0.80392163991928F);
- case 1003: return Color3(0.066666670143604F,0.066666670143604F,0.066666670143604F);
- case 1004: return Color3(1,0,0);
- case 1005: return Color3(1,0.68627452850342F,0);
- case 1006: return Color3(0.70588237047195F,0.50196081399918F,1);
- case 1007: return Color3(0.63921570777893F,0.29411765933037F,0.29411765933037F);
- case 1008: return Color3(0.75686281919479F,0.74509805440903F,0.258823543787F);
- case 1009: return Color3(1,1,0);
- case 1010: return Color3(0,0,1);
- case 1011: return Color3(0,0.12549020349979F,0.37647062540054F);
- case 1012: return Color3(0.1294117718935F,0.32941177487373F,0.72549021244049F);
- case 1013: return Color3(0.015686275437474F,0.68627452850342F,0.92549026012421F);
- case 1014: return Color3(0.66666668653488F,0.33333334326744F,0);
- case 1015: return Color3(0.66666668653488F,0,0.66666668653488F);
- case 1016: return Color3(1,0.40000003576279F,0.80000007152557F);
- case 1017: return Color3(1,0.68627452850342F,0);
- case 1018: return Color3(0.070588238537312F,0.93333339691162F,0.83137261867523F);
- case 1019: return Color3(0,1,1);
- case 1020: return Color3(0,1,0);
- case 1021: return Color3(0.22745099663734F,0.49019610881805F,0.082352943718433F);
- case 1022: return Color3(0.49803924560547F,0.55686277151108F,0.39215689897537F);
- case 1023: return Color3(0.54901963472366F,0.35686275362968F,0.6235294342041F);
- case 1024: return Color3(0.68627452850342F,0.8666667342186F,1);
- case 1025: return Color3(1,0.78823536634445F,0.78823536634445F);
- case 1026: return Color3(0.69411766529083F,0.65490198135376F,1);
- case 1027: return Color3(0.6235294342041F,0.95294123888016F,0.91372555494308F);
- case 1028: return Color3(0.80000007152557F,1,0.80000007152557F);
- case 1029: return Color3(1,1,0.80000007152557F);
- case 1030: return Color3(1,0.80000007152557F,0.60000002384186F);
- case 1031: return Color3(0.38431376218796F,0.14509804546833F,0.81960791349411F);
- case 1032: return Color3(1,0,0.74901962280273F);
- default: return Color3::gray();
- }
-}
-
-
-
-bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
-{
- xml_node<> * watchFirstNode = scanNode->first_node();
-
- for (xml_node<> *node = scanNode->first_node();node; node = node->next_sibling())
- {
-
- if (strncmp(node->name(),"Item",4)==0)
- {
- xml_attribute<> *classAttr = node->first_attribute("class");
- std::string className = classAttr->value();
- if (className=="Part") {
- xml_node<> *propNode = node->first_node();
- xml_node<> *cFrameNode=0;
- xml_node<> *sizeNode=0;
- xml_node<> *shapeNode=0;
- xml_node<> *colorNode=0;
- xml_node<> *brickColorNode=0;
- xml_node<> *nameNode=0;
-
- for (xml_node<> *partPropNode = propNode->first_node();partPropNode; partPropNode = partPropNode->next_sibling())
- {
- for (xml_attribute<> *attr = partPropNode->first_attribute();attr; attr = attr->next_attribute())
- {
- std::string xmlName = attr->name();
- std::string xmlValue = attr->value();
-
- if (xmlValue=="CFrame" | xmlValue=="CoordinateFrame")
- {
- cFrameNode = partPropNode;
- }
- if (xmlValue=="Name")
- {
- nameNode = partPropNode;
- }
- if (xmlValue=="shape")
- {
- shapeNode = partPropNode;
- _legacyLoad=false;
- }
- if (xmlValue=="Color")
- {
- colorNode=partPropNode;
- }
- if (xmlValue=="BrickColor")
- {
- brickColorNode=partPropNode;
- }
- if (xmlValue=="size")
- {
- sizeNode = partPropNode;
- _legacyLoad=false;
- }
- if (xmlValue=="Part")
- {
- for (xml_node<> *featureNode = partPropNode->first_node();featureNode; featureNode = featureNode->next_sibling())
- {
- for (xml_attribute<> *attr = featureNode->first_attribute();attr; attr = attr->next_attribute())
- {
- std::string xmlName = attr->name();
- std::string xmlValue = attr->value();
- if (xmlValue=="shape")
- {
- shapeNode = featureNode;
- _legacyLoad=true;
- }
- if (xmlValue=="size")
- {
- sizeNode=featureNode;
- _legacyLoad=true;
- }
- }
- }
- }
- }
- }
-
- if (!cFrameNode) {
- _errMsg="CFrame is missing in Part";
- return false;
- }
- if (!sizeNode) {
- _errMsg="Size is missing in Part";
- return false;
- }
-
- float R=1;
- float G=1;
- float B=1;
-
- if (colorNode)
- {
- R = getFloatValue(colorNode,"R");
- G = getFloatValue(colorNode,"G");
- B = getFloatValue(colorNode,"B");
- }
-
- Enum::Shape::Value partshape = Enum::Shape::Block;
- std::string pshape = shapeNode->value();
- if (shapeNode)
- {
- if(pshape == "0" || pshape == "Ball"){
- partshape = Enum::Shape::Ball;
- }
- if(pshape == "1" || pshape == "Block"){
- partshape = Enum::Shape::Block;
- }
- if(pshape == "2" || pshape == "Cylinder"){
- partshape = Enum::Shape::Cylinder;
- }
- }
-
- std::string newName = nameNode->value();
- float X = getFloatValue(cFrameNode,"X");
- float Y = getFloatValue(cFrameNode,"Y");
- float Z = getFloatValue(cFrameNode,"Z");
- float R00 = getFloatValue(cFrameNode,"R00");
- float R01 = getFloatValue(cFrameNode,"R01");
- float R02 = getFloatValue(cFrameNode,"R02");
- float R10 = getFloatValue(cFrameNode,"R10");
- float R11 = getFloatValue(cFrameNode,"R11");
- float R12 = getFloatValue(cFrameNode,"R12");
- float R20 = getFloatValue(cFrameNode,"R20");
- float R21 = getFloatValue(cFrameNode,"R21");
- float R22 = getFloatValue(cFrameNode,"R22");
-
- float sizeX = getFloatValue(sizeNode,"X");
- float sizeY = getFloatValue(sizeNode,"Y");
- float sizeZ = getFloatValue(sizeNode,"Z");
- //sizeX=1;
- //sizeY=1;
- //sizeZ=1;
- if (_successfulLoad) {
- PartInstance* test = makePart();
- test->setParent(getWorkspace());
- test->color = Color3(R,G,B);
- test->shape = partshape;
- if(brickColorNode)
- {
- test->color = bcToRGB(atoi(brickColorNode->value()));
- }
- test->setSize(Vector3(sizeX,sizeY+_modY,sizeZ));
- test->setName(newName);
- CoordinateFrame cf;
-
- if (_legacyLoad)
- {
-
- cf = CoordinateFrame(Vector3(-X,Y,Z))*CoordinateFrame(Vector3(-sizeX/2,(sizeY+_modY)/2,sizeZ/2)*Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22));
- cf.rotation = Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22);
- }
- else
- {
- cf.translation = Vector3(X,Y,Z);
- cf.rotation = Matrix3(R00,R01,R02,R10,R11,R12,R20,R21,R22);
- }
-
- test->setCFrame(cf);
- }
- else
- {
- return false;
- }
-
- }
- }
- /*
- for (xml_attribute<> *attr = node->first_attribute();attr; attr = attr->next_attribute())
- {
- std::string xmlName = attr->name();
- std::string xmlValue = attr->value();
- }
- */
- scanXMLObject(node);
- }
-
- return true;
-}
-
-bool DataModelInstance::load(const char* filename, bool clearObjects)
-{
- ifstream levelFile(filename,ios::binary);
- if (levelFile)
- {
- if (clearObjects)
- clearLevel();
- readXMLFileStream(&levelFile);
- std::string sfilename = std::string(filename);
- std::size_t begin = sfilename.rfind('\\') + 1;
- std::size_t end = sfilename.find(".rbx");
- std::string hname = sfilename.substr(begin);
- std::string tname = hname.substr(0, hname.length() - 5);
- name = tname;
- return true;
- }
- else
- {
- std::stringstream msg;
- msg << "Failed to load file:" << std::endl << filename << std::endl << strerror(errno);
- MessageBoxStr(msg.str());
- return false;
- }
-}
-
-bool DataModelInstance::readXMLFileStream(std::ifstream* file)
-{
- file->seekg(0,file->end);
- int length = file->tellg();
- if (length<0)
- {
- MessageBoxStr("File is empty");
- file->close();
- return false;
- }
- file->seekg(0,file->beg);
- char * buffer = new char[length+1];
- buffer[length]=0;
-
- file->read(buffer,length);
- file->close();
-
- if (!file)
- {
- stringstream msg;
- msg << "Something went wrong." << endl << strerror(errno);
- MessageBoxStr(msg.str());
- return false;
- }
- _successfulLoad = true;
- xml_document<> doc;
- doc.parse<0>(buffer);
- xml_node<> *mainNode = doc.first_node();
- _legacyLoad=false;
- //std::string xmlName = mainNode->name();
- //node = node->first_node();
- //xmlName = node->name();
- scanXMLObject(mainNode);
- delete[] buffer;
- return true;
-}
-
-bool DataModelInstance::debugGetOpen()
-{
- ifstream levelFile(_loadedFileName.c_str(),ios::binary);
- if (levelFile)
- readXMLFileStream(&levelFile);
- else
- getOpen();
- return true;
-}
-
-bool DataModelInstance::getOpen()
-{
- _modY=0;
- OPENFILENAME of;
- ZeroMemory( &of , sizeof( of));
- of.lStructSize = sizeof(OPENFILENAME);
- of.lpstrFilter = "Roblox Files\0*.rbxm;*.rbxl\0\0";
- char szFile[512];
- of.lpstrFile = szFile ;
- of.lpstrFile[0]='\0';
- of.nMaxFile=500;
- of.lpstrTitle="Hello";
- of.Flags = OFN_FILEMUSTEXIST;
- ShowCursor(TRUE);
- BOOL file = GetOpenFileName(&of);
- if (file)
- {
- _loadedFileName = of.lpstrFile;
- load(of.lpstrFile,true);
- }
- return true;
-}
-void DataModelInstance::setMessage(std::string msg)
-{
- message = msg;
- isBrickCount = false;
- showMessage = true;
-}
-
-void DataModelInstance::clearMessage()
-{
- showMessage = false;
- isBrickCount = false;
- message = "";
-}
-
-void DataModelInstance::setMessageBrickCount()
-{
- isBrickCount = true;
- showMessage = true;
-}
-
-void DataModelInstance::drawMessage(RenderDevice* rd)
-{
- if(isBrickCount)
- {
- int brickCount = 0;
- int instCount = 0;
- std::vector inst = getAllChildren();
- for(size_t i = 0; i < inst.size(); i++)
- {
- if(PartInstance* moveTo = dynamic_cast(inst.at(i)))
- {
- brickCount++;
- }
- else
- {
- instCount++;
- }
- }
- char brkc[12];
- sprintf_s(brkc, "%d", brickCount);
- char instc[12];
- sprintf_s(instc, "%d", instCount);
- message = "Bricks: ";
- message += brkc;
- message += " Snaps: ";
- message += instc;
- }
- if(showMessage && !font.isNull())
- {
- int x = rd->getWidth()/2;
- int y = rd->getHeight()/2;
- int width = rd->getWidth()/2 + 100;
- int height = width / 3;
- Draw::box(Box(Vector3(x-(width/2), y-(height/2), 0), Vector3(x+(width/2), y+(height/2), 0)), rd, Color4::fromARGB(0x55B2B2B2), Color3::fromARGB(0xB2B2B2));
- font->draw2D(rd, message, Vector2(x,y), height/8, Color3::white(), Color4::clear(), GFont::XALIGN_CENTER, GFont::YALIGN_CENTER);
- }
-}
-
-WorkspaceInstance* DataModelInstance::getWorkspace()
-{
- return workspace;
-}
-/*Vector2 DataModelInstance::getMousePos()
-{
- return Vector2(mousex,mousey);
-}
-void DataModelInstance::setMousePos(int x,int y)
-{
- mousex=x;
- mousey=y;
-}
-void DataModelInstance::setMousePos(Vector2 pos)
-{
- mousex=pos.x;
- mousey=pos.y;
-}*/
-GuiRootInstance* DataModelInstance::getGuiRoot()
-{
- return guiRoot;
-}
-
-
-LevelInstance* DataModelInstance::getLevel()
-{
- return level;
-}
\ No newline at end of file
diff --git a/src/source/DataModel/GroupInstance.cpp b/src/source/DataModel/GroupInstance.cpp
deleted file mode 100644
index 959e191..0000000
--- a/src/source/DataModel/GroupInstance.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "DataModel/GroupInstance.h"
-
-GroupInstance::GroupInstance(void)
-{
- PVInstance::PVInstance();
- name = "Model";
- className = "GroupInstance";
- listicon = 12;
- primaryPart = NULL;
-}
-
-GroupInstance::GroupInstance(const GroupInstance &oinst)
-{
- PVInstance::PVInstance(oinst);
- name = "Model";
- className = "GroupInstance";
- listicon = 12;
- primaryPart = NULL;
-}
-
-GroupInstance::~GroupInstance(void)
-{
-}
-
-std::vector GroupInstance::getProperties()
-{
- std::vector properties = PVInstance::getProperties();
- return properties;
-}
-void GroupInstance::PropUpdate(LPPROPGRIDITEM &pItem)
-{
- PVInstance::PropUpdate(pItem);
-}
-
-std::vector GroupInstance::unGroup()
-{
- std::vector child;
- while(children.size() > 0)
- {
- child.push_back(children[0]);
- children[0]->setParent(parent);
- }
- return child;
-}
-
-void GroupInstance::render(RenderDevice * rd)
-{
- Instance::render(rd);
- if(primaryPart != NULL && controllerFlagShown && getControllerColor(controller) != Color3::gray())
- {
- rd->disableLighting();
- Vector3 vec = Vector3(0,0,0);
- Vector3 up = Vector3(0,8,0);
- rd->setColor(getControllerColor(controller));
- rd->setObjectToWorldMatrix(primaryPart->cFrame);
- rd->beforePrimitive();
-
- glBegin(GL_LINES);
- glVertex3f(vec.x, vec.y, vec.z);
- glVertex3f(up.x, up.y, up.z);
- glEnd();
-
- glBegin( GL_TRIANGLES );
- glVertex3f(up.x, up.y-2, up.z);
- glVertex3f(up.x, up.y-1, up.z-2);
- glVertex3f(up.x, up.y, up.z);
-
- glVertex3f(up.x, up.y, up.z);
- glVertex3f(up.x, up.y-1, up.z-2);
- glVertex3f(up.x, up.y-2, up.z);
-
- glEnd();
- rd->afterPrimitive();
- rd->setColor(Color3::white());
- rd->enableLighting();
- }
-}
\ No newline at end of file
diff --git a/src/source/DataModel/GuiRootInstance.cpp b/src/source/DataModel/GuiRootInstance.cpp
deleted file mode 100644
index b1aa15e..0000000
--- a/src/source/DataModel/GuiRootInstance.cpp
+++ /dev/null
@@ -1,538 +0,0 @@
-#include
-#include
-#include "G3DAll.h"
-#include "DataModel/BaseButtonInstance.h"
-#include "DataModel/TextButtonInstance.h"
-#include "DataModel/ImageButtonInstance.h"
-#include "DataModel/ToggleImageButtonInstance.h"
-#include "DataModel/GuiRootInstance.h"
-#include "DataModel/ImageButtonInstance.h"
-#include "Globals.h"
-#include "StringFunctions.h"
-
-#include "Listener/GUDButtonListener.h"
-#include "Listener/ModeSelectionListener.h"
-#include "Listener/MenuButtonListener.h"
-#include "Listener/RotateButtonListener.h"
-#include "Listener/CameraButtonListener.h"
-#include "Listener/DeleteListener.h"
-#include "Listener/ToolbarListener.h"
-
-
-ImageButtonInstance* GuiRootInstance::makeImageButton(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL)
-{
- ImageButtonInstance* part = new ImageButtonInstance(newImage,overImage, downImage, disableImage);
-// instances.push_back(part);
-// instances_2D.push_back(part);
- return part;
-}
-
-TextButtonInstance* GuiRootInstance::makeTextButton()
-{
- TextButtonInstance* part = new TextButtonInstance();
- return part;
-}
-ToolbarListener * toolbar;
-GuiRootInstance::GuiRootInstance() : _message(""), _messageTime(0)
-{
- toolbar = new ToolbarListener();
- toolbar->doDelete = false;
- g_fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt"));
- g_fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt"));
-
- //Bottom Left
- TextButtonInstance* button = makeTextButton();
- button->boxBegin = Vector2(0, -24);
- button->boxEnd = Vector2(80, 0);
- button->floatBottom = true;
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3(0,255,255);
- button->textOutlineColor = Color4::clear();
- button->title = "Hopper";
- button->fontLocationRelativeTo = Vector2(10, 3);
- button->setAllColorsSame();
- button->boxOutlineColorOvr = Color3(0,255,255);
- button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
- button->setButtonListener(toolbar);
- toolbar->addButtonRef(button);
-
-
- button = makeTextButton();
- button->boxBegin = Vector2(0, -48);
- button->boxEnd = Vector2(80, -24);
- button->floatBottom = true;
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3(0,255,255);
- button->textOutlineColor = Color4::clear();
- button->title = "Controller";
- button->fontLocationRelativeTo = Vector2(10, 3);
- button->setAllColorsSame();
- button->boxOutlineColorOvr = Color3(0,255,255);
- button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
- button->setButtonListener(toolbar);
- toolbar->addButtonRef(button);
-
- button = makeTextButton();
- button->boxBegin = Vector2(0, -72);
- button->boxEnd = Vector2(80, -48);
- button->floatBottom = true;
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3(0,255,255);
- button->textOutlineColor = Color4::clear();
- button->title = "Color";
- button->fontLocationRelativeTo = Vector2(10, 3);
- button->setAllColorsSame();
- button->boxOutlineColorOvr = Color3(0,255,255);
- button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
- button->setButtonListener(toolbar);
- toolbar->addButtonRef(button);
-
- button = makeTextButton();
- button->boxBegin = Vector2(0, -96);
- button->boxEnd = Vector2(80, -72);
- button->floatBottom = true;
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3(0,255,255);
- button->textOutlineColor = Color4::clear();
- button->title = "Surface";
- button->fontLocationRelativeTo = Vector2(10, 3);
- button->setAllColorsSame();
- button->boxOutlineColorOvr = Color3(0,255,255);
- button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
- button->setButtonListener(toolbar);
- toolbar->addButtonRef(button);
-
- button = makeTextButton();
- button->boxBegin = Vector2(0, -120);
- button->boxEnd = Vector2(80, -96);
- button->floatBottom = true;
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3(0,255,255);
- button->title = "Model";
- button->selected = true;
- button->fontLocationRelativeTo = Vector2(10, 3);
- button->setAllColorsSame();
- button->boxOutlineColorOvr = Color3(0,255,255);
- button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F);
- button->setButtonListener(toolbar);
- toolbar->addButtonRef(button);
-
- //Top bar
- button = makeTextButton();
- button->boxBegin = Vector2(0, 0);
- button->boxEnd = Vector2(125, 25);
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->title = "File";
- button->textSize = 16;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setAllColorsSame();
- button->boxColorOvr = Color4(0.6F,0.6F,0.6F,0.4F);
- button->name = "file";
- button->setButtonListener(new MenuButtonListener());
-
- button = makeTextButton();
- button->boxBegin = Vector2(125, 0);
- button->boxEnd = Vector2(250, 25);
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->title = "Edit";
- button->textSize = 16;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setAllColorsSame();
- button->boxColorOvr = Color4(0.6F,0.6F,0.6F,0.4F);
-
- button = makeTextButton();
- button->boxBegin = Vector2(250, 0);
- button->boxEnd = Vector2(375, 25);
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->title = "View";
- button->textSize = 16;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setAllColorsSame();
- button->boxColorOvr = Color4(0.6F,0.6F,0.6F,0.4F);
-
- button = makeTextButton();
- button->boxBegin = Vector2(375, 0);
- button->boxEnd = Vector2(500, 25);
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->title = "Insert";
- button->textSize = 16;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setAllColorsSame();
- button->boxColorOvr = Color4(0.6F,0.6F,0.6F,0.4F);
-
- button = makeTextButton();
- button->boxBegin = Vector2(500, 0);
- button->boxEnd = Vector2(625, 25);
- button->setParent(this);
- button->font = g_fntlighttrek;
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->title = "Format";
- button->textSize = 16;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setAllColorsSame();
- button->boxColorOvr = Color4(0.6F,0.6F,0.6F,0.4F);
-
-
- //Menu
- button = makeTextButton();
- button->boxBegin = Vector2(0,215);
- button->boxEnd = Vector2(80,235);
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textSize = 12;
- button->title = "Group";
- button->name = "Group";
- button->setAllColorsSame();
- button->textColorDis = Color3(0.8F,0.8F,0.8F);
- button->font = g_fntlighttrek;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setParent(this);
- button->setButtonListener(new GUDButtonListener());
-
- button = makeTextButton();
- button->boxBegin = Vector2(0,240);
- button->boxEnd = Vector2(80,260);
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textSize = 12;
- button->title = "UnGroup";
- button->name = "UnGroup";
- button->setAllColorsSame();
- button->textColorDis = Color3(0.8F,0.8F,0.8F);
- button->font = g_fntlighttrek;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setParent(this);
- button->setButtonListener(new GUDButtonListener());
-
- button = makeTextButton();
- button->boxBegin = Vector2(0,265);
- button->boxEnd = Vector2(80,285);
- button->textOutlineColor = Color4(0.5F,0.5F,0.5F,0.5F);
- button->textColor = Color3::white();
- button->boxColor = Color4::clear();
- button->textSize = 12;
- button->title = "Duplicate";
- button->setAllColorsSame();
- button->textColorDis = Color3(0.8F,0.8F,0.8F);
- button->font = g_fntlighttrek;
- button->fontLocationRelativeTo = Vector2(10, 0);
- button->setParent(this);
- button->name = "Duplicate";
- button->setButtonListener(new GUDButtonListener());
-
- ImageButtonInstance* instance = new ToggleImageButtonInstance(
- Texture::fromFile(GetFileInPath("/content/images/Run.png")),
- Texture::fromFile(GetFileInPath("/content/images/Run_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/Run_dn.png")),
- NULL,
- Texture::fromFile(GetFileInPath("/content/images/Stop.png")),
- Texture::fromFile(GetFileInPath("/content/images/Stop_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/Stop_dn.png"))
- );
- instance->setButtonListener(new MenuButtonListener());
- instance->name = "go";
- instance->size = Vector2(65,65);
- instance->position = Vector2(6.5, 25);
- instance->setParent(this);
-
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/ArrowTool.png")),
- Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/ArrowTool_dn.png")),
- Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ds.png")));
- instance->size = Vector2(50,50);
- instance->position = Vector2(15, 90);
- instance->setParent(this);
- instance->name = "Cursor";
- instance->setButtonListener(new ModeSelectionListener());
-
- instance = makeImageButton(Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png")));
- instance->size = Vector2(40,40);
- instance->position = Vector2(0, 140);
- instance->setParent(this);
- instance->name = "Resize";
- instance->setButtonListener(new ModeSelectionListener());
-
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/MoveTool.png")),
- Texture::fromFile(GetFileInPath("/content/images/MoveTool_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/MoveTool_dn.png")),
- Texture::fromFile(GetFileInPath("/content/images/MoveTool_ds.png")));
- instance->size = Vector2(40,40);
- instance->position = Vector2(40, 140);
- instance->setParent(this);
- instance->name = "Arrows";
- instance->setButtonListener(new ModeSelectionListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/SelectionRotate.png")),
- Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ovr.png")),
- NULL,
- Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ds.png")));
- instance->size = Vector2(30,30);
- instance->position = Vector2(10, 175);
- instance->setParent(this);
- instance->name = "Rotate";
- instance->setButtonListener(new RotateButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/SelectionTilt.png")),
- Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ovr.png")),
- NULL,
- Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ds.png")));
- instance->size = Vector2(30,30);
- instance->position = Vector2(40, 175);
- instance->setParent(this);
- instance->name = "Tilt";
- instance->setButtonListener(new RotateButtonListener());
-
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/Delete.png")),
- Texture::fromFile(GetFileInPath("/content/images/Delete_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/Delete_dn.png")),
- Texture::fromFile(GetFileInPath("/content/images/Delete_ds.png")));
- instance->size = Vector2(40,46);
- instance->position = Vector2(20, 284);
- instance->setParent(this);
- instance->name = "Delete";
- instance->setButtonListener(new DeleteListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraZoomIn.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraZoomIn_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraZoomIn_dn.png")));
- instance->size = Vector2(34,25);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-77, -90);
- instance->setParent(this);
- instance->name = "ZoomIn";
- instance->setButtonListener(new CameraButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut_dn.png")));
- instance->size = Vector2(34,26);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-77, -31);
- instance->setParent(this);
- instance->name = "ZoomOut";
- instance->setButtonListener(new CameraButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft_dn.png")));
- instance->size = Vector2(34,34);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-110, -50);
- instance->setParent(this);
- instance->name = "PanLeft";
- instance->setButtonListener(new CameraButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraPanRight.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraPanRight_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraPanRight_dn.png")));
- instance->size = Vector2(34,34);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-45, -50);
- instance->setParent(this);
- instance->name = "PanRight";
- instance->setButtonListener(new CameraButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraCenter.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraCenter_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraCenter_dn.png")));
- instance->size = Vector2(34,20);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-77, -60);
- instance->setParent(this);
- instance->name = "CenterCam";
- instance->setButtonListener(new CameraButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp_dn.png")));
- instance->size = Vector2(24,24);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-105, -75);
- instance->setParent(this);
- instance->name = "TiltUp";
- instance->setButtonListener(new CameraButtonListener());
-
- instance = makeImageButton(
- Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown_ovr.png")),
- Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown_dn.png")));
- instance->size = Vector2(24,24);
- instance->floatBottom = true;
- instance->floatRight = true;
- instance->position = Vector2(-40, -75);
- instance->setParent(this);
- instance->name = "TiltDown";
- instance->setButtonListener(new CameraButtonListener());
-}
-
-
-void GuiRootInstance::drawButtons(RenderDevice* rd)
-{
- rd->pushState();
- rd->beforePrimitive();
- //this->render(rd);
- rd->afterPrimitive();
- rd->popState();
-}
-
-void GuiRootInstance::setDebugMessage(std::string msg, G3D::RealTime msgTime)
-{
- _messageTime = msgTime;
- _message = msg;
-}
-
-//void GuiRootInstance::render(G3D::RenderDevice* renderDevice) {}
-
-void GuiRootInstance::renderGUI(G3D::RenderDevice* rd, double fps)
-{
- //TODO--Move these to their own instance
-
- std::stringstream stream;
- stream << std::fixed << std::setprecision(1) << g_dataModel->getLevel()->timer;
- g_fntdominant->draw2D(rd, "Timer: " + stream.str(), Vector2(rd->getWidth() - 120, 25), 20, Color3::fromARGB(0x81C518), Color3::black());
- g_fntdominant->draw2D(rd, "Score: " + Convert(g_dataModel->getLevel()->score), Vector2(rd->getWidth() - 120, 50), 20, Color3::fromARGB(0x81C518), Color3::black());
- //FPS
-#ifdef _DEBUG
- stream.str("");
- stream.clear();
- stream << std::fixed << std::setprecision(3) << fps;
- g_fntdominant->draw2D(rd, "FPS: " + stream.str(), Vector2(120, 25), 10, Color3::fromARGB(0xFFFF00), Color3::black());
-#endif
- //GUI Boxes
- Draw::box(G3D::Box(Vector3(0,25,0),Vector3(80,355,0)),rd,Color4(0.6F,0.6F,0.6F,0.4F), Color4(0,0,0,0));
- Draw::box(G3D::Box(Vector3(rd->getWidth() - 120,rd->getHeight() - 117,0),Vector3(rd->getWidth(),rd->getHeight(),0)),rd,Color4(0.6F,0.6F,0.6F,0.4F), Color4(0,0,0,0));
-
- //Camera menu title
- g_fntlighttrek->draw2D(rd, "CameraMenu", Vector2(rd->getWidth()-(g_fntlighttrek->get2DStringBounds("CameraMenu", 14).x+1),rd->getHeight() - 120), 14, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F));
-
- //Tools menu
- Draw::box(G3D::Box(Vector3(5, 210,0),Vector3(75, 210,0)),rd,Color4(0.6F,0.6F,0.6F,0.4F), Color4(0.6F,0.6F,0.6F,0.4F));
- g_fntlighttrek->draw2D(rd,"MENU", Vector2(10,332), 14, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F));
-
-
- //drawButtons(rd);
- if(System::time() - 3 < _messageTime)
- {
- g_fntdominant->draw2D(rd, _message, Vector2((rd->getWidth()/2)-(g_fntdominant->get2DStringBounds(_message, 20).x/2),(rd->getHeight()/2)-(g_fntdominant->get2DStringBounds(_message, 20).y/2)), 20, Color3::yellow(), Color3::black());
- }
-
- g_dataModel->drawMessage(rd);
- render(rd);
-}
-
-bool GuiRootInstance::mouseInGUI(G3D::RenderDevice* renderDevice,int x,int y)
-{
- std::vector instances_2D = g_dataModel->getGuiRoot()->getAllChildren();
- for(size_t i = 0; i < instances_2D.size(); i++)
- {
- if(BaseButtonInstance* button = dynamic_cast(instances_2D.at(i)))
- {
- if(button->mouseInButton(x,y, renderDevice))
- {
- return true;
- }
- }
- }
- return false;
-}
-
-void GuiRootInstance::update()
-{
- Instance * obj6 = this->findFirstChild("Delete");
- Instance * obj = this->findFirstChild("Duplicate");
- Instance * obj2 = this->findFirstChild("Group");
- Instance * obj3 = this->findFirstChild("UnGroup");
- Instance * obj4 = this->findFirstChild("Rotate");
- Instance * obj5 = this->findFirstChild("Tilt");
- if(obj != NULL && obj2 != NULL && obj3 != NULL && obj4 !=NULL && obj5 != NULL && obj6 != NULL)
- {
- BaseButtonInstance* button = (BaseButtonInstance*)obj;
- BaseButtonInstance* button2 = (BaseButtonInstance*)obj2;
- BaseButtonInstance* button3 = (BaseButtonInstance*)obj3;
- BaseButtonInstance* button4 = (BaseButtonInstance*)obj4;
- BaseButtonInstance* button5 = (BaseButtonInstance*)obj5;
- BaseButtonInstance* button6 = (BaseButtonInstance*)obj6;
- button->disabled = true;
- button2->disabled = true;
- button3->disabled = true;
- button4->disabled = true;
- button5->disabled = true;
- button6->disabled = true;
- for(size_t i = 0; i < g_selectedInstances.size(); i++)
- if(g_selectedInstances.at(i)->canDelete)
- {
- button->disabled = false;
- button2->disabled = false;
- button3->disabled = false;
- button4->disabled = false;
- button5->disabled = false;
- button6->disabled = false;
- break;
- }
- }
-}
-
-GuiRootInstance::~GuiRootInstance()
-{
- delete toolbar;
-}
-
-void GuiRootInstance::onMouseLeftUp(G3D::RenderDevice* renderDevice, int x,int y)
-{
- std::vector instances_2D = this->getAllChildren();
- for(size_t i = 0; i < instances_2D.size(); i++)
- {
- if(BaseButtonInstance* button = dynamic_cast(instances_2D[i]))
- {
- if(button->mouseInButton(x, y, renderDevice))
- {
- button->onMouseClick();
- }
- }
- }
-}
diff --git a/src/source/DataModel/ImageButtonInstance.cpp b/src/source/DataModel/ImageButtonInstance.cpp
deleted file mode 100644
index f57ef47..0000000
--- a/src/source/DataModel/ImageButtonInstance.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-#include "DataModel/ImageButtonInstance.h"
-
-ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL)
-{
- BaseButtonInstance::BaseButtonInstance();
- image = newImage;
- openGLID = image->getOpenGLID();
- image_ovr = overImage;
- if(!image_ovr.isNull())
- openGLID_ovr = image_ovr->getOpenGLID();
- image_dn = downImage;
- if(!image_dn.isNull())
- openGLID_dn = image_dn->getOpenGLID();
- image_ds = disableImage;
- if(!image_ds.isNull())
- openGLID_ds = image_ds->getOpenGLID();
- Vector2 size = Vector2(0,0);
- Vector2 position = Vector2(0,0);
- floatCenter = false;
- floatBottom = false;
- floatRight = false;
- disabled = false;
- className = "ImageButton";
-}
-
-ImageButtonInstance::~ImageButtonInstance(void)
-{
- //Delete everything on destruction
- image.~ReferenceCountedPointer();
- delete image.getPointer();
- image_ovr.~ReferenceCountedPointer();
- delete image_ovr.getPointer();
- image_ds.~ReferenceCountedPointer();
- delete image_ds.getPointer();
- image_dn.~ReferenceCountedPointer();
- delete image_dn.getPointer();
- image = NULL;
- image_ovr = NULL;
- image_ds = NULL;
- image_dn = NULL;
- delete listener;
- listener = NULL;
- selected = false;
-}
-
-bool ImageButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd)
-{
- Vector2 positionRelative = position;
- if(floatRight && floatBottom)
- {
- positionRelative = Vector2(rd->getWidth() + position.x, rd->getHeight() + position.y);
- }
- else if(floatBottom)
- {
- positionRelative = Vector2(position.x, rd->getHeight() + position.y);
- }
- else if(floatRight)
- {
- positionRelative = Vector2(rd->getWidth() + position.x, position.y);
- }
- if(mousex >= positionRelative.x && mousey >= positionRelative.y)
- {
- if(mousex < positionRelative.x + size.x && mousey < positionRelative.y + size.y)
- {
- return true;
- }
- }
- return false;
-}
-
-void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown)
-{
- bool drawDisabledBox = false;
- Vector2 positionRelative = position;
- if(floatRight && floatBottom)
- {
- positionRelative = Vector2(rd->getWidth() + position.x, rd->getHeight() + position.y);
- }
- else if(floatBottom)
- {
- positionRelative = Vector2(position.x, rd->getHeight() + position.y);
- }
- else if(floatRight)
- {
- positionRelative = Vector2(rd->getWidth() + position.x, position.y);
- }
- int renderimage = openGLID;
- if(selected == true && !image_dn.isNull() && !disabled)
- {
- renderimage = openGLID_dn;
- }
- else if(disabled)
- {
- if(!image_ds.isNull())
- renderimage = openGLID_ds;
- else
- drawDisabledBox = true;
- }
- else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y))
- {
- if(mouseDown && !image_dn.isNull())
- {
- renderimage = openGLID_dn;
- }
- else if(!image_ovr.isNull())
- {
- renderimage = openGLID_ovr;
- }
- }
-
-
-
- glEnable( GL_TEXTURE_2D );
- glEnable(GL_BLEND);// you enable blending function
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glBindTexture( GL_TEXTURE_2D, renderimage);
- glBegin( GL_QUADS );
- glTexCoord2d(0.0,0.0);
- glVertex2f( positionRelative.x, positionRelative.y );
- glTexCoord2d( 1.0,0.0 );
- glVertex2f( positionRelative.x + size.x, positionRelative.y );
- glTexCoord2d( 1.0,1.0 );
- glVertex2f( positionRelative.x + size.x, positionRelative.y + size.y );
- glTexCoord2d( 0.0,1.0 );
- glVertex2f( positionRelative.x, positionRelative.y + size.y );
- glEnd();
- glDisable( GL_TEXTURE_2D );
-
- if(drawDisabledBox)
- {
- Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7F,0.7F,0.7F,0.3F), Color4::clear());
- }
-}
\ No newline at end of file
diff --git a/src/source/DataModel/Instance.cpp b/src/source/DataModel/Instance.cpp
deleted file mode 100644
index a74a1aa..0000000
--- a/src/source/DataModel/Instance.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-#define WINVER 0x0400
-#include
-#include "DataModel/Instance.h"
-
-
-
-Instance::Instance(void)
-{
- parent = NULL;
- name = "Default Game Instance";
- className = "BaseInstance";
- listicon = 1;
- canDelete = true;
-}
-
-Instance::Instance(const Instance &oinst)
-{
-
- name = oinst.name;
- className = oinst.className;
- canDelete = oinst.canDelete;
- listicon = oinst.listicon;
- //setParent(oinst.parent);
-}
-
-
-
-void Instance::render(RenderDevice* rd)
-{
- for(size_t i = 0; i < children.size(); i++)
- {
- children[i]->render(rd);
- }
-}
-
-void Instance::update()
-{
-}
-
-PROPGRIDITEM Instance::createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[])
-{
- PROPGRIDITEM pItem;
- PropGrid_ItemInit(pItem);
- pItem.lpszCatalog=catalog;
- pItem.lpszPropName=propName;
- pItem.lpszPropDesc=propDesc;
- pItem.lpCurValue=curVal;
- pItem.iItemType=type;
- if(choices != NULL)
- pItem.lpszzCmbItems = choices;
- return pItem;
-}
-
-void Instance::PropUpdate(LPPROPGRIDITEM &item)
-{
- if(strcmp(item->lpszPropName, "Name") == 0)
- {
- name = (LPSTR)item->lpCurValue;
- }
-}
-
-std::vector Instance::getProperties()
-{
- std::vector properties;
-
-
- properties.push_back(createPGI(
- "Properties",
- "Name",
- "The name of this instance",
- (LPARAM)name.c_str(),
- PIT_EDIT
- ));
- return properties;
-}
-
-
-
-Instance::~Instance(void)
-{
- for(size_t i = 0; i < children.size(); i++)
- {
- delete children.at(i);
- }
-}
-
-void Instance::setName(std::string newName)
-{
- name = newName;
-}
-
-std::string Instance::getClassName()
-{
- return className;
-}
-
-std::vector Instance::getChildren()
-{
- return children;
-}
-
-std::vector Instance::getAllChildren()
-{
- if(!children.empty())
- {
- std::vector totalchildren = children;
- for(size_t i = 0; i < children.size(); i++)
- {
- std::vector subchildren = children.at(i)->getAllChildren();
- if(!subchildren.empty())
- totalchildren.insert(totalchildren.end(), subchildren.begin(), subchildren.end());
- }
- return totalchildren;
- }
- return children;
-}
-
-void Instance::setParent(Instance* newParent)
-{
- if(parent != NULL)
- {
- parent->removeChild(this);
- }
- parent = newParent;
- if(newParent != NULL)
- {
- newParent->addChild(this);
- }
-}
-
-Instance* Instance::getParent()
-{
- return parent;
-}
-
-void Instance::addChild(Instance* newChild)
-{
- children.push_back(newChild);
-}
-
-void Instance::clearChildren()
-{
- children.clear();
-}
-void Instance::removeChild(Instance* oldChild)
-{
- for(size_t i = 0; i < children.size(); i++)
- {
- if(children.at(i) == oldChild)
- {
- children.erase(children.begin() + i);
- }
- }
-}
-
-Instance* Instance::findFirstChild(std::string name)
-{
- for(size_t i = 0; i < children.size(); i++)
- {
- if(children.at(i)->name.compare(name) == 0)
- {
- return children.at(i);
- }
- }
- return NULL;
-}
-
-
-
diff --git a/src/source/DataModel/LevelInstance.cpp b/src/source/DataModel/LevelInstance.cpp
deleted file mode 100644
index 5d0fdb2..0000000
--- a/src/source/DataModel/LevelInstance.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "DataModel/LevelInstance.h"
-
-LevelInstance::LevelInstance(void)
-{
- Instance::Instance();
- name = "Level";
- winMessage = "You Won!";
- loseMessage = "You Lost. Try Again";
- timer = 60.0F;
- score = 0;
- canDelete = false;
-}
-
-LevelInstance::~LevelInstance(void)
-{
-}
-
-
-char timerTxt[12];
-char scoreTxt[12];
-std::vector LevelInstance::getProperties()
-{
- std::vector properties = Instance::getProperties();
-
-
-
- properties.push_back(createPGI("Messages",
- "WinMessage",
- "The message that shows when the player wins.",
- (LPARAM)winMessage.c_str(),
- PIT_EDIT));
- properties.push_back(createPGI("Messages",
- "LoseMessage",
- "The message that shows when the player loses.",
- (LPARAM)loseMessage.c_str(),
- PIT_EDIT));
-
-
- sprintf_s(timerTxt, "%g", timer);
- sprintf_s(scoreTxt, "%d", score);
- properties.push_back(createPGI("Gameplay",
- "InitialTimerValue",
- "The ammount of time in seconds the player has to complete this level.\r\n\r\nPut 0 if time is limitless.",
- (LPARAM)timerTxt,
- PIT_EDIT));
- properties.push_back(createPGI("Gameplay",
- "InitialScoreValue",
- "The ammount of points the player starts with.",
- (LPARAM)scoreTxt,
- PIT_EDIT));
- return properties;
-}
-void LevelInstance::PropUpdate(LPPROPGRIDITEM &pItem)
-{
- if(strcmp(pItem->lpszPropName, "InitialTimerValue") == 0)
- {
- timer = atoi((LPSTR)pItem->lpCurValue);
- }
- if(strcmp(pItem->lpszPropName, "InitialScoreValue") == 0)
- {
- score = atof((LPSTR)pItem->lpCurValue);
- }
- if(strcmp(pItem->lpszPropName, "LoseMessage") == 0)
- {
- loseMessage = (LPSTR)pItem->lpCurValue;
- }
- if(strcmp(pItem->lpszPropName, "WinMessage") == 0)
- {
- winMessage = (LPSTR)pItem->lpCurValue;
- }
- else
- Instance::PropUpdate(pItem);
-}
\ No newline at end of file
diff --git a/src/source/DataModel/PVInstance.cpp b/src/source/DataModel/PVInstance.cpp
deleted file mode 100644
index 8bdf6af..0000000
--- a/src/source/DataModel/PVInstance.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "DataModel/PVInstance.h"
-
-PVInstance::PVInstance(void)
-{
- Instance::Instance();
- nameShown = false;
- controllerFlagShown = true;
- className = "PVInstance";
- listicon = 0;
- controller = (Enum::Controller::Value)0;
-}
-
-PVInstance::PVInstance(const PVInstance &oinst)
-{
- Instance::Instance(oinst);
-}
-
-PVInstance::~PVInstance(void)
-{
-}
-
-void PVInstance::postRender(RenderDevice* rd)
-{
-}
-
-static TCHAR* enumStr(int controller)
-{
- switch(controller)
- {
- case Enum::Controller::None:
- return "None";
- case Enum::Controller::KeyboardLeft:
- return "KeyboardLeft";
- case Enum::Controller::KeyboardRight:
- return "KeyboardRight";
- case Enum::Controller::Joypad1:
- return "Joypad1";
- case Enum::Controller::Joypad2:
- return "Joypad2";
- case Enum::Controller::Chase:
- return "Joypad1";
- case Enum::Controller::Flee:
- return "Joypad2";
- }
- return "None";
-}
-
-static Enum::Controller::Value strEnum(TCHAR * tval)
-{
- if(strcmp(tval, "KeyboardLeft") == 0)
- return Enum::Controller::KeyboardLeft;
- if(strcmp(tval, "KeyboardRight") == 0)
- return Enum::Controller::KeyboardRight;
- if(strcmp(tval, "Joypad1") == 0)
- return Enum::Controller::Joypad1;
- if(strcmp(tval, "Joypad2") == 0)
- return Enum::Controller::Joypad2;
- if(strcmp(tval, "Chase") == 0)
- return Enum::Controller::Chase;
- if(strcmp(tval, "Flee") == 0)
- return Enum::Controller::Flee;
- return Enum::Controller::None;
-}
-
-
-
-std::vector PVInstance::getProperties()
-{
- std::vector properties = Instance::getProperties();
- properties.push_back(createPGI(
- "Item",
- "NameShown",
- "This chooses whether the item name is shown",
- nameShown,
- PIT_CHECK));
- properties.push_back(createPGI(
- "Item",
- "ControllerFlagShown",
- "This chooses whether the item's ControllerFlag is shown",
- controllerFlagShown,
- PIT_CHECK));
- properties.push_back(createPGI(
- "Behaviour",
- "Controller",
- "This chooses what type of controller is used",
- (LPARAM)enumStr(controller),
- PIT_COMBO,
- TEXT("None\0KeyboardRight\0KeyboardLeft\0Joypad1\0Joypad2\0Chase\0Flee")
- ));
-
- return properties;
-}
-void PVInstance::PropUpdate(LPPROPGRIDITEM &pItem)
-{
- if(strcmp(pItem->lpszPropName, "NameShown") == 0)
- {
- nameShown = pItem->lpCurValue == TRUE;
- }
- if(strcmp(pItem->lpszPropName, "ControllerFlagShown") == 0)
- {
- controllerFlagShown = pItem->lpCurValue == TRUE;
- }
- if(strcmp(pItem->lpszPropName, "Controller") == 0)
- {
- controller = strEnum((TCHAR *)pItem->lpCurValue);
- }
- else Instance::PropUpdate(pItem);
-}
diff --git a/src/source/DataModel/PartInstance.cpp b/src/source/DataModel/PartInstance.cpp
deleted file mode 100644
index b8760ac..0000000
--- a/src/source/DataModel/PartInstance.cpp
+++ /dev/null
@@ -1,1124 +0,0 @@
-#include "DataModel/PartInstance.h"
-#include "Globals.h"
-#include
-#include
-
-
-PartInstance::PartInstance(void) : _bevelSize(0.07f), _parseVert(0), _debugTimer(0)
-{
- PVInstance::PVInstance();
- glList = glGenLists(1);
- name = "Unnamed PVItem";
- className = "Part";
- canCollide = true;
- anchored = false;
- size = Vector3(2,1,4);
- setCFrame(CoordinateFrame(Vector3(0,0,0)));
- color = Color3::gray();
- velocity = Vector3(0,0,0);
- rotVelocity = Vector3(0,0,0);
- top = Enum::SurfaceType::Smooth;
- front = Enum::SurfaceType::Smooth;
- right = Enum::SurfaceType::Smooth;
- back = Enum::SurfaceType::Smooth;
- left = Enum::SurfaceType::Smooth;
- bottom = Enum::SurfaceType::Smooth;
- shape = Enum::Shape::Block;
-}
-
-
-Vector3 PartInstance::getVelocity()
-{
- return velocity;
-}
-Vector3 PartInstance::getRotVelocity()
-{
- return rotVelocity;
-}
-
-void PartInstance::setVelocity(Vector3 v)
-{
- velocity = v;
-}
-void PartInstance::setRotVelocity(Vector3 v)
-{
- rotVelocity = v;
-}
-
-void PartInstance::postRender(RenderDevice *rd)
-{
- if(!nameShown)
- return;
- G3D::GFontRef fnt = NULL;
- Instance* dm = parent;
- while(dm != NULL)
- {
- if(DataModelInstance* mod = dynamic_cast(dm))
- {
- fnt = mod->font;
- break;
- }
- dm = dm->getParent();
- }
- if(!fnt.isNull())
- {
- Vector3 gamepoint = position + Vector3(0,1.5,0);
- Vector3 camerapoint = rd->getCameraToWorldMatrix().translation;
- float distance = pow(pow((double)gamepoint.x - (double)camerapoint.x, 2) + pow((double)gamepoint.y - (double)camerapoint.y, 2) + pow((double)gamepoint.z - (double)camerapoint.z, 2), 0.5);
- if(distance < 100 && distance > -100)
- {
- if(distance < 0)
- distance = distance*-1;
- glDisable(GL_DEPTH_TEST);
- fnt->draw3D(rd, name, CoordinateFrame(rd->getCameraToWorldMatrix().rotation, gamepoint), 0.03*distance, Color3::yellow(), Color3::black(), G3D::GFont::XALIGN_CENTER, G3D::GFont::YALIGN_CENTER);
- glEnable(GL_DEPTH_TEST);
- }
- }
-}
-
-void PartInstance::setParent(Instance* prnt)
-{
- Instance * cparent = getParent();
- while(cparent != NULL)
- {
- if(WorkspaceInstance* workspace = dynamic_cast(cparent))
- {
- std::cout << "Removed from partarray " << std::endl;
- workspace->partObjects.erase(std::remove(workspace->partObjects.begin(), workspace->partObjects.end(), this), workspace->partObjects.end());
- break;
- }
- cparent = cparent->getParent();
- }
- Instance::setParent(prnt);
- while(parent != NULL)
- {
- if(WorkspaceInstance* workspace = dynamic_cast(parent))
- {
- workspace->partObjects.push_back(this);
- break;
- }
- parent = parent->getParent();
- }
-}
-
-PartInstance::PartInstance(const PartInstance &oinst) : _bevelSize(0.07f), _parseVert(0), _debugTimer(0)
-{
- PVInstance::PVInstance(oinst);
- glList = glGenLists(1);
- //name = oinst.name;
- //className = "Part";
- name = oinst.name;
- canCollide = oinst.canCollide;
- setParent(oinst.parent);
- anchored = oinst.anchored;
- size = oinst.size;
- setCFrame(oinst.cFrame);
- color = oinst.color;
- velocity = oinst.velocity;
- rotVelocity = oinst.rotVelocity;
- top = oinst.top;
- front = oinst.front;
- right = oinst.right;
- back = oinst.back;
- left = oinst.left;
- bottom = oinst.bottom;
- shape = oinst.shape;
- changed = true;
-}
-
-void PartInstance::setSize(Vector3 newSize)
-{
- int minsize = 1;
- int maxsize = 512;
- changed = true;
- int sizex = (int)newSize.x;
- if(sizex <= 0)
- sizex = 1;
- if(sizex > 512)
- sizex = 512;
-
- int sizey = (int)newSize.y;
- if(sizey <= 0)
- sizey = 1;
- if(sizey > 512)
- sizey = 512;
-
- int sizez = (int)newSize.z;
- if(sizez <= 0)
- sizez = 1;
- if(sizez > 512)
- sizez = 512;
-
- if(shape != Enum::Shape::Block)
- {
- int max = sizex;
- if(sizey > max)
- max = sizey;
- if(sizez > max)
- max = sizez;
- sizex = sizey = sizez = max;
- }
-
- size = Vector3(sizex, sizey, sizez);
-
-
-
-}
-Vector3 PartInstance::getSize()
-{
- return size;
-}
-Vector3 PartInstance::getPosition()
-{
- return position;
-}
-void PartInstance::setShape(Enum::Shape::Value shape)
-{
- switch(shape)
- {
- case Enum::Shape::Block:
- this->shape = shape;
- break;
- default:
- this->shape = shape;
- this->setSize(this->getSize());
- }
- changed = true;
-}
-
-void PartInstance::setPosition(Vector3 pos)
-{
- position = pos;
- cFrame = CoordinateFrame(cFrame.rotation, pos);
- changed = true;
-}
-
-CoordinateFrame PartInstance::getCFrame()
-{
- return cFrame;
-}
-void PartInstance::setCFrame(CoordinateFrame coordinateFrame)
-{
- cFrame = coordinateFrame;
- position = coordinateFrame.translation;
- changed = true;
-}
-// Can probably be deleted
-CoordinateFrame PartInstance::getCFrameRenderBased()
-{
- return cFrame;//CoordinateFrame(getCFrame().rotation,Vector3(getCFrame().translation.x, getCFrame().translation.y, getCFrame().translation.z));
-}
-
-bool PartInstance::collides(PartInstance * part)
-{
- if(shape == Enum::Shape::Block)
- {
- if(part->shape == Enum::Shape::Block)
- return G3D::CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), part->getBox());
- else
- return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidBox(part->getSphere(), getBox());
- }
- else
- {
- if(part->shape == Enum::Shape::Block)
- return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidBox(getSphere(), part->getBox());
- else
- return G3D::CollisionDetection::fixedSolidSphereIntersectsFixedSolidSphere(getSphere(), part->getSphere());
- }
-}
-
-#ifdef NEW_BOX_RENDER
-Box PartInstance::getBox()
-{
- Box box = Box(Vector3(size.x/2, size.y/2, size.z/2) ,Vector3(-size.x/2,-size.y/2,-size.z/2));
- CoordinateFrame c = getCFrameRenderBased();
- itemBox = c.toWorldSpace(box);
- return itemBox;
-}
-Sphere PartInstance::getSphere()
-{
- Sphere sphere = Sphere(Vector3(0,0,0), size.y/2);
- CoordinateFrame c = getCFrameRenderBased();
- //itemBox = c.toWorldSpace(Sphere);
- return sphere;//itemBox;
-}
-#else
-Box PartInstance::getBox()
-{
- if(changed)
- {
- Box box = Box(Vector3(0+size.x/4, 0+size.y/4, 0+size.z/4) ,Vector3(0-size.x/4,0-size.y/4,0-size.z/4));
- CoordinateFrame c = getCFrameRenderBased();
- itemBox = c.toWorldSpace(box);
- Vector3 v0,v1,v2,v3;
- for (int f = 0; f < 6; f++) {
- itemBox.getFaceCorners(f, v0,v1,v2,v3);
- _vertices[f*16] = v0.x;
- _vertices[(f*16)+1] = v0.y;
- _vertices[(f*16)+2] = v0.z;
- _vertices[(f*16)+3] = v1.x;
- _vertices[(f*16)+4] = v1.y;
- _vertices[(f*16)+5] = v1.z;
- _vertices[(f*16)+6] = v2.x;
- _vertices[(f*16)+7] = v2.y;
- _vertices[(f*16)+8] = v2.z;
- _vertices[(f*16)+9] = v3.x;
- _vertices[(f*16)+10] = v3.y;
- _vertices[(f*16)+11] = v3.z;
- _vertices[(f*16)+12] = color.r;
- _vertices[(f*16)+13] = color.g;
- _vertices[(f*16)+14] = color.b;
- _vertices[(f*16)+15] = 1;
- }
- }
- return itemBox;
-}
-#endif
-
-bool PartInstance::collides(Box box)
-{
- return CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(getBox(), box);
-}
-#ifdef NEW_BOX_RENDER
-void PartInstance::addVertex(Vector3 vertexPos,Color3 color)
-{
- _vertices.push_back(vertexPos.x);
- _vertices.push_back(vertexPos.y);
- _vertices.push_back(vertexPos.z);
- _vertices.push_back(color.r);
- _vertices.push_back(color.g);
- _vertices.push_back(color.b);
-}
- void PartInstance::addNormals(Vector3 normal)
-{
- for (unsigned int i=0;i<3;i+=1) {
- _normals.push_back(normal.x);
- _normals.push_back(normal.y);
- _normals.push_back(normal.z);
- }
-}
- void PartInstance::addSingularNormal(Vector3 normal)
-{
- _normals.push_back(normal.x);
- _normals.push_back(normal.y);
- _normals.push_back(normal.z);
-}
- void PartInstance::addTriangle(Vector3 v1,Vector3 v2,Vector3 v3)
-{
- addVertex(v1,color);
- addVertex(v2,color);
- addVertex(v3,color);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(v3-v2,v1-v2).direction());
- addSingularNormal(cross(v1-v3,v2-v3).direction());
-}
-
-void PartInstance::addQuad(Vector3 v1,Vector3 v2, Vector3 v3, Vector3 v4)
-{
- addTriangle(v1, v2, v3);
- addTriangle(v1, v3, v4);
-}
-
-void PartInstance::genSmoothNormals(int count = -1)
-{
- if(count < 0)
- {
-
- }
-}
-
-void PartInstance::addSmoothTriangle(Vector3 v1, Vector3 v2, Vector3 v3)
-{
- addVertex(v1,color);
- addVertex(v2,color);
- addVertex(v3,color);
- //addNormals(cross(v2-v1,v3-v1).direction());
- //addSingularNormal(Vector3(cross(v2-v1,v3-v1) + cross(v3-v2,v1-v2) + cross(v1-v3,v2-v3)).direction());
- addSingularNormal(v1.direction());
- addSingularNormal(v2.direction());
- addSingularNormal(v3.direction());
-}
-
-
-void PartInstance::addPlus(Vector3 v1)
-{
- float renderY = max(size.z, max(size.x, size.y))/2 * 0.775;
- Vector3 vx1 = v1 + Vector3(0, -renderY, -0.1f);
- Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
- Vector3 vx3 = v1 + Vector3(0, renderY, 0.1f);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
- vx1 = v1 + Vector3(0, renderY, 0.1f);
- vx2 = v1 + Vector3(0, renderY, -0.1f);
- vx3 = v1 + Vector3(0, -renderY, -0.1f);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
- vx3 = v1 + Vector3(0, -0.1f, -renderY);
- vx2 = v1 + Vector3(0, 0.1f, -renderY);
- vx1 = v1 + Vector3(0, 0.1f, renderY);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
- vx3 = v1 + Vector3(0, 0.1f, renderY);
- vx2 = v1 + Vector3(0, -0.1f, renderY);
- vx1 = v1 + Vector3(0, -0.1f, -renderY);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
-}
-
-
-void PartInstance::addPlus2(Vector3 v1)
-{
- float renderY = max(size.z, max(size.x, size.y))/2 * 0.775;
- Vector3 vx3 = v1 + Vector3(0, -renderY, -0.1f);
- Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
- Vector3 vx1 = v1 + Vector3(0, renderY, 0.1f);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
- vx3 = v1 + Vector3(0, renderY, 0.1f);
- vx2 = v1 + Vector3(0, renderY, -0.1f);
- vx1 = v1 + Vector3(0, -renderY, -0.1f);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
- vx1 = v1 + Vector3(0, -0.1f, -renderY);
- vx2 = v1 + Vector3(0, 0.1f, -renderY);
- vx3 = v1 + Vector3(0, 0.1f, renderY);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
- vx1 = v1 + Vector3(0, 0.1f, renderY);
- vx2 = v1 + Vector3(0, -0.1f, renderY);
- vx3 = v1 + Vector3(0, -0.1f, -renderY);
-
- addVertex(vx1,Color3::WHITE);
- addVertex(vx2,Color3::WHITE);
- addVertex(vx3,Color3::WHITE);
- //addNormals(cross(v2-v1,v3-v1).direction());
- addSingularNormal(cross(vx2-vx1,vx3-vx1).direction());
- addSingularNormal(cross(vx3-vx2,vx1-vx2).direction());
- addSingularNormal(cross(vx1-vx3,vx2-vx3).direction());
-
-}
- void PartInstance::debugPrintVertexIDs(RenderDevice* rd,GFontRef font,Matrix3 rot)
-{
- _debugUniqueVertices.clear();
- glDisable(GL_DEPTH_TEST);
-
- for (unsigned int i=0;i<_vertices.size();i+=6)
- {
- std::stringstream stream;
- stream << std::fixed << std::setprecision(1) << i;
- Vector3 testVector = Vector3(_vertices[i],_vertices[i+1],_vertices[i+2]);
- if (isUniqueVertex(testVector))
- {
-
- font->draw3D(rd, stream.str(), CoordinateFrame(testVector) * -rot, 0.05, Color3::fromARGB(0xFF4F0000), Color4::clear());
- _debugUniqueVertices.push_back(testVector);
- }
- }
- glEnable(GL_DEPTH_TEST);
-}
- void PartInstance::makeFace(int vertex1,int vertex2, int vertex3)
-{
- addTriangle(Vector3(_vertices[vertex1],_vertices[vertex1+1],_vertices[vertex1+2]),
- Vector3(_vertices[vertex2],_vertices[vertex2+1],_vertices[vertex2+2]),
- Vector3(_vertices[vertex3],_vertices[vertex3+1],_vertices[vertex3+2]));
-}
- void PartInstance::fromArrays(float verts[], float norms[], float ind[], unsigned int countVN, unsigned int countInd)
-{
- for(unsigned int i = 0; i < countVN; i++)
- {
- _vertices.push_back(verts[i]);
- _normals.push_back(norms[i]);
- }
- for(unsigned int i = 0; i < countInd; i++)
- {
- _indices.push_back(ind[i]);
- }
-
-}
-void PartInstance::makeSmoothFace(int vertex1,int vertex2, int vertex3)
-{
- addSmoothTriangle(Vector3(_vertices[vertex1],_vertices[vertex1+1],_vertices[vertex1+2]),
- Vector3(_vertices[vertex2],_vertices[vertex2+1],_vertices[vertex2+2]),
- Vector3(_vertices[vertex3],_vertices[vertex3+1],_vertices[vertex3+2]));
-}
-bool PartInstance::isUniqueVertex(Vector3 pos)
-{
- for (unsigned int i=0;i<_debugUniqueVertices.size();i+=1)
- {
- if (pos==_debugUniqueVertices[i])
- {
- return false;
- }
- }
- return true;
-}
-//int rings = 15;
-//int sectors = 15;
-void PartInstance::render(RenderDevice* rd) {
- int sectorCount = 12;
- int stackCount = 12;
- float radius = 0.5F;
- //if(nameShown)
- //postRenderStack.push_back(this);
- if (changed)
- {
-
- getBox();
- _vertices.clear();
- _normals.clear();
- _indices.clear();
- //std::vector(_vertices).swap(_vertices); //Clear the memory
- Vector3 renderSize = size/2;
- switch(this->shape)
- {
- case Enum::Shape::Ball:
- {
- glNewList(glList, GL_COMPILE);
- glColor(this->color);
- glPushMatrix();
- glScalef(renderSize.x, renderSize.y, renderSize.z);
- gluSphere(gluNewQuadric(), 1, 20, 20);
- glPopMatrix();
- glEndList();
- rd->setObjectToWorldMatrix(cFrame);
- glCallList(glList);
- changed = false;
- return;
- }
- break;
- case Enum::Shape::Block:
- {
- // Front
- addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,renderSize.z),
- Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,renderSize.z),
- Vector3(renderSize.x-_bevelSize,-renderSize.y+_bevelSize,renderSize.z)
- );
-
- addTriangle(Vector3(-renderSize.x+_bevelSize,renderSize.y-_bevelSize,renderSize.z),
- Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,renderSize.z),
- Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,renderSize.z)
- );
-
- // Top
- addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y,renderSize.z-_bevelSize),
- Vector3(renderSize.x-_bevelSize,renderSize.y,-renderSize.z+_bevelSize),
- Vector3(-renderSize.x+_bevelSize,renderSize.y,renderSize.z-_bevelSize)
- );
- addTriangle(Vector3(-renderSize.x+_bevelSize,renderSize.y,renderSize.z-_bevelSize),
- Vector3(renderSize.x-_bevelSize,renderSize.y,-renderSize.z+_bevelSize),
- Vector3(-renderSize.x+_bevelSize,renderSize.y,-renderSize.z+_bevelSize)
- );
-
- // Back
- addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,-renderSize.z),
- Vector3(renderSize.x-_bevelSize,-renderSize.y+_bevelSize,-renderSize.z),
- Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,-renderSize.z)
- );
- addTriangle(Vector3(renderSize.x-_bevelSize,renderSize.y-_bevelSize,-renderSize.z),
- Vector3(-renderSize.x+_bevelSize,-renderSize.y+_bevelSize,-renderSize.z),
- Vector3(-renderSize.x+_bevelSize,renderSize.y-_bevelSize,-renderSize.z)
- );
-
- // Bottom
- addTriangle(Vector3(renderSize.x-_bevelSize,-renderSize.y,-renderSize.z+_bevelSize),
- Vector3(renderSize.x-_bevelSize,-renderSize.y,renderSize.z-_bevelSize),
- Vector3(-renderSize.x+_bevelSize,-renderSize.y,renderSize.z-_bevelSize)
- );
- addTriangle(Vector3(-renderSize.x+_bevelSize,-renderSize.y,renderSize.z-_bevelSize),
- Vector3(-renderSize.x+_bevelSize,-renderSize.y,-renderSize.z+_bevelSize),
- Vector3(renderSize.x-_bevelSize,-renderSize.y,-renderSize.z+_bevelSize)
- );
- // Left
- addTriangle(Vector3(-renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize),
- Vector3(-renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize),
- Vector3(-renderSize.x,renderSize.y-_bevelSize,renderSize.z-_bevelSize)
- );
- addTriangle(Vector3(-renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize),
- Vector3(-renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize),
- Vector3(-renderSize.x,-renderSize.y+_bevelSize,-renderSize.z+_bevelSize)
- );
-
- // Right
- addTriangle(Vector3(renderSize.x,renderSize.y-_bevelSize,renderSize.z-_bevelSize),
- Vector3(renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize),
- Vector3(renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize)
- );
- addTriangle(Vector3(renderSize.x,-renderSize.y+_bevelSize,-renderSize.z+_bevelSize),
- Vector3(renderSize.x,renderSize.y-_bevelSize,-renderSize.z+_bevelSize),
- Vector3(renderSize.x,-renderSize.y+_bevelSize,renderSize.z-_bevelSize)
- );
-
-
- // Bevel Top Front
- makeFace(0,36,48);
- makeFace(48,18,0);
- // Bevel Left Front Corner
- makeFace(18,156,162);
- makeFace(24,18,162);
- // Bevel Left Front Top Corner
- makeFace(48,156,18);
- // Bevel Left Front Bottom Corner
- makeFace(120,6,150);
- // Bevel Left Top
- makeFace(48,66,156);
- makeFace(144,156,66);
- // Bevel Bottom
- makeFace(6,120,114);
- makeFace(114,12,6);
- // Left Bottom
- makeFace(120,150,174);
- makeFace(174,132,120);
- // Right Front Top Corner
- makeFace(36,0,180);
- // Right Front Corner
- makeFace(180,0,12);
- makeFace(186,180,12);
- // Right Front Bottom Corner
- makeFace(186,12,114);
- // Right Bottom
- makeFace(186,114,108);
- makeFace(108,198,186);
- // Right Top Corner
- makeFace(180,192,36);
- makeFace(192,42,36);
- // Right Back Top Corner
- makeFace(72,42,192);
- // Right Back Bottom Corner
- makeFace(78,198,108);
- // Right Back Corner
- makeFace(72,192,198);
- makeFace(198,78,72);
- // Back Bottom Corner
- makeFace(78,108,132);
- makeFace(132,84,78);
- // Back Top
- makeFace(42,72,102);
- makeFace(102,66,42);
- // Back Left Top Corner
- makeFace(144,66,102);
- // Back Left Corner
- makeFace(144,102,84);
- makeFace(84,174,144);
- // Back Left Bottom Corner
- makeFace(174,84,132);
- for (unsigned short i=0;i<_vertices.size()/6;i++) {
- _indices.push_back(i);
- }
- }
- break;
- case Enum::Shape::Cylinder:
- {
- /*int fsize = renderSize.y/(pi()/2);
- //makeFace(0,0,48);
- // Front
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z),
- Vector3(renderSize.x,-renderSize.y+fsize,renderSize.z)
- );
-
- addTriangle(Vector3(-renderSize.x,renderSize.y-fsize,renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z),
- Vector3(renderSize.x,renderSize.y-fsize,renderSize.z)
- );
-
- // Top
- addTriangle(Vector3(renderSize.x,renderSize.y,renderSize.z-fsize),
- Vector3(renderSize.x,renderSize.y,-renderSize.z+fsize),
- Vector3(-renderSize.x,renderSize.y,renderSize.z-fsize)
- );
- addTriangle(Vector3(-renderSize.x,renderSize.y,renderSize.z-fsize),
- Vector3(renderSize.x,renderSize.y,-renderSize.z+fsize),
- Vector3(-renderSize.x,renderSize.y,-renderSize.z+fsize)
- );
-
- // Back
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z),
- Vector3(renderSize.x,-renderSize.y+fsize,-renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,-renderSize.z)
- );
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z),
- Vector3(-renderSize.x,-renderSize.y+fsize,-renderSize.z),
- Vector3(-renderSize.x,renderSize.y-fsize,-renderSize.z)
- );
-
- // Bottom
- addTriangle(Vector3(renderSize.x,-renderSize.y,-renderSize.z+fsize),
- Vector3(renderSize.x,-renderSize.y,renderSize.z-fsize),
- Vector3(-renderSize.x,-renderSize.y,renderSize.z-fsize)
- );
- addTriangle(Vector3(-renderSize.x,-renderSize.y,renderSize.z-fsize),
- Vector3(-renderSize.x,-renderSize.y,-renderSize.z+fsize),
- Vector3(renderSize.x,-renderSize.y,-renderSize.z+fsize)
- );
- // Left
- /*addTriangle(Vector3(-renderSize.x,renderSize.y-fsize,-renderSize.z+fsize),
- Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z-fsize),
- Vector3(-renderSize.x,renderSize.y-fsize,renderSize.z-fsize)
- );
- addTriangle(Vector3(-renderSize.x,-renderSize.y+fsize,renderSize.z-fsize),
- Vector3(-renderSize.x,renderSize.y-fsize,-renderSize.z+fsize),
- Vector3(-renderSize.x,-renderSize.y+fsize,-renderSize.z+fsize)
- );
- // Right
- addTriangle(Vector3(renderSize.x,renderSize.y-fsize,renderSize.z-fsize),
- Vector3(renderSize.x,-renderSize.y+fsize,renderSize.z-fsize),
- Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z+fsize)
- );
- addTriangle(Vector3(renderSize.x,-renderSize.y+fsize,-renderSize.z+fsize),
- Vector3(renderSize.x,renderSize.y-fsize,-renderSize.z+fsize),
- Vector3(renderSize.x,-renderSize.y+fsize,renderSize.z-fsize)
- );//*/
-
-
- /*// Bevel Top Front
- makeFace(0,36,48);
- makeFace(48,18,0);
- // Bevel Left Front Corner
- makeFace(18,156,162);
- makeFace(24,18,162);
- // Bevel Left Front Top Corner
- makeFace(48,156,18);
- // Bevel Left Front Bottom Corner
- makeFace(120,6,150);
- // Bevel Left Top
- makeFace(48,66,156);
- makeFace(144,156,66);
- // Bevel Bottom
- makeFace(6,120,114);
- makeFace(114,12,6);
- // Left Bottom
- makeFace(120,150,174);
- makeFace(174,132,120);
- // Right Front Top Corner
- makeFace(36,0,180);
- // Right Front Corner
- makeFace(180,0,12);
- makeFace(186,180,12);
- // Right Front Bottom Corner
- makeFace(186,12,114);
- // Right Bottom
- makeFace(186,114,108);
- makeFace(108,198,186);
- // Right Top Corner
- makeFace(180,192,36);
- makeFace(192,42,36);
- // Right Back Top Corner
- makeFace(72,42,192);
- // Right Back Bottom Corner
- makeFace(78,198,108);
- // Right Back Corner
- makeFace(72,192,198);
- makeFace(198,78,72);
- // Back Bottom Corner
- makeFace(78,108,132);
- makeFace(132,84,78);
- // Back Top
- makeFace(42,72,102);
- makeFace(102,66,42);
- // Back Left Top Corner
- makeFace(144,66,102);
- // Back Left Corner
- makeFace(144,102,84);
- makeFace(84,174,144);
- // Back Left Bottom Corner
- makeFace(174,84,132);*/
- /*float radius = renderSize.y + (renderSize.y * (1 - cos(pi() / 12)));
- Vector2 xy[13];
- for(int i = 0; i < 13; i++)
- {
- //Get the next point
- float y = radius * cos(((double)i-G3D::toRadians(29)) * pi()/6);
- float z = radius * sin(((double)i-G3D::toRadians(29)) * pi()/6);
- xy[i] = Vector2(y,z);
- }
- for(int i = 0; i < 12; i++)
- {
- //Create a Quad for the face (i to i+1)
- addSmoothTriangle(
- Vector3(renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y));
- addSmoothTriangle(
- Vector3(renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y),
- Vector3(renderSize.x, xy[i+1].x, xy[i+1].y));
- //Cap on the right
- addTriangle(
- Vector3(renderSize.x, xy[0].x, xy[0].y),
- Vector3(renderSize.x, xy[i].x, xy[i].y),
- Vector3(renderSize.x, xy[i+1].x, xy[i+1].y));
- //Cap on the left
- addTriangle(
- Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y),
- Vector3(-renderSize.x, xy[i].x, xy[i].y),
- Vector3(-renderSize.x, xy[0].x, xy[0].y));
- }*/
- /*float facetRatio = renderSize.x / (pi() * 0.5F);
- addQuad(
- Vector3(renderSize.x, renderSize.y, renderSize.z-facetRatio),
- Vector3(renderSize.x, renderSize.y, -renderSize.z+facetRatio),
- Vector3(-renderSize.x, renderSize.y, -renderSize.z+facetRatio),
- Vector3(-renderSize.x, renderSize.y, renderSize.z-facetRatio));
-
- addQuad(
- Vector3(renderSize.x, renderSize.y-facetRatio, renderSize.z),
- Vector3(-renderSize.x, renderSize.y-facetRatio, renderSize.z),
- Vector3(-renderSize.x, -renderSize.y+facetRatio, renderSize.z),
- Vector3(renderSize.x, -renderSize.y+facetRatio, renderSize.z));
- addQuad(
- Vector3(-renderSize.x, -renderSize.y, renderSize.z-facetRatio),
- Vector3(-renderSize.x, -renderSize.y, -renderSize.z+facetRatio),
- Vector3(renderSize.x, -renderSize.y, -renderSize.z+facetRatio),
- Vector3(renderSize.x, -renderSize.y, renderSize.z-facetRatio));
- addQuad(
- Vector3(renderSize.x, -renderSize.y+facetRatio, -renderSize.z),
- Vector3(-renderSize.x, -renderSize.y+facetRatio, -renderSize.z),
- Vector3(-renderSize.x, renderSize.y-facetRatio, -renderSize.z),
- Vector3(renderSize.x, renderSize.y-facetRatio, -renderSize.z));*/
-
- /*addPlus(Vector3(-renderSize.x-0.01,0,0));
- addPlus2(Vector3(renderSize.x+0.01,0,0));
-
- for (unsigned short i=0;i<_vertices.size()/6;i++) {
- _indices.push_back(i);
- }
- //std::reverse(_vertices.begin(), _vertices.end());
- //std::reverse(_normals.begin(), _normals.end());
- )*/
- GLUquadric* q = gluNewQuadric();
-
- addPlus(Vector3(-renderSize.x-0.01,0,0));
- addPlus2(Vector3(renderSize.x+0.01,0,0));
- for (unsigned short i=0;i<_vertices.size()/6;i++) {
- _indices.push_back(i);
- }
- glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]);
- glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]);
- glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]);
- glNewList(glList, GL_COMPILE);
- glColor(this->color);
- glPushMatrix();
- glRotatef(90, 0, 1, 0);
- glScalef(renderSize.x, renderSize.y, renderSize.z);
- glTranslatef(0,0,1);
- gluDisk(q, 0, 1, 12, 12);
- glTranslatef(0,0,-2);
- gluCylinder(q, 1, 1, 2, 12, 1);
- glRotatef(180, 1, 0, 0);
- gluDisk(q, 0, 1, 12, 12);
- glPopMatrix();
- glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
- glEndList();
- rd->setObjectToWorldMatrix(cFrame);
- glCallList(glList);
- changed = false;
- return;
-
- }
- break;
- }
-
- changed=false;
- glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]);
- glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]);
- glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]);
- glNewList(glList, GL_COMPILE);
- //glPushMatrix();
- //glTranslatef(2,7,0);
- glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
- //glPopMatrix();
- glEndList();
- }
- rd->setObjectToWorldMatrix(cFrame);
- glCallList(glList);
- postRender(rd);
- //rd->setObjectToWorldMatrix(cFrame);
-
-}
-#else
-void PartInstance::render(RenderDevice* rd)
-{
-
- if(changed)
- {
- Box box = getBox();
- changed = false;
- glNewList(glList, GL_COMPILE);
- glColor(color);
- /*glEnable( GL_TEXTURE_2D );
- glEnable(GL_BLEND);// you enable blending function
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glBindTexture( GL_TEXTURE_2D, Globals::surfaceId);
- glBegin(GL_QUADS);*/
- for(int i = 0; i < 96; i+=16)
- {
- /*double add = 0.8;
- Enum::SurfaceType::Value face;
- if(i == 0)//Back
- face = back;
- else if(i == 16)//Right
- face = right;
- else if(i == 32)//Front
- face = front;
- else if(i == 48)//Top
- face = top;
- else if(i == 64)//Left
- face = left;
- else if(i == 80)//Bottom
- face = bottom;
-
- /*if(face == Snaps)
- add = 0.0;
- else if(face == Inlets)
- add = 0.2;*/
-
- Vector3 v0 = Vector3(_vertices[i], _vertices[i+1], _vertices[i+2]), v1 = Vector3(_vertices[i+3], _vertices[i+4], _vertices[i+5]), v3 = Vector3(_vertices[i+9], _vertices[i+10], _vertices[i+11]);
- /*glNormal3fv((v1 - v0).cross(v3 - v0).direction());
- glTexCoord2f(0.0F,0.0F);
- glVertex3fv(v0);
- glTexCoord2f(1.0F,0.0F);
- glVertex3fv(v1);
- glTexCoord2f(1.0F,0.25F);
- glVertex3f(_vertices[i+6], _vertices[i+7], _vertices[i+8]);
- glTexCoord2f(0.0F,0.25F);
- glVertex3fv(v3);*/
-
- glEnable(GL_BLEND);// you enable blending function
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glBegin( GL_QUADS );
- glNormal3fv((v1 - v0).cross(v3 - v0).direction());
- //glTexCoord2d(0.0,0.0+add);
- glVertex3fv(v0);
- //glTexCoord2d( 1.0,0.0+add);
- glVertex3fv(v1);
- //glTexCoord2d(1.0,0.2+add);
- glVertex3f(_vertices[i+6], _vertices[i+7], _vertices[i+8]);
- //glTexCoord2d( 0.0,0.2+add);
- glVertex3fv(v3);
- glEnd();
- //glDisable( GL_TEXTURE_2D );
- }
- glEndList();
- /*glEnd();
- glDisable(GL_TEXTURE_2D);*/
- }
- glCallList(glList);
- glColor(Color3::white());
- if(!children.empty())
- {
- for(size_t i = 0; i < children.size(); i++)
- {
- children.at(i)->render(rd);
- }
- }
-
-}
-#endif
-
-PartInstance::~PartInstance(void)
-{
- glDeleteLists(glList, 1);
-}
-char pto[512];
-char pto2[512];
-#include
-
-static Enum::Shape::Value strEnum(TCHAR* shape)
-{
- if(strcmp("Block", shape) == 0)
- return Enum::Shape::Block;
- if(strcmp("Cylinder", shape) == 0)
- return Enum::Shape::Cylinder;
- return Enum::Shape::Ball;
-}
-
-static TCHAR* enumStr(int shape)
-{
- switch(shape)
- {
- case Enum::Shape::Block:
- return "Block";
- case Enum::Shape::Ball:
- return "Ball";
- case Enum::Shape::Cylinder:
- return "Cylinder";
- }
- return "Block";
-}
-
-void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
-{
- if(strcmp(item->lpszPropName, "Color3") == 0)
- {
- color = Color3(GetRValue(item->lpCurValue)/255.0F,GetGValue(item->lpCurValue)/255.0F,GetBValue(item->lpCurValue)/255.0F);
- changed=true;
- }
- if(strcmp(item->lpszPropName, "Anchored") == 0)
- {
- anchored= item->lpCurValue == TRUE;
- changed=true;
- }
- else if(strcmp(item->lpszPropName, "Offset") == 0)
- {
- std::string str = (LPTSTR)item->lpCurValue;
- std::vector vect;
- std::stringstream ss(str);
- float i;
-
- while (ss >> i)
- {
- vect.push_back(i);
-
- if (ss.peek() == ',')
- ss.ignore();
- }
-
- //if(vect.size() != 3)
- //{
- //sprintf(pto, "%g, %g, %g", cFrame.translation.x, cFrame.translation.y, cFrame.translation.z, "what");
- //LPCSTR str = LPCSTR(pto);
- //item->lpCurValue = (LPARAM)str;
- //}
- //else
- if(vect.size() == 3)
- {
- Vector3 pos(vect.at(0),vect.at(1),vect.at(2));
- setPosition(pos);
- }
- }
-
- else if(strcmp(item->lpszPropName, "Size") == 0)
- {
- std::string str = (LPTSTR)item->lpCurValue;
- std::vector vect;
- std::stringstream ss(str);
- float i;
-
- while (ss >> i)
- {
- vect.push_back(i);
-
- if (ss.peek() == ',')
- ss.ignore();
- }
-
- /*if(vect.size() != 3)
- {
- sprintf(pto, "%g, %g, %g", cFrame.translation.x, cFrame.translation.y, cFrame.translation.z, "what");
- LPCSTR str = LPCSTR(pto);
- item->lpCurValue = (LPARAM)str;
- }
- else*/
- if(vect.size() == 3)
- {
- Vector3 size(vect.at(0),vect.at(1),vect.at(2));
- setSize(size);
- }
- }
- if(strcmp(item->lpszPropName, "Shape") == 0)
- {
- printf("%s", enumStr(strEnum((TCHAR*)item->lpCurValue)));
- setShape(strEnum((TCHAR*)item->lpCurValue));
- }
- else PVInstance::PropUpdate(item);
-}
-
-
-
-std::vector PartInstance::getProperties()
-{
- std::vector properties = PVInstance::getProperties();
-
-
- properties.push_back(createPGI(
- "Properties",
- "Color3",
- "The color of the selected part",
- RGB((color.r*255),(color.g*255),(color.b*255)),
- PIT_COLOR
- ));
- properties.push_back(createPGI(
- "Item",
- "Anchored",
- "Whether the block can move or not",
- (LPARAM)anchored,
- PIT_CHECK
- ));
- sprintf_s(pto, "%g, %g, %g", position.x, position.y, position.z);
- properties.push_back(createPGI(
- "Item",
- "Offset",
- "The position of the object in the workspace",
- (LPARAM)pto,
- PIT_EDIT
- ));
- sprintf_s(pto2, "%g, %g, %g", size.x, size.y, size.z);
- properties.push_back(createPGI(
- "Item",
- "Size",
- "The position of the object in the workspace",
- (LPARAM)pto2,
- PIT_EDIT
- ));
- properties.push_back(createPGI(
- "Item",
- "Shape",
- "The shape of the object in the workspace",
- (LPARAM)enumStr(shape),
- PIT_COMBO,
- TEXT("Ball\0Block\0Cylinder\0")
- ));
- return properties;
-}
-
-
diff --git a/src/source/DataModel/TextButtonInstance.cpp b/src/source/DataModel/TextButtonInstance.cpp
deleted file mode 100644
index ae73feb..0000000
--- a/src/source/DataModel/TextButtonInstance.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-#include "DataModel/TextButtonInstance.h"
-
-
-TextButtonInstance::TextButtonInstance(void)
-{
- BaseButtonInstance::BaseButtonInstance();
- boxBegin = Vector2(0,0);
- boxEnd = Vector2(0,0);
- fontLocationRelativeTo = Vector2(0,0);
- centeredWithinBox = false;
- title = "TextBox";
- textColor = Color4(1, 1, 1, 1);
- textOutlineColor = Color4(0, 0, 0, 0);
- boxColor = Color4(0.6F,0.6F,0.6F,0.4F);
- boxOutlineColor = Color4(0, 0, 0, 0);
- setAllColorsSame();
- textSize = 12;
- floatBottom = false;
- floatRight = false;
- floatCenter = false;
- visible = true;
- className = "TextButton";
- disabled = false;
- selected = false;
-}
-
-bool TextButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd)
-{
- Vector3 point1;
- Vector3 point2;
- if(floatBottom)
- {
- point1 = Vector3(boxBegin.x, rd->getHeight() + boxBegin.y,0);
- point2 = Vector3(boxEnd.x, rd->getHeight() + boxEnd.y,0);
-
- }
- else
- {
- point1 = Vector3(boxBegin.x, boxBegin.y,0);
- point2 = Vector3(boxEnd.x, boxEnd.y,0);
- }
- if(mousex >= point1.x && mousey >= point1.y)
- {
- if(mousex < point2.x && mousey < point2.y)
- {
- return true;
- }
- }
- return false;
-}
-
-void TextButtonInstance::setAllColorsSame()
-{
- textColorOvr = textColor;
- textOutlineColorOvr = textOutlineColor;
- boxColorOvr = boxColor;
- boxOutlineColorOvr = boxOutlineColor;
- textColorDn = textColor;
- textOutlineColorDn = textOutlineColor;
- boxColorDn = boxColor;
- boxOutlineColorDn = boxOutlineColor;
- textColorDis = textColor;
- textOutlineColorDis = textOutlineColor;
- boxColorDis = boxColor;
- boxOutlineColorDis = boxOutlineColor;
-}
-
-TextButtonInstance::~TextButtonInstance(void)
-{
-}
-
-void TextButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown)
-{
- Vector3 point1;
- Vector3 point2;
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisableClientState(GL_COLOR_ARRAY);
-
- if(floatBottom)
- {
- point1 = Vector3(boxBegin.x, rd->getHeight() + boxBegin.y,0);
- point2 = Vector3(boxEnd.x, rd->getHeight() + boxEnd.y,0);
-
- }
- else
- {
- point1 = Vector3(boxBegin.x, boxBegin.y,0);
- point2 = Vector3(boxEnd.x, boxEnd.y,0);
- }
- Vector2 RelativeTo = Vector2(point1.x + fontLocationRelativeTo.x, point1.y + fontLocationRelativeTo.y);
- if(disabled)
- {
- Draw::box(Box(point1, point2), rd, boxColorDis, boxOutlineColorDis);
- font->draw2D(rd, title, RelativeTo, textSize, textColorDis, textOutlineColorDis);
- }
- else if(mouseInArea(point1.x, point1.y, point2.x, point2.y, mousePos.x, mousePos.y) && mouseDown)
- {
- Draw::box(Box(point1, point2), rd, boxColorDn, boxOutlineColorDn);
- font->draw2D(rd, title, RelativeTo, textSize, textColorDn, textOutlineColorDn);
- }
- else if(selected || mouseInArea(point1.x, point1.y, point2.x, point2.y, mousePos.x, mousePos.y))
- {
- Draw::box(Box(point1, point2), rd, boxColorOvr, boxOutlineColorOvr);
- font->draw2D(rd, title, RelativeTo, textSize, textColorOvr, textOutlineColorOvr);
- }
- else
- {
- Draw::box(Box(point1, point2), rd, boxColor, boxOutlineColor);
- font->draw2D(rd, title, RelativeTo, textSize, textColor, textOutlineColor);
- }
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glEnableClientState(GL_COLOR_ARRAY);
-}
-
-void doNullCheck()
-{
-}
\ No newline at end of file
diff --git a/src/source/DataModel/ToggleImageButtonInstance.cpp b/src/source/DataModel/ToggleImageButtonInstance.cpp
deleted file mode 100644
index b14f794..0000000
--- a/src/source/DataModel/ToggleImageButtonInstance.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-#include "DataModel/ToggleImageButtonInstance.h"
-
-ToggleImageButtonInstance::ToggleImageButtonInstance(G3D::TextureRef newImage,
- G3D::TextureRef overImage,
- G3D::TextureRef downImage,
- G3D::TextureRef disableImage,
- G3D::TextureRef newImage2,
- G3D::TextureRef overImage2,
- G3D::TextureRef downImage2,
- G3D::TextureRef disableImage2) : ImageButtonInstance(newImage, overImage, downImage, disableImage)
-{
- image2 = newImage2;
- openGLID2 = image2->getOpenGLID();
- image_ovr2 = overImage2;
- if(!image_ovr2.isNull())
- openGLID2_ovr = image_ovr2->getOpenGLID();
- image_dn2 = downImage2;
- if(!image_dn2.isNull())
- openGLID2_dn = image_dn2->getOpenGLID();
- image_ds2 = disableImage2;
- if(!image_ds2.isNull())
- openGLID2_ds = image_ds2->getOpenGLID();
- checked = false;
- className = "ToggleImageButton";
-}
-
-ToggleImageButtonInstance::~ToggleImageButtonInstance(void)
-{
- //Delete everything on destruction
- image2.~ReferenceCountedPointer();
- delete image2.getPointer();
- image_ovr2.~ReferenceCountedPointer();
- delete image_ovr2.getPointer();
- image_ds2.~ReferenceCountedPointer();
- delete image_ds2.getPointer();
- image_dn2.~ReferenceCountedPointer();
- delete image_dn2.getPointer();
- image = NULL;
- image_ovr = NULL;
- image_ds = NULL;
- image_dn = NULL;
- delete listener;
- listener = NULL;
- selected = false;
-}
-
-
-void ToggleImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown)
-{
- bool drawDisabledBox = false;
- Vector2 positionRelative = position;
- if(floatRight && floatBottom)
- {
- positionRelative = Vector2(rd->getWidth() + position.x, rd->getHeight() + position.y);
- }
- else if(floatBottom)
- {
- positionRelative = Vector2(position.x, rd->getHeight() + position.y);
- }
- else if(floatRight)
- {
- positionRelative = Vector2(rd->getWidth() + position.x, position.y);
- }
- int renderimage = openGLID;
- if(checked)
- {
- renderimage = openGLID2;
- if(selected == true && !image_dn2.isNull() && !disabled)
- {
- renderimage = openGLID2_dn;
- }
- else if(disabled)
- {
- if(!image_ds2.isNull())
- renderimage = openGLID2_ds;
- else
- drawDisabledBox = true;
- }
- else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y))
- {
- if(mouseDown && !image_dn2.isNull())
- {
- renderimage = openGLID2_dn;
- }
- else if(!image_ovr2.isNull())
- {
- renderimage = openGLID2_ovr;
- }
- }
- }
- else
- {
- if(selected == true && !image_dn.isNull() && !disabled)
- {
- renderimage = openGLID_dn;
- }
- else if(disabled)
- {
- if(!image_ds.isNull())
- renderimage = openGLID_ds;
- else
- drawDisabledBox = true;
- }
- else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y))
- {
- if(mouseDown && !image_dn.isNull())
- {
- renderimage = openGLID_dn;
- }
- else if(!image_ovr.isNull())
- {
- renderimage = openGLID_ovr;
- }
- }
- }
-
-
-
- glEnable( GL_TEXTURE_2D );
- glEnable(GL_BLEND);// you enable blending function
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glBindTexture( GL_TEXTURE_2D, renderimage);
- glBegin( GL_QUADS );
- glTexCoord2d(0.0,0.0);
- glVertex2f( positionRelative.x, positionRelative.y );
- glTexCoord2d( 1.0,0.0 );
- glVertex2f( positionRelative.x + size.x, positionRelative.y );
- glTexCoord2d( 1.0,1.0 );
- glVertex2f( positionRelative.x + size.x, positionRelative.y + size.y );
- glTexCoord2d( 0.0,1.0 );
- glVertex2f( positionRelative.x, positionRelative.y + size.y );
- glEnd();
- glDisable( GL_TEXTURE_2D );
-
- if(drawDisabledBox)
- {
- Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7F,0.7F,0.7F,0.3F), Color4::clear());
- }
-}
\ No newline at end of file
diff --git a/src/source/DataModel/WorkspaceInstance.cpp b/src/source/DataModel/WorkspaceInstance.cpp
deleted file mode 100644
index 46b2fae..0000000
--- a/src/source/DataModel/WorkspaceInstance.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "DataModel/WorkspaceInstance.h"
-
-
-WorkspaceInstance::WorkspaceInstance(void)
-{
- GroupInstance::GroupInstance();
- name = "Workspace";
- className = "Workspace";
- canDelete = false;
-}
-
-WorkspaceInstance::~WorkspaceInstance(void)
-{
-}
diff --git a/src/source/DataModelV2/BaseGuiInstance.cpp b/src/source/DataModelV2/BaseGuiInstance.cpp
new file mode 100644
index 0000000..9dba0cd
--- /dev/null
+++ b/src/source/DataModelV2/BaseGuiInstance.cpp
@@ -0,0 +1 @@
+#include "DataModelV2/BaseGuiInstance.h"
\ No newline at end of file
diff --git a/src/source/Globals.cpp b/src/source/Globals.cpp
index fc67cba..851c2df 100644
--- a/src/source/Globals.cpp
+++ b/src/source/Globals.cpp
@@ -2,9 +2,9 @@
#include "Application.h"
int const Globals::gen = 0;
-int const Globals::major = 100;
-int const Globals::minor = 4;
-int const Globals::patch = 3;
+int const Globals::major = 0;
+int const Globals::minor = 104;
+int const Globals::patch = 5;
int Globals::surfaceId = 2;
//bool Globals::showMouse = true;
bool Globals::useMousePoint = false;
diff --git a/src/source/PropertyWindow.cpp b/src/source/PropertyWindow.cpp
index d32641b..7de57b8 100644
--- a/src/source/PropertyWindow.cpp
+++ b/src/source/PropertyWindow.cpp
@@ -79,7 +79,7 @@ LRESULT CALLBACK PropProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
break;
case WM_DRAWITEM:
{
- std::cout << "Drawing?" << "\r\n";
+ //std::cout << "Drawing?" << "\r\n";
COLORREF clrBackground;
COLORREF clrForeground;
TEXTMETRIC tm;