Sfoglia il codice sorgente

easymesh : Added Twist/Ben/Shear & Taper refactor.

legacy
Benjamin ‘Touky’ Huet touky 12 anni fa
parent
commit
506befcf4a
9 ha cambiato i file con 916 aggiunte e 426 eliminazioni
  1. +47
    -9
      build/vs2010/Lol.sln
  2. +24
    -3
      src/easymesh/easymesh-parser.y
  3. +15
    -0
      src/easymesh/easymesh-scanner.l
  4. +64
    -20
      src/easymesh/easymesh.cpp
  5. +85
    -18
      src/easymesh/easymesh.h
  6. +390
    -194
      src/generated/easymesh-parser.cpp
  7. +57
    -42
      src/generated/easymesh-parser.h
  8. +228
    -138
      src/generated/easymesh-scanner.cpp
  9. +6
    -2
      test/MeshViewerBuffer.txt

+ 47
- 9
build/vs2010/Lol.sln Vedi File

@@ -168,6 +168,7 @@ Global
{EF1A4E80-63FA-4EB0-B834-12B6C500F31C}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|Any CPU.ActiveCfg = Debug|Win32
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|PS3.ActiveCfg = Debug|PS3
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|PS3.Build.0 = Debug|PS3
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -179,6 +180,7 @@ Global
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Release|Any CPU.ActiveCfg = Release|Win32
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Release|Mixed Platforms.Build.0 = Release|Win32
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Release|PS3.ActiveCfg = Release|PS3
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Release|PS3.Build.0 = Release|PS3
{17F0F184-4436-4D08-B8AA-16572EA238DB}.Release|Win32.ActiveCfg = Release|Win32
@@ -204,6 +206,7 @@ Global
{9C66B179-0737-4BDA-AB42-2ADE478A9008}.Release|Xbox 360.ActiveCfg = Release|Xbox 360
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|PS3.ActiveCfg = Debug|PS3
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|PS3.Build.0 = Debug|PS3
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -215,6 +218,7 @@ Global
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Any CPU.ActiveCfg = Release|Win32
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Mixed Platforms.Build.0 = Release|Win32
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|PS3.ActiveCfg = Release|PS3
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|PS3.Build.0 = Release|PS3
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Win32.ActiveCfg = Release|Win32
@@ -226,6 +230,7 @@ Global
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Any CPU.ActiveCfg = Debug|Win32
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|PS3.ActiveCfg = Debug|PS3
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|PS3.Build.0 = Debug|PS3
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -237,6 +242,7 @@ Global
{83D3B207-C601-4025-8F41-01DEDC354661}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Any CPU.ActiveCfg = Release|Win32
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Mixed Platforms.Build.0 = Release|Win32
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|PS3.ActiveCfg = Release|PS3
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|PS3.Build.0 = Release|PS3
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Win32.ActiveCfg = Release|Win32
@@ -248,6 +254,7 @@ Global
{83D3B207-C601-4025-8F41-01DEDC354661}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Any CPU.ActiveCfg = Debug|Win32
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|PS3.ActiveCfg = Debug|PS3
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|PS3.Build.0 = Debug|PS3
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -259,6 +266,7 @@ Global
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Any CPU.ActiveCfg = Release|Win32
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Mixed Platforms.Build.0 = Release|Win32
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|PS3.ActiveCfg = Release|PS3
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|PS3.Build.0 = Release|PS3
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Win32.ActiveCfg = Release|Win32
@@ -270,6 +278,7 @@ Global
{B1E10086-A1DA-401A-834D-969C9DBB5CC1}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|Any CPU.ActiveCfg = Debug|Win32
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|PS3.ActiveCfg = Debug|PS3
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|PS3.Build.0 = Debug|PS3
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -281,6 +290,7 @@ Global
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|Any CPU.ActiveCfg = Release|Win32
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|Mixed Platforms.Build.0 = Release|Win32
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|PS3.ActiveCfg = Release|PS3
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|PS3.Build.0 = Release|PS3
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|Win32.ActiveCfg = Release|Win32
@@ -292,6 +302,7 @@ Global
{80F81C11-8DA2-4990-91CB-9807783BA46E}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Any CPU.ActiveCfg = Debug|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|PS3.ActiveCfg = Debug|PS3
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|PS3.Build.0 = Debug|PS3
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -303,6 +314,7 @@ Global
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Any CPU.ActiveCfg = Release|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Mixed Platforms.Build.0 = Release|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Mixed Platforms.Deploy.0 = Release|Win32
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|PS3.ActiveCfg = Release|PS3
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|PS3.Build.0 = Release|PS3
@@ -315,6 +327,7 @@ Global
{B92ABADC-45BE-4CC5-B724-9426053123A1}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Any CPU.ActiveCfg = Debug|Win32
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|PS3.ActiveCfg = Debug|PS3
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|PS3.Build.0 = Debug|PS3
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -326,6 +339,7 @@ Global
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Any CPU.ActiveCfg = Release|Win32
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Mixed Platforms.Build.0 = Release|Win32
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|PS3.ActiveCfg = Release|PS3
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|PS3.Build.0 = Release|PS3
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Win32.ActiveCfg = Release|Win32
@@ -337,6 +351,7 @@ Global
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Any CPU.ActiveCfg = Debug|Win32
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|PS3.ActiveCfg = Debug|PS3
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|PS3.Build.0 = Debug|PS3
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -348,6 +363,7 @@ Global
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Any CPU.ActiveCfg = Release|Win32
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Mixed Platforms.Build.0 = Release|Win32
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|PS3.ActiveCfg = Release|PS3
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|PS3.Build.0 = Release|PS3
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Win32.ActiveCfg = Release|Win32
@@ -359,6 +375,7 @@ Global
{1C5B8702-290C-42DA-AA9E-671348F5B747}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Any CPU.ActiveCfg = Debug|Win32
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|PS3.ActiveCfg = Debug|PS3
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|PS3.Build.0 = Debug|PS3
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -370,6 +387,7 @@ Global
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Any CPU.ActiveCfg = Release|Win32
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Mixed Platforms.Build.0 = Release|Win32
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|PS3.ActiveCfg = Release|PS3
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|PS3.Build.0 = Release|PS3
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Win32.ActiveCfg = Release|Win32
@@ -381,6 +399,7 @@ Global
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|Any CPU.ActiveCfg = Debug|Win32
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|PS3.ActiveCfg = Debug|PS3
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|PS3.Build.0 = Debug|PS3
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -392,6 +411,7 @@ Global
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|Any CPU.ActiveCfg = Release|Win32
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|Mixed Platforms.Build.0 = Release|Win32
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|PS3.ActiveCfg = Release|PS3
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|PS3.Build.0 = Release|PS3
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|Win32.ActiveCfg = Release|Win32
@@ -403,6 +423,7 @@ Global
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|PS3.ActiveCfg = Debug|PS3
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|PS3.Build.0 = Debug|PS3
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -414,6 +435,7 @@ Global
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|Any CPU.ActiveCfg = Release|Win32
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|Mixed Platforms.Build.0 = Release|Win32
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|PS3.ActiveCfg = Release|PS3
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|PS3.Build.0 = Release|PS3
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|Win32.ActiveCfg = Release|Win32
@@ -425,6 +447,7 @@ Global
{EE203B88-44CF-4859-9D42-7A5F40FECB52}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|Any CPU.ActiveCfg = Debug|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|PS3.ActiveCfg = Debug|PS3
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|Win32.ActiveCfg = Debug|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|Win32.Build.0 = Debug|Win32
@@ -433,6 +456,7 @@ Global
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Debug|Xbox 360.ActiveCfg = Debug|Xbox 360
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|Any CPU.ActiveCfg = Release|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|Mixed Platforms.Build.0 = Release|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|PS3.ActiveCfg = Release|PS3
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|Win32.ActiveCfg = Release|Win32
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|Win32.Build.0 = Release|Win32
@@ -441,6 +465,7 @@ Global
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233}.Release|Xbox 360.ActiveCfg = Release|Xbox 360
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|PS3.ActiveCfg = Debug|PS3
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|PS3.Build.0 = Debug|PS3
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -452,6 +477,7 @@ Global
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|Any CPU.ActiveCfg = Release|Win32
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|Mixed Platforms.Build.0 = Release|Win32
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|PS3.ActiveCfg = Release|PS3
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|PS3.Build.0 = Release|PS3
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|Win32.ActiveCfg = Release|Win32
@@ -463,6 +489,7 @@ Global
{EE203B88-44CF-4859-9D42-7A5F43FECB52}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|PS3.ActiveCfg = Debug|PS3
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|PS3.Build.0 = Debug|PS3
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -474,6 +501,7 @@ Global
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Any CPU.ActiveCfg = Release|Win32
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Mixed Platforms.Build.0 = Release|Win32
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|PS3.ActiveCfg = Release|PS3
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|PS3.Build.0 = Release|PS3
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Win32.ActiveCfg = Release|Win32
@@ -485,6 +513,7 @@ Global
{EE203B88-44CF-4859-9D42-7A1F43FECB52}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|PS3.ActiveCfg = Debug|PS3
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|PS3.Build.0 = Debug|PS3
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -496,6 +525,7 @@ Global
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Any CPU.ActiveCfg = Release|Win32
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Mixed Platforms.Build.0 = Release|Win32
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|PS3.ActiveCfg = Release|PS3
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|PS3.Build.0 = Release|PS3
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Win32.ActiveCfg = Release|Win32
@@ -507,6 +537,7 @@ Global
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|Any CPU.ActiveCfg = Debug|Win32
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|PS3.ActiveCfg = Debug|PS3
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|PS3.Build.0 = Debug|PS3
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -518,6 +549,7 @@ Global
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|Any CPU.ActiveCfg = Release|Win32
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|Mixed Platforms.Build.0 = Release|Win32
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|PS3.ActiveCfg = Release|PS3
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|PS3.Build.0 = Release|PS3
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|Win32.ActiveCfg = Release|Win32
@@ -529,6 +561,7 @@ Global
{A69411B3-6DE8-404E-8E70-0D3375A7492A}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|Any CPU.ActiveCfg = Debug|Win32
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|PS3.ActiveCfg = Debug|PS3
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|PS3.Build.0 = Debug|PS3
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -540,6 +573,7 @@ Global
{C2E01551-B636-4324-8461-71811DF6FBB5}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|Any CPU.ActiveCfg = Release|Win32
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|Mixed Platforms.Build.0 = Release|Win32
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|PS3.ActiveCfg = Release|PS3
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|PS3.Build.0 = Release|PS3
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|Win32.ActiveCfg = Release|Win32
@@ -551,6 +585,7 @@ Global
{C2E01551-B636-4324-8461-71811DF6FBB5}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Any CPU.ActiveCfg = Debug|Win32
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|PS3.ActiveCfg = Debug|PS3
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|PS3.Build.0 = Debug|PS3
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -562,6 +597,7 @@ Global
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Any CPU.ActiveCfg = Release|Win32
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Mixed Platforms.Build.0 = Release|Win32
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|PS3.ActiveCfg = Release|PS3
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|PS3.Build.0 = Release|PS3
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Win32.ActiveCfg = Release|Win32
@@ -573,6 +609,7 @@ Global
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|Any CPU.ActiveCfg = Debug|Win32
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|PS3.ActiveCfg = Debug|PS3
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|PS3.Build.0 = Debug|PS3
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -584,6 +621,7 @@ Global
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Release|Any CPU.ActiveCfg = Release|Win32
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Release|Mixed Platforms.Build.0 = Release|Win32
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Release|PS3.ActiveCfg = Release|PS3
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Release|PS3.Build.0 = Release|PS3
{5A77DCDD-2CBA-43E9-8B45-00C281443F77}.Release|Win32.ActiveCfg = Release|Win32
@@ -636,8 +674,8 @@ Global
{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Xbox 360.Build.0 = Release|Xbox 360
{834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Xbox 360.Deploy.0 = Release|Xbox 360
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Any CPU.ActiveCfg = Debug|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Mixed Platforms.Build.0 = Debug|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|PS3.ActiveCfg = Debug|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Win32.ActiveCfg = Debug|Win32
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Win32.Build.0 = Debug|Win32
@@ -645,8 +683,8 @@ Global
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|x64.Build.0 = Debug|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Debug|Xbox 360.ActiveCfg = Debug|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Any CPU.ActiveCfg = Release|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Mixed Platforms.ActiveCfg = Release|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Mixed Platforms.Build.0 = Release|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Mixed Platforms.Build.0 = Release|Win32
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|PS3.ActiveCfg = Release|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Win32.ActiveCfg = Release|Win32
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Win32.Build.0 = Release|Win32
@@ -654,8 +692,8 @@ Global
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|x64.Build.0 = Release|x64
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Xbox 360.ActiveCfg = Release|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Any CPU.ActiveCfg = Debug|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Mixed Platforms.Build.0 = Debug|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|PS3.ActiveCfg = Debug|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Win32.ActiveCfg = Debug|Win32
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Win32.Build.0 = Debug|Win32
@@ -663,8 +701,8 @@ Global
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|x64.Build.0 = Debug|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Xbox 360.ActiveCfg = Debug|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Any CPU.ActiveCfg = Release|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Mixed Platforms.ActiveCfg = Release|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Mixed Platforms.Build.0 = Release|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Mixed Platforms.Build.0 = Release|Win32
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|PS3.ActiveCfg = Release|x64
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Win32.ActiveCfg = Release|Win32
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Win32.Build.0 = Release|Win32
@@ -688,8 +726,8 @@ Global
{9C66B179-0737-4BDA-AB42-2ADE478A9008} = {08C6A854-533D-4A1E-924E-C4A62281869F}
{EF1A4E80-63FA-4EB0-B834-12B6C500F31C} = {08C6A854-533D-4A1E-924E-C4A62281869F}
{17F0F184-4436-4D08-B8AA-16572EA238DB} = {2F87CEAB-4818-443C-A5E3-6C34E7D967EC}
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA} = {1AFD580B-98B8-4689-B661-38C41132C60E}
{83D3B207-C601-4025-8F41-01DEDC354661} = {1AFD580B-98B8-4689-B661-38C41132C60E}
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA} = {1AFD580B-98B8-4689-B661-38C41132C60E}
{B1E10086-A1DA-401A-834D-969C9DBB5CC1} = {E0491194-35E3-4513-9D31-608EA3165ECF}
{80F81C11-8DA2-4990-91CB-9807783BA46E} = {E0491194-35E3-4513-9D31-608EA3165ECF}
{EE203B88-44CF-4859-9D42-7A1F43FECB52} = {E0491194-35E3-4513-9D31-608EA3165ECF}


+ 24
- 3
src/easymesh/easymesh-parser.y Vedi File

@@ -44,9 +44,9 @@

%token T_COLOR T_BGCOLOR

%token T_TRANSLATEX T_ROTATEX T_TAPERX T_SCALEX T_MIRRORX
%token T_TRANSLATEY T_ROTATEY T_TAPERY T_SCALEY T_MIRRORY
%token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_SCALEZ T_MIRRORZ
%token T_TRANSLATEX T_ROTATEX T_TAPERX T_TWISTX T_SHEARX T_STRETCHX T_BENDXY T_BENDXZ T_SCALEX T_MIRRORX
%token T_TRANSLATEY T_ROTATEY T_TAPERY T_TWISTY T_SHEARY T_STRETCHY T_BENDYX T_BENDYZ T_SCALEY T_MIRRORY
%token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_TWISTZ T_SHEARZ T_STRETCHZ T_BENDZX T_BENDZY T_SCALEZ T_MIRRORZ
%token T_TRANSLATE T_SCALE T_TOGGLESCALEWINDING T_RADIALJITTER
%token T_CSGUNION T_CSGSUBSTRACT T_CSGSUBSTRACTLOSS T_CSGAND T_CSGXOR
%token T_CHAMFER
@@ -126,8 +126,29 @@ transform_command:
| T_ROTATEY args1 { mc.m_mesh.RotateY($2.f0); }
| T_ROTATEZ args1 { mc.m_mesh.RotateZ($2.f0); }
| T_TAPERX args3 { mc.m_mesh.TaperX($2.f0, $2.f1, $2.f2); }
| T_TAPERX args4 { mc.m_mesh.TaperX($2.f0, $2.f1, $2.f2, $2.f3); }
| T_TAPERY args3 { mc.m_mesh.TaperY($2.f0, $2.f1, $2.f2); }
| T_TAPERY args4 { mc.m_mesh.TaperY($2.f0, $2.f1, $2.f2, $2.f3); }
| T_TAPERZ args3 { mc.m_mesh.TaperZ($2.f0, $2.f1, $2.f2); }
| T_TAPERZ args4 { mc.m_mesh.TaperZ($2.f0, $2.f1, $2.f2, $2.f3); }
| T_TWISTX args2 { mc.m_mesh.TwistX($2.f0, $2.f1); }
| T_TWISTY args2 { mc.m_mesh.TwistY($2.f0, $2.f1); }
| T_TWISTZ args2 { mc.m_mesh.TwistZ($2.f0, $2.f1); }
| T_SHEARX args3 { mc.m_mesh.ShearX($2.f0, $2.f1, $2.f2); }
| T_SHEARX args4 { mc.m_mesh.ShearX($2.f0, $2.f1, $2.f2, $2.f3); }
| T_SHEARY args3 { mc.m_mesh.ShearY($2.f0, $2.f1, $2.f2); }
| T_SHEARY args4 { mc.m_mesh.ShearY($2.f0, $2.f1, $2.f2, $2.f3); }
| T_SHEARZ args3 { mc.m_mesh.ShearZ($2.f0, $2.f1, $2.f2); }
| T_SHEARZ args4 { mc.m_mesh.ShearZ($2.f0, $2.f1, $2.f2, $2.f3); }
| T_STRETCHX args3 { mc.m_mesh.StretchX($2.f0, $2.f1, $2.f2); }
| T_STRETCHY args3 { mc.m_mesh.StretchY($2.f0, $2.f1, $2.f2); }
| T_STRETCHZ args3 { mc.m_mesh.StretchZ($2.f0, $2.f1, $2.f2); }
| T_BENDXY args2 { mc.m_mesh.BendXY($2.f0, $2.f1); }
| T_BENDXZ args2 { mc.m_mesh.BendXZ($2.f0, $2.f1); }
| T_BENDYX args2 { mc.m_mesh.BendYX($2.f0, $2.f1); }
| T_BENDYZ args2 { mc.m_mesh.BendYZ($2.f0, $2.f1); }
| T_BENDZX args2 { mc.m_mesh.BendZX($2.f0, $2.f1); }
| T_BENDZY args2 { mc.m_mesh.BendZY($2.f0, $2.f1); }
| T_SCALEX args1 { mc.m_mesh.Scale(vec3($2.f0, 1.0, 1.0)); }
| T_SCALEY args1 { mc.m_mesh.Scale(vec3(1.0, $2.f0, 1.0)); }
| T_SCALEZ args1 { mc.m_mesh.Scale(vec3(1.0, 1.0, $2.f0)); }


+ 15
- 0
src/easymesh/easymesh-scanner.l Vedi File

@@ -62,6 +62,21 @@ rz { return token::T_ROTATEZ; }
tax { return token::T_TAPERX; }
tay { return token::T_TAPERY; }
taz { return token::T_TAPERZ; }
twx { return token::T_TWISTX; }
twy { return token::T_TWISTY; }
twz { return token::T_TWISTZ; }
shx { return token::T_SHEARX; }
shy { return token::T_SHEARY; }
shz { return token::T_SHEARZ; }
stx { return token::T_STRETCHX; }
sty { return token::T_STRETCHY; }
stz { return token::T_STRETCHZ; }
bdxy { return token::T_BENDXY; }
bdxz { return token::T_BENDXZ; }
bdyx { return token::T_BENDYX; }
bdyz { return token::T_BENDYZ; }
bdzx { return token::T_BENDZX; }
bdzy { return token::T_BENDZY; }
sx { return token::T_SCALEX; }
sy { return token::T_SCALEY; }
sz { return token::T_SCALEZ; }


+ 64
- 20
src/easymesh/easymesh.cpp Vedi File

@@ -929,34 +929,78 @@ void EasyMesh::RadialJitter(float r)
}

//-----------------------------------------------------------------------------
void EasyMesh::TaperX(float y, float z, float xoff)
{
/* FIXME: this code breaks normals! */
for (int i = m_cursors.Last().m1; i < m_vert.Count(); i++)
{
m_vert[i].m1.y *= 1.f + (y * abs(m_vert[i].m1.x) + xoff);
m_vert[i].m1.z *= 1.f + (z * abs(m_vert[i].m1.x) + xoff);
}
}
void EasyMesh::TaperX(float ny, float nz, float xoff, int absolute) { DoMeshTransform(MeshTransform::Taper, Axis::X, Axis::X, ny, nz, xoff, absolute); }
void EasyMesh::TaperY(float nx, float nz, float yoff, int absolute) { DoMeshTransform(MeshTransform::Taper, Axis::Y, Axis::Y, nz, nx, yoff, absolute); }
void EasyMesh::TaperZ(float nx, float ny, float zoff, int absolute) { DoMeshTransform(MeshTransform::Taper, Axis::Z, Axis::Z, nx, ny, zoff, absolute); }

//-----------------------------------------------------------------------------
void EasyMesh::TaperY(float x, float z, float yoff)
{
for (int i = m_cursors.Last().m1; i < m_vert.Count(); i++)
{
m_vert[i].m1.x *= 1.f + (x * abs(m_vert[i].m1.y) + yoff);
m_vert[i].m1.z *= 1.f + (z * abs(m_vert[i].m1.y) + yoff);
}
}
void EasyMesh::TwistX(float t, float toff) { DoMeshTransform(MeshTransform::Twist, Axis::X, Axis::X, t, t, toff, 0); }
void EasyMesh::TwistY(float t, float toff) { DoMeshTransform(MeshTransform::Twist, Axis::Y, Axis::Y, t, t, toff, 0); }
void EasyMesh::TwistZ(float t, float toff) { DoMeshTransform(MeshTransform::Twist, Axis::Z, Axis::Z, t, t, toff, 0); }

//-----------------------------------------------------------------------------
void EasyMesh::ShearX(float ny, float nz, float xoff, int absolute) { DoMeshTransform(MeshTransform::Shear, Axis::X, Axis::X, ny, nz, xoff, absolute); }
void EasyMesh::ShearY(float nx, float nz, float yoff, int absolute) { DoMeshTransform(MeshTransform::Shear, Axis::Y, Axis::Y, nz, nx, yoff, absolute); }
void EasyMesh::ShearZ(float nx, float ny, float zoff, int absolute) { DoMeshTransform(MeshTransform::Shear, Axis::Z, Axis::Z, nx, ny, zoff, absolute); }

//-----------------------------------------------------------------------------
void EasyMesh::StretchX(float ny, float nz, float xoff) { DoMeshTransform(MeshTransform::Stretch, Axis::X, Axis::X, ny, nz, xoff, 0); }
void EasyMesh::StretchY(float nx, float nz, float yoff) { DoMeshTransform(MeshTransform::Stretch, Axis::Y, Axis::Y, nz, nx, yoff, 0); }
void EasyMesh::StretchZ(float nx, float ny, float zoff) { DoMeshTransform(MeshTransform::Stretch, Axis::Z, Axis::Z, nx, ny, zoff, 0); }

//-----------------------------------------------------------------------------
void EasyMesh::BendXY(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::X, Axis::Y, t, t, toff, 0); }
void EasyMesh::BendXZ(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::X, Axis::Z, t, t, toff, 0); }
void EasyMesh::BendYX(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Y, Axis::X, t, t, toff, 0); }
void EasyMesh::BendYZ(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Y, Axis::Z, t, t, toff, 0); }
void EasyMesh::BendZX(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Z, Axis::X, t, t, toff, 0); }
void EasyMesh::BendZY(float t, float toff) { DoMeshTransform(MeshTransform::Bend, Axis::Z, Axis::Y, t, t, toff, 0); }

//-----------------------------------------------------------------------------
void EasyMesh::TaperZ(float x, float y, float zoff)
void EasyMesh::DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, int absolute)
{
for (int i = m_cursors.Last().m1; i < m_vert.Count(); i++)
{
m_vert[i].m1.x *= 1.f + (x * abs(m_vert[i].m1.z) + zoff);
m_vert[i].m1.y *= 1.f + (y * abs(m_vert[i].m1.z) + zoff);
switch (ct)
{
case MeshTransform::Taper:
{
float value = m_vert[i].m1[axis0];
if (absolute) value = abs(value);
m_vert[i].m1[(axis0 + 1) % 3] *= max(0.f, 1.f + (n0 * value + noff));
m_vert[i].m1[(axis0 + 2) % 3] *= max(0.f, 1.f + (n1 * value + noff));
break;
}
case MeshTransform::Twist:
{
vec3 rotaxis = vec3(1.f); rotaxis[(axis0 + 1) % 3] = .0f; rotaxis[(axis0 + 2) % 3] = .0f;
m_vert[i].m1 = mat3::rotate(m_vert[i].m1[axis0] * n0 + noff, rotaxis) * m_vert[i].m1;
break;
}
case MeshTransform::Shear:
{
float value = m_vert[i].m1[axis0];
if (absolute) value = abs(value);
m_vert[i].m1[(axis0 + 1) % 3] += (n0 * value + noff);
m_vert[i].m1[(axis0 + 2) % 3] += (n1 * value + noff);
break;
}
case MeshTransform::Stretch:
{
//float value = abs(m_vert[i].m1[axis0]);
//m_vert[i].m1[(axis0 + 1) % 3] += (lol::pow(value, n0) + noff);
//m_vert[i].m1[(axis0 + 2) % 3] += (lol::pow(value, n1) + noff);
break;
}
case MeshTransform::Bend:
{
vec3 rotaxis = vec3(1.f); rotaxis[(axis1 + 1) % 3] = .0f; rotaxis[(axis1 + 2) % 3] = .0f;
m_vert[i].m1 = mat3::rotate(m_vert[i].m1[axis0] * n0 + noff, rotaxis) * m_vert[i].m1;
break;
}
}
}
ComputeNormals(m_cursors.Last().m2, m_indices.Count() - m_cursors.Last().m2);
}

//-----------------------------------------------------------------------------


+ 85
- 18
src/easymesh/easymesh.h Vedi File

@@ -78,6 +78,20 @@ private:
Array<int> master_list;
};

struct Axis
{
enum Value
{
X,
Y,
Z
}
m_value;

inline Axis(Value v) : m_value(v) {}
inline operator Value() { return m_value; }
};

struct MeshBuildOperation
{
enum Value
@@ -184,28 +198,81 @@ public:
- r : jitter maximum value.
*/
void RadialJitter(float r);
//TODO : twist
//TODO : bend
//TODO : stretch
//TODO : shear
/* [cmd:tax] multiply y&z by (1.0 + (n * x + xoff))
- y : value of n for y.
- z : value of n for z.
/* [cmd:tax] multiply axis y&z by x as y *= (1.0 + (ny * x + xoff))
- ny : value of n for y.
- nz : value of n for z.
- xoff : value of xoff.
- absolute (def:1) : if (1) Multiply will use an absolute x.
*/
void TaperX(float ny, float nz, float xoff, int absolute=1);
/* [cmd:tay] Same as TaperX, with Y */
void TaperY(float nx, float nz, float yoff, int absolute=1);
/* [cmd:taz] Same as TaperX, with Z */
void TaperZ(float nx, float ny, float zoff, int absolute=1);
/* [cmd:twx] Twist vertices around x axis with x as rotation value as p = (RotateX(x * t + toff) * p)
- t : Angle multiplier.
- toff : Applied offset.
*/
void TwistX(float t, float toff);
/* [cmd:twy] Same as TwistX, with Y */
void TwistY(float t, float toff);
/* [cmd:twz] Same as TwistX, with Z */
void TwistZ(float t, float toff);
/* [cmd:shx] Shear vertices using x value as shear quantity as y += (ny * x + xoff)
- ny : Value of n for y.
- nz : Value of n for z.
- xoff : Value of xoff.
- absolute (def:1) : if (1) Multiply will use an absolute x.
*/
void TaperX(float y, float z, float xoff);
/* [cmd:tay] multiply x&z by (1.0 + (n * y + yoff))
- x : value of n for x.
- z : value of n for z.
- yoff : value of yoff.
void ShearX(float ny, float nz, float xoff, int absolute=1);
/* [cmd:shy] Same as ShearX, with Y */
void ShearY(float nx, float nz, float yoff, int absolute=1);
/* [cmd:shz] Same as ShearX, with Z */
void ShearZ(float nx, float ny, float zoff, int absolute=1);
/* [cmd:stx] Stretch vertices using x value as stretch quantity as y += (pow(x, ny) + xoff)
- ny : Value of n for y.
- nz : Value of n for z.
- xoff : Value of xoff.
*/
void TaperY(float x, float z, float yoff);
/* [cmd:taz] multiply x&y by (1.0 + (n * z + zoff))
- x : value of n for x.
- y : value of n for y.
- zoff : value of zoff.
void StretchX(float ny, float nz, float xoff);
/* [cmd:sty] Same as StretchX, with Y */
void StretchY(float nx, float nz, float yoff);
/* [cmd:stz] Same as StretchX, with Z */
void StretchZ(float nx, float ny, float zoff);
/* [cmd:bdxy] Bend vertices using x as bend quantity along y axis using p = (RotateY(x * t + toff) * p)
- t : Angle multiplier.
- xoff : Applied offset.
*/
void TaperZ(float x, float y, float zoff);
void BendXY(float t, float toff);
/* [cmd:bdxz] Same as BendXY, with X & Z */
void BendXZ(float t, float toff);
/* [cmd:bdyx] Same as BendXY, with Y & X */
void BendYX(float t, float toff);
/* [cmd:bdyz] Same as BendXY, with Y & Z */
void BendYZ(float t, float toff);
/* [cmd:bdzx] Same as BendXY, with Z & X */
void BendZX(float t, float toff);
/* [cmd:bdzy] Same as BendXY, with Z & Y */
void BendZY(float t, float toff);
private:
struct MeshTransform
{
enum Value
{
Taper,
Twist,
Bend,
Stretch,
Shear
}
m_value;

inline MeshTransform(Value v) : m_value(v) {}
inline operator Value() { return m_value; }
};

void DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, int absolute);
public:
/* [cmd:s/sx/sy/sz] Scale vertices
- s : scale quantity.
*/


+ 390
- 194
src/generated/easymesh-parser.cpp Vedi File

@@ -1,8 +1,8 @@
/* A Bison parser, made by GNU Bison 2.5. */
/* A Bison parser, made by GNU Bison 2.4.2. */

/* Skeleton implementation for Bison LALR(1) parsers in C++
Copyright (C) 2002-2011 Free Software Foundation, Inc.
Copyright (C) 2002-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -546,310 +546,457 @@ namespace lol {

/* Line 677 of lalr1.cc */
#line 129 "easymesh/easymesh-parser.y"
{ mc.m_mesh.TaperY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
{ mc.m_mesh.TaperX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 28:

/* Line 677 of lalr1.cc */
#line 130 "easymesh/easymesh-parser.y"
{ mc.m_mesh.TaperZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
{ mc.m_mesh.TaperY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 29:

/* Line 677 of lalr1.cc */
#line 131 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].args).f0, 1.0, 1.0)); }
{ mc.m_mesh.TaperY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 30:

/* Line 677 of lalr1.cc */
#line 132 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3(1.0, (yysemantic_stack_[(2) - (2)].args).f0, 1.0)); }
{ mc.m_mesh.TaperZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 31:

/* Line 677 of lalr1.cc */
#line 133 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3(1.0, 1.0, (yysemantic_stack_[(2) - (2)].args).f0)); }
{ mc.m_mesh.TaperZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 32:

/* Line 677 of lalr1.cc */
#line 134 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
{ mc.m_mesh.TwistX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 33:

/* Line 677 of lalr1.cc */
#line 135 "easymesh/easymesh-parser.y"
{ mc.m_mesh.MirrorX(); }
{ mc.m_mesh.TwistY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 34:

/* Line 677 of lalr1.cc */
#line 136 "easymesh/easymesh-parser.y"
{ mc.m_mesh.MirrorY(); }
{ mc.m_mesh.TwistZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 35:

/* Line 677 of lalr1.cc */
#line 137 "easymesh/easymesh-parser.y"
{ mc.m_mesh.MirrorZ(); }
{ mc.m_mesh.ShearX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 36:

/* Line 677 of lalr1.cc */
#line 138 "easymesh/easymesh-parser.y"
{ mc.m_mesh.RadialJitter((yysemantic_stack_[(2) - (2)].args).f0); }
{ mc.m_mesh.ShearX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 37:

/* Line 677 of lalr1.cc */
#line 139 "easymesh/easymesh-parser.y"
{ mc.m_mesh.ToggleScaleWinding(); }
{ mc.m_mesh.ShearY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 38:

/* Line 677 of lalr1.cc */
#line 140 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgUnion(); }
{ mc.m_mesh.ShearY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 39:

/* Line 677 of lalr1.cc */
#line 141 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgSubstract(); }
{ mc.m_mesh.ShearZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 40:

/* Line 677 of lalr1.cc */
#line 142 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgSubstractLoss(); }
{ mc.m_mesh.ShearZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 41:

/* Line 677 of lalr1.cc */
#line 143 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgAnd(); }
{ mc.m_mesh.StretchX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 42:

/* Line 677 of lalr1.cc */
#line 144 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgXor(); }
{ mc.m_mesh.StretchY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 43:

/* Line 677 of lalr1.cc */
#line 145 "easymesh/easymesh-parser.y"
{ mc.m_mesh.StretchZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 44:

/* Line 677 of lalr1.cc */
#line 146 "easymesh/easymesh-parser.y"
{ mc.m_mesh.BendXY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 45:

/* Line 677 of lalr1.cc */
#line 147 "easymesh/easymesh-parser.y"
{ mc.m_mesh.BendXZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 46:

/* Line 677 of lalr1.cc */
#line 148 "easymesh/easymesh-parser.y"
{ mc.m_mesh.BendYX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 47:

/* Line 677 of lalr1.cc */
#line 149 "easymesh/easymesh-parser.y"
{ mc.m_mesh.BendYZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 48:

/* Line 677 of lalr1.cc */
#line 150 "easymesh/easymesh-parser.y"
{ mc.m_mesh.BendZX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 49:

/* Line 677 of lalr1.cc */
#line 151 "easymesh/easymesh-parser.y"
{ mc.m_mesh.BendZY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 50:

/* Line 677 of lalr1.cc */
#line 152 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].args).f0, 1.0, 1.0)); }
break;

case 51:

/* Line 677 of lalr1.cc */
#line 153 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3(1.0, (yysemantic_stack_[(2) - (2)].args).f0, 1.0)); }
break;

case 52:

/* Line 677 of lalr1.cc */
#line 154 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3(1.0, 1.0, (yysemantic_stack_[(2) - (2)].args).f0)); }
break;

case 53:

/* Line 677 of lalr1.cc */
#line 155 "easymesh/easymesh-parser.y"
{ mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
break;

case 54:

/* Line 677 of lalr1.cc */
#line 156 "easymesh/easymesh-parser.y"
{ mc.m_mesh.MirrorX(); }
break;

case 55:

/* Line 677 of lalr1.cc */
#line 157 "easymesh/easymesh-parser.y"
{ mc.m_mesh.MirrorY(); }
break;

case 56:

/* Line 677 of lalr1.cc */
#line 158 "easymesh/easymesh-parser.y"
{ mc.m_mesh.MirrorZ(); }
break;

case 57:

/* Line 677 of lalr1.cc */
#line 159 "easymesh/easymesh-parser.y"
{ mc.m_mesh.RadialJitter((yysemantic_stack_[(2) - (2)].args).f0); }
break;

case 58:

/* Line 677 of lalr1.cc */
#line 160 "easymesh/easymesh-parser.y"
{ mc.m_mesh.ToggleScaleWinding(); }
break;

case 59:

/* Line 677 of lalr1.cc */
#line 161 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgUnion(); }
break;

case 60:

/* Line 677 of lalr1.cc */
#line 162 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgSubstract(); }
break;

case 61:

/* Line 677 of lalr1.cc */
#line 163 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgSubstractLoss(); }
break;

case 62:

/* Line 677 of lalr1.cc */
#line 164 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgAnd(); }
break;

case 63:

/* Line 677 of lalr1.cc */
#line 165 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgXor(); }
break;

case 64:

/* Line 677 of lalr1.cc */
#line 169 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
(int)(yysemantic_stack_[(2) - (2)].args).f4, (int)(yysemantic_stack_[(2) - (2)].args).f5, 0); }
break;

case 44:
case 65:

/* Line 677 of lalr1.cc */
#line 151 "easymesh/easymesh-parser.y"
#line 172 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
(int)(yysemantic_stack_[(2) - (2)].args).f4, (int)(yysemantic_stack_[(2) - (2)].args).f5, (int)(yysemantic_stack_[(2) - (2)].args).f6); }
break;

case 45:
case 66:

/* Line 677 of lalr1.cc */
#line 154 "easymesh/easymesh-parser.y"
#line 175 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
break;

case 46:
case 67:

/* Line 677 of lalr1.cc */
#line 155 "easymesh/easymesh-parser.y"
#line 176 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 47:
case 68:

/* Line 677 of lalr1.cc */
#line 157 "easymesh/easymesh-parser.y"
#line 178 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 48:
case 69:

/* Line 677 of lalr1.cc */
#line 159 "easymesh/easymesh-parser.y"
#line 180 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSphere((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 49:
case 70:

/* Line 677 of lalr1.cc */
#line 160 "easymesh/easymesh-parser.y"
#line 181 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCapsule((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 50:
case 71:

/* Line 677 of lalr1.cc */
#line 161 "easymesh/easymesh-parser.y"
#line 182 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendTorus((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 51:
case 72:

/* Line 677 of lalr1.cc */
#line 162 "easymesh/easymesh-parser.y"
#line 183 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2,
(int)(yysemantic_stack_[(2) - (2)].args).f3, (int)(yysemantic_stack_[(2) - (2)].args).f4); }
break;

case 52:
case 73:

/* Line 677 of lalr1.cc */
#line 164 "easymesh/easymesh-parser.y"
#line 185 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendExpandedStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break;

case 53:
case 74:

/* Line 677 of lalr1.cc */
#line 166 "easymesh/easymesh-parser.y"
#line 187 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendDisc((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (int)(yysemantic_stack_[(2) - (2)].args).f2); }
break;

case 54:
case 75:

/* Line 677 of lalr1.cc */
#line 167 "easymesh/easymesh-parser.y"
#line 188 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 55:
case 76:

/* Line 677 of lalr1.cc */
#line 168 "easymesh/easymesh-parser.y"
#line 189 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
break;

case 56:
case 77:

/* Line 677 of lalr1.cc */
#line 169 "easymesh/easymesh-parser.y"
#line 190 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCog((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3, (yysemantic_stack_[(2) - (2)].args).f4, (yysemantic_stack_[(2) - (2)].args).f5, (yysemantic_stack_[(2) - (2)].args).f6,
(yysemantic_stack_[(2) - (2)].args).f7, (yysemantic_stack_[(2) - (2)].args).f8, (int)(yysemantic_stack_[(2) - (2)].args).f9); }
break;

case 57:
case 78:

/* Line 677 of lalr1.cc */
#line 174 "easymesh/easymesh-parser.y"
#line 195 "easymesh/easymesh-parser.y"
{ (yyval.args).f0 = (yysemantic_stack_[(1) - (1)].fval); }
break;

case 58:
case 79:

/* Line 677 of lalr1.cc */
#line 175 "easymesh/easymesh-parser.y"
#line 196 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f1 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 59:
case 80:

/* Line 677 of lalr1.cc */
#line 176 "easymesh/easymesh-parser.y"
#line 197 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f2 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 60:
case 81:

/* Line 677 of lalr1.cc */
#line 177 "easymesh/easymesh-parser.y"
#line 198 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f3 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 61:
case 82:

/* Line 677 of lalr1.cc */
#line 178 "easymesh/easymesh-parser.y"
#line 199 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f4 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 62:
case 83:

/* Line 677 of lalr1.cc */
#line 179 "easymesh/easymesh-parser.y"
#line 200 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f5 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 63:
case 84:

/* Line 677 of lalr1.cc */
#line 180 "easymesh/easymesh-parser.y"
#line 201 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f6 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 64:
case 85:

/* Line 677 of lalr1.cc */
#line 181 "easymesh/easymesh-parser.y"
#line 202 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f7 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 65:
case 86:

/* Line 677 of lalr1.cc */
#line 182 "easymesh/easymesh-parser.y"
#line 203 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f8 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 66:
case 87:

/* Line 677 of lalr1.cc */
#line 183 "easymesh/easymesh-parser.y"
#line 204 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f9 = (yysemantic_stack_[(2) - (2)].fval); }
break;

case 67:
case 88:

/* Line 677 of lalr1.cc */
#line 186 "easymesh/easymesh-parser.y"
#line 207 "easymesh/easymesh-parser.y"
{ (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); }
break;

case 68:
case 89:

/* Line 677 of lalr1.cc */
#line 187 "easymesh/easymesh-parser.y"
#line 208 "easymesh/easymesh-parser.y"
{ (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); }
break;



/* Line 677 of lalr1.cc */
#line 853 "generated/easymesh-parser.cpp"
#line 1000 "generated/easymesh-parser.cpp"
default:
break;
}
@@ -1054,22 +1201,25 @@ namespace lol {

/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
const signed char EasyMeshParser::yypact_ninf_ = -10;
const signed char EasyMeshParser::yypact_ninf_ = -69;
const signed char
EasyMeshParser::yypact_[] =
{
-3, 29, 31, 16, 16, 16, 16, -10, 16, 16,
16, 16, -10, 16, 16, 16, 16, -10, 16, 16,
-10, 16, -10, -10, -10, -10, -10, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, -10, 42, 50, -3, -3, 83, -10, -10, -10,
-10, -10, -10, 16, 16, 16, 16, -10, -10, -10,
-10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-10, -10, -10, -10, -10, -10, -10, 16, 16, 16,
-10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-10, 16, 16, 16, 16, -10, -10, -10, -10, -10,
5, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-10, -10, -10, -10
60, -40, -23, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -69, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -69, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -69, -47, -47, -69, -47, -69, -69, -69,
-69, -69, -47, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -47, -47, -47, -47, -69, 4, 6, 60,
60, 119, -69, -69, -69, -69, -69, -69, -47, -47,
-47, -47, -69, -69, -69, -69, -69, -69, -47, -69,
-69, -47, -69, -69, -69, -69, -69, -69, -69, -47,
-69, -69, -47, -69, -69, -69, -69, -69, -69, -69,
-47, -69, -69, -47, -69, -69, -69, -69, -69, -69,
-69, -69, -69, -47, -47, -47, -69, -69, -69, -69,
-69, -69, -69, -69, -69, -69, -69, -47, -47, -47,
-47, -69, -69, -69, -69, -69, -53, -69, -69, -69,
-69, -69, -69, -69, -69, -69, -69, -69, -69, -69
};

/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@@ -1078,36 +1228,39 @@ namespace lol {
const unsigned char
EasyMeshParser::yydefact_[] =
{
0, 0, 0, 0, 0, 0, 0, 33, 0, 0,
0, 0, 34, 0, 0, 0, 0, 35, 0, 0,
37, 0, 38, 39, 40, 41, 42, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 7, 0, 0, 3, 0, 5, 9, 11, 12,
13, 67, 15, 0, 0, 0, 0, 14, 57, 17,
16, 19, 23, 26, 29, 20, 24, 27, 30, 21,
25, 28, 31, 22, 32, 36, 18, 0, 0, 43,
44, 45, 46, 47, 48, 49, 51, 52, 53, 54,
55, 0, 0, 0, 0, 56, 50, 1, 2, 4,
0, 10, 68, 58, 59, 60, 61, 62, 63, 64,
65, 66, 8, 6
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 0, 0, 0, 0, 0,
0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 58, 0, 59, 60, 61,
62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 7, 0, 0, 3,
0, 5, 9, 11, 12, 13, 88, 15, 0, 0,
0, 0, 14, 78, 17, 16, 19, 23, 26, 27,
32, 35, 36, 41, 44, 45, 50, 20, 24, 28,
29, 33, 37, 38, 42, 46, 47, 51, 21, 25,
30, 31, 34, 39, 40, 43, 48, 49, 52, 22,
53, 57, 18, 0, 0, 64, 65, 66, 67, 68,
69, 70, 72, 73, 74, 75, 76, 0, 0, 0,
0, 77, 71, 1, 2, 4, 0, 10, 89, 79,
80, 81, 82, 83, 84, 85, 86, 87, 8, 6
};

/* YYPGOTO[NTERM-NUM]. */
const short int
EasyMeshParser::yypgoto_[] =
{
-10, -10, -4, -10, -10, -10, -10, 9, -10, -10,
-10, 45, 25, 121, 128, 33, 26, 32, -10, -10,
-10, -9
-69, -69, -30, -69, -69, -69, -69, -50, -69, -69,
-69, 224, 178, 0, 176, -35, -32, -28, -69, -69,
-69, -68
};

/* YYDEFGOTO[NTERM-NUM]. */
const signed char
const short int
EasyMeshParser::yydefgoto_[] =
{
-1, 42, 43, 44, 45, 113, 46, 47, 48, 49,
50, 54, 55, 56, 77, 78, 79, 80, 93, 94,
95, 58
-1, 57, 58, 59, 60, 149, 61, 62, 63, 64,
65, 69, 70, 71, 113, 114, 115, 116, 129, 130,
131, 73
};

/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -1117,46 +1270,66 @@ namespace lol {
const unsigned char
EasyMeshParser::yytable_[] =
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
99, 100, 97, 41, 102, 103, 104, 105, 61, 62,
98, 64, 112, 65, 66, 101, 68, 84, 69, 70,
51, 72, 89, 90, 53, 91, 75, 86, 106, 107,
108, 92, 76, 51, 52, 51, 59, 53, 0, 53,
0, 0, 108, 109, 110, 111, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 63, 0, 0, 57,
60, 67, 0, 0, 0, 0, 71, 0, 0, 73,
74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81, 0, 0, 0, 85, 0, 0, 88, 82, 83,
0, 96, 0, 87
138, 139, 140, 141, 133, 78, 134, 81, 83, 148,
141, 137, 66, 141, 122, 89, 68, 92, 94, 66,
67, 141, 127, 68, 141, 100, 128, 103, 105, 135,
136, 0, 141, 109, 110, 141, 66, 74, 0, 0,
68, 0, 0, 0, 117, 142, 143, 144, 121, 0,
0, 124, 0, 0, 0, 132, 0, 0, 0, 144,
145, 146, 147, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 0, 0,
0, 56, 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 72, 75, 0,
0, 79, 0, 82, 80, 0, 0, 84, 85, 0,
0, 90, 0, 93, 91, 0, 0, 95, 96, 0,
0, 101, 0, 104, 102, 0, 0, 106, 107, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 118, 119, 0, 0, 120, 123, 76, 77, 0,
125, 126, 0, 0, 0, 86, 0, 87, 88, 0,
0, 0, 0, 0, 0, 97, 0, 98, 99, 0,
0, 0, 0, 0, 0, 108, 0, 0, 0, 0,
111, 0, 0, 0, 0, 0, 112
};

/* YYCHECK. */
const signed char
const short int
EasyMeshParser::yycheck_[] =
{
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
44, 45, 0, 46, 53, 54, 55, 56, 3, 4,
0, 6, 47, 8, 9, 46, 11, 32, 13, 14,
44, 16, 37, 38, 48, 39, 21, 34, 77, 78,
79, 39, 27, 44, 45, 44, 45, 48, -1, 48,
-1, -1, 91, 92, 93, 94, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 5, -1, -1, 1,
2, 10, -1, -1, -1, -1, 15, -1, -1, 18,
19, -1, -1, -1, -1, -1, -1, -1, -1, -1,
29, -1, -1, -1, 33, -1, -1, 36, 30, 31,
-1, 40, -1, 35
68, 69, 70, 71, 0, 5, 0, 7, 8, 62,
78, 61, 59, 81, 49, 15, 63, 17, 18, 59,
60, 89, 54, 63, 92, 25, 54, 27, 28, 59,
60, -1, 100, 33, 34, 103, 59, 60, -1, -1,
63, -1, -1, -1, 44, 113, 114, 115, 48, -1,
-1, 51, -1, -1, -1, 55, -1, -1, -1, 127,
128, 129, 130, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, -1,
-1, 61, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 1, 2, -1,
-1, 5, -1, 7, 6, -1, -1, 9, 10, -1,
-1, 15, -1, 17, 16, -1, -1, 19, 20, -1,
-1, 25, -1, 27, 26, -1, -1, 29, 30, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 45, 46, -1, -1, 47, 50, 3, 4, -1,
52, 53, -1, -1, -1, 11, -1, 13, 14, -1,
-1, -1, -1, -1, -1, 21, -1, 23, 24, -1,
-1, -1, -1, -1, -1, 31, -1, -1, -1, -1,
36, -1, -1, -1, -1, -1, 42
};

/* STOS_[STATE-NUM] -- The (internal number of the) accessing
@@ -1168,14 +1341,17 @@ namespace lol {
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 46, 50, 51, 52, 53, 55, 56, 57, 58,
59, 44, 45, 48, 60, 61, 62, 63, 70, 45,
63, 60, 60, 62, 60, 60, 60, 62, 60, 60,
60, 62, 60, 62, 62, 60, 60, 63, 64, 65,
66, 62, 63, 63, 61, 62, 64, 63, 62, 61,
61, 65, 66, 67, 68, 69, 62, 0, 0, 51,
51, 56, 70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 47, 54
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 61, 65, 66, 67,
68, 70, 71, 72, 73, 74, 59, 60, 63, 75,
76, 77, 78, 85, 60, 78, 75, 75, 77, 78,
76, 77, 78, 77, 76, 76, 75, 75, 75, 77,
78, 76, 77, 78, 77, 76, 76, 75, 75, 75,
77, 78, 76, 77, 78, 77, 76, 76, 75, 77,
77, 75, 75, 78, 79, 80, 81, 77, 78, 78,
76, 77, 79, 78, 77, 76, 76, 80, 81, 82,
83, 84, 77, 0, 0, 66, 66, 71, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 62, 69
};

#if YYDEBUG
@@ -1188,7 +1364,9 @@ namespace lol {
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 91, 93, 45
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 91, 93, 45
};
#endif

@@ -1196,13 +1374,15 @@ namespace lol {
const unsigned char
EasyMeshParser::yyr1_[] =
{
0, 49, 50, 51, 51, 52, 52, 53, 54, 55,
55, 56, 56, 56, 57, 57, 57, 57, 58, 58,
58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
58, 58, 58, 59, 59, 59, 59, 59, 59, 59,
59, 59, 59, 59, 59, 59, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 70
0, 64, 65, 66, 66, 67, 67, 68, 69, 70,
70, 71, 71, 71, 72, 72, 72, 72, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 85
};

/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1212,10 +1392,12 @@ namespace lol {
0, 2, 2, 1, 2, 1, 3, 1, 1, 1,
2, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 1, 1, 2, 1, 1, 1,
1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 1, 2
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
2, 2, 2, 2, 2, 2, 2, 2, 1, 2
};

#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
@@ -1225,9 +1407,12 @@ namespace lol {
const EasyMeshParser::yytname_[] =
{
"T_END", "error", "$undefined", "T_COLOR", "T_BGCOLOR", "T_TRANSLATEX",
"T_ROTATEX", "T_TAPERX", "T_SCALEX", "T_MIRRORX", "T_TRANSLATEY",
"T_ROTATEY", "T_TAPERY", "T_SCALEY", "T_MIRRORY", "T_TRANSLATEZ",
"T_ROTATEZ", "T_TAPERZ", "T_SCALEZ", "T_MIRRORZ", "T_TRANSLATE",
"T_ROTATEX", "T_TAPERX", "T_TWISTX", "T_SHEARX", "T_STRETCHX",
"T_BENDXY", "T_BENDXZ", "T_SCALEX", "T_MIRRORX", "T_TRANSLATEY",
"T_ROTATEY", "T_TAPERY", "T_TWISTY", "T_SHEARY", "T_STRETCHY",
"T_BENDYX", "T_BENDYZ", "T_SCALEY", "T_MIRRORY", "T_TRANSLATEZ",
"T_ROTATEZ", "T_TAPERZ", "T_TWISTZ", "T_SHEARZ", "T_STRETCHZ",
"T_BENDZX", "T_BENDZY", "T_SCALEZ", "T_MIRRORZ", "T_TRANSLATE",
"T_SCALE", "T_TOGGLESCALEWINDING", "T_RADIALJITTER", "T_CSGUNION",
"T_CSGSUBSTRACT", "T_CSGSUBSTRACTLOSS", "T_CSGAND", "T_CSGXOR",
"T_CHAMFER", "T_CYLINDER", "T_BOX", "T_SMOOTHCHAMFBOX", "T_FLATCHAMFBOX",
@@ -1246,25 +1431,31 @@ namespace lol {
const EasyMeshParser::rhs_number_type
EasyMeshParser::yyrhs_[] =
{
50, 0, -1, 51, 0, -1, 52, -1, 52, 51,
-1, 55, -1, 53, 51, 54, -1, 46, -1, 47,
-1, 56, -1, 55, 56, -1, 57, -1, 58, -1,
59, -1, 3, 63, -1, 3, 45, -1, 4, 63,
-1, 4, 45, -1, 29, 60, -1, 5, 60, -1,
10, 60, -1, 15, 60, -1, 20, 62, -1, 6,
60, -1, 11, 60, -1, 16, 60, -1, 7, 62,
-1, 12, 62, -1, 17, 62, -1, 8, 60, -1,
13, 60, -1, 18, 60, -1, 21, 62, -1, 9,
-1, 14, -1, 19, -1, 23, 60, -1, 22, -1,
24, -1, 25, -1, 26, -1, 27, -1, 28, -1,
30, 65, -1, 30, 66, -1, 31, 62, -1, 32,
63, -1, 33, 63, -1, 34, 61, -1, 35, 62,
-1, 42, 62, -1, 36, 64, -1, 37, 63, -1,
38, 62, -1, 39, 61, -1, 40, 61, -1, 41,
69, -1, 70, -1, 60, 70, -1, 61, 70, -1,
62, 70, -1, 63, 70, -1, 64, 70, -1, 65,
70, -1, 66, 70, -1, 67, 70, -1, 68, 70,
-1, 44, -1, 48, 70, -1
65, 0, -1, 66, 0, -1, 67, -1, 67, 66,
-1, 70, -1, 68, 66, 69, -1, 61, -1, 62,
-1, 71, -1, 70, 71, -1, 72, -1, 73, -1,
74, -1, 3, 78, -1, 3, 60, -1, 4, 78,
-1, 4, 60, -1, 44, 75, -1, 5, 75, -1,
15, 75, -1, 25, 75, -1, 35, 77, -1, 6,
75, -1, 16, 75, -1, 26, 75, -1, 7, 77,
-1, 7, 78, -1, 17, 77, -1, 17, 78, -1,
27, 77, -1, 27, 78, -1, 8, 76, -1, 18,
76, -1, 28, 76, -1, 9, 77, -1, 9, 78,
-1, 19, 77, -1, 19, 78, -1, 29, 77, -1,
29, 78, -1, 10, 77, -1, 20, 77, -1, 30,
77, -1, 11, 76, -1, 12, 76, -1, 21, 76,
-1, 22, 76, -1, 31, 76, -1, 32, 76, -1,
13, 75, -1, 23, 75, -1, 33, 75, -1, 36,
77, -1, 14, -1, 24, -1, 34, -1, 38, 75,
-1, 37, -1, 39, -1, 40, -1, 41, -1, 42,
-1, 43, -1, 45, 80, -1, 45, 81, -1, 46,
77, -1, 47, 78, -1, 48, 78, -1, 49, 76,
-1, 50, 77, -1, 57, 77, -1, 51, 79, -1,
52, 78, -1, 53, 77, -1, 54, 76, -1, 55,
76, -1, 56, 84, -1, 85, -1, 75, 85, -1,
76, 85, -1, 77, 85, -1, 78, 85, -1, 79,
85, -1, 80, 85, -1, 81, 85, -1, 82, 85,
-1, 83, 85, -1, 59, -1, 63, 85, -1
};

/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
@@ -1275,10 +1466,12 @@ namespace lol {
0, 0, 3, 6, 8, 11, 13, 17, 19, 21,
23, 26, 28, 30, 32, 35, 38, 41, 44, 47,
50, 53, 56, 59, 62, 65, 68, 71, 74, 77,
80, 83, 86, 89, 91, 93, 95, 98, 100, 102,
104, 106, 108, 110, 113, 116, 119, 122, 125, 128,
131, 134, 137, 140, 143, 146, 149, 152, 154, 157,
160, 163, 166, 169, 172, 175, 178, 181, 183
80, 83, 86, 89, 92, 95, 98, 101, 104, 107,
110, 113, 116, 119, 122, 125, 128, 131, 134, 137,
140, 143, 146, 149, 152, 154, 156, 158, 161, 163,
165, 167, 169, 171, 173, 176, 179, 182, 185, 188,
191, 194, 197, 200, 203, 206, 209, 212, 215, 217,
220, 223, 226, 229, 232, 235, 238, 241, 244, 246
};

/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
@@ -1289,9 +1482,11 @@ namespace lol {
99, 103, 104, 105, 109, 110, 113, 114, 120, 121,
122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
142, 143, 144, 148, 151, 154, 155, 157, 159, 160,
161, 162, 164, 166, 167, 168, 169, 174, 175, 176,
177, 178, 179, 180, 181, 182, 183, 186, 187
142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
162, 163, 164, 165, 169, 172, 175, 176, 178, 180,
181, 182, 183, 185, 187, 188, 189, 190, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 207, 208
};

// Print the state stack on the debug stream.
@@ -1335,12 +1530,12 @@ namespace lol {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 48, 2, 2, 2, 2,
2, 2, 2, 2, 2, 63, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 46, 2, 47, 2, 2, 2, 2, 2, 2,
2, 61, 2, 62, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1361,7 +1556,8 @@ namespace lol {
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60
};
if ((unsigned int) t <= yyuser_token_number_max_)
return translate_table[t];
@@ -1370,26 +1566,26 @@ namespace lol {
}

const int EasyMeshParser::yyeof_ = 0;
const int EasyMeshParser::yylast_ = 163;
const int EasyMeshParser::yylast_ = 266;
const int EasyMeshParser::yynnts_ = 22;
const int EasyMeshParser::yyempty_ = -2;
const int EasyMeshParser::yyfinal_ = 97;
const int EasyMeshParser::yyfinal_ = 133;
const int EasyMeshParser::yyterror_ = 1;
const int EasyMeshParser::yyerrcode_ = 256;
const int EasyMeshParser::yyntokens_ = 49;
const int EasyMeshParser::yyntokens_ = 64;

const unsigned int EasyMeshParser::yyuser_token_number_max_ = 300;
const unsigned int EasyMeshParser::yyuser_token_number_max_ = 315;
const EasyMeshParser::token_number_type EasyMeshParser::yyundef_token_ = 2;


} // lol

/* Line 1053 of lalr1.cc */
#line 1389 "generated/easymesh-parser.cpp"
#line 1585 "generated/easymesh-parser.cpp"


/* Line 1055 of lalr1.cc */
#line 190 "easymesh/easymesh-parser.y"
#line 211 "easymesh/easymesh-parser.y"


void lol::EasyMeshParser::error(const EasyMeshParser::location_type& l,


+ 57
- 42
src/generated/easymesh-parser.h Vedi File

@@ -2,7 +2,7 @@

/* Skeleton interface for Bison LALR(1) parsers in C++
Copyright (C) 2002-2011 Free Software Foundation, Inc.
Copyright (C) 2002-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -137,44 +137,59 @@ namespace lol {
T_TRANSLATEX = 260,
T_ROTATEX = 261,
T_TAPERX = 262,
T_SCALEX = 263,
T_MIRRORX = 264,
T_TRANSLATEY = 265,
T_ROTATEY = 266,
T_TAPERY = 267,
T_SCALEY = 268,
T_MIRRORY = 269,
T_TRANSLATEZ = 270,
T_ROTATEZ = 271,
T_TAPERZ = 272,
T_SCALEZ = 273,
T_MIRRORZ = 274,
T_TRANSLATE = 275,
T_SCALE = 276,
T_TOGGLESCALEWINDING = 277,
T_RADIALJITTER = 278,
T_CSGUNION = 279,
T_CSGSUBSTRACT = 280,
T_CSGSUBSTRACTLOSS = 281,
T_CSGAND = 282,
T_CSGXOR = 283,
T_CHAMFER = 284,
T_CYLINDER = 285,
T_BOX = 286,
T_SMOOTHCHAMFBOX = 287,
T_FLATCHAMFBOX = 288,
T_SPHERE = 289,
T_CAPSULE = 290,
T_STAR = 291,
T_EXPANDEDSTAR = 292,
T_DISC = 293,
T_TRIANGLE = 294,
T_QUAD = 295,
T_COG = 296,
T_TORUS = 297,
T_ERROR = 298,
NUMBER = 299,
COLOR = 300
T_TWISTX = 263,
T_SHEARX = 264,
T_STRETCHX = 265,
T_BENDXY = 266,
T_BENDXZ = 267,
T_SCALEX = 268,
T_MIRRORX = 269,
T_TRANSLATEY = 270,
T_ROTATEY = 271,
T_TAPERY = 272,
T_TWISTY = 273,
T_SHEARY = 274,
T_STRETCHY = 275,
T_BENDYX = 276,
T_BENDYZ = 277,
T_SCALEY = 278,
T_MIRRORY = 279,
T_TRANSLATEZ = 280,
T_ROTATEZ = 281,
T_TAPERZ = 282,
T_TWISTZ = 283,
T_SHEARZ = 284,
T_STRETCHZ = 285,
T_BENDZX = 286,
T_BENDZY = 287,
T_SCALEZ = 288,
T_MIRRORZ = 289,
T_TRANSLATE = 290,
T_SCALE = 291,
T_TOGGLESCALEWINDING = 292,
T_RADIALJITTER = 293,
T_CSGUNION = 294,
T_CSGSUBSTRACT = 295,
T_CSGSUBSTRACTLOSS = 296,
T_CSGAND = 297,
T_CSGXOR = 298,
T_CHAMFER = 299,
T_CYLINDER = 300,
T_BOX = 301,
T_SMOOTHCHAMFBOX = 302,
T_FLATCHAMFBOX = 303,
T_SPHERE = 304,
T_CAPSULE = 305,
T_STAR = 306,
T_EXPANDEDSTAR = 307,
T_DISC = 308,
T_TRIANGLE = 309,
T_QUAD = 310,
T_COG = 311,
T_TORUS = 312,
T_ERROR = 313,
NUMBER = 314,
COLOR = 315
};

};
@@ -261,7 +276,7 @@ namespace lol {
static const unsigned char yydefact_[];

static const short int yypgoto_[];
static const signed char yydefgoto_[];
static const short int yydefgoto_[];

/// What to do in a state.
/// \a yytable_[yypact_[s]]: what to do in state \a s.
@@ -271,7 +286,7 @@ namespace lol {
static const unsigned char yytable_[];
static const signed char yytable_ninf_;

static const signed char yycheck_[];
static const short int yycheck_[];

/// For a state, its accessing symbol.
static const unsigned char yystos_[];
@@ -348,7 +363,7 @@ namespace lol {
} // lol

/* Line 34 of lalr1.cc */
#line 352 "generated/easymesh-parser.h"
#line 367 "generated/easymesh-parser.h"





+ 228
- 138
src/generated/easymesh-scanner.cpp Vedi File

@@ -330,8 +330,8 @@ typedef unsigned char YY_CHAR;
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;

#define YY_NUM_RULES 52
#define YY_END_OF_BUFFER 53
#define YY_NUM_RULES 67
#define YY_END_OF_BUFFER 68
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -339,17 +339,20 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static yyconst flex_int16_t yy_accept[83] =
static yyconst flex_int16_t yy_accept[106] =
{ 0,
0, 0, 53, 51, 50, 49, 51, 51, 46, 51,
45, 47, 48, 51, 51, 51, 51, 17, 7, 0,
0, 45, 45, 0, 28, 29, 32, 0, 0, 35,
36, 39, 3, 0, 19, 20, 21, 22, 8, 9,
10, 1, 14, 15, 16, 0, 0, 4, 5, 6,
0, 0, 45, 0, 31, 33, 0, 0, 0, 40,
0, 2, 11, 12, 13, 18, 41, 30, 34, 37,
38, 26, 24, 23, 27, 42, 25, 0, 43, 0,
44, 0
0, 0, 68, 66, 65, 64, 66, 66, 61, 66,
60, 62, 63, 66, 66, 66, 66, 66, 32, 7,
0, 0, 60, 60, 0, 43, 44, 47, 0, 0,
50, 51, 54, 0, 3, 0, 34, 35, 36, 37,
8, 9, 10, 1, 0, 0, 29, 30, 31, 0,
0, 0, 4, 5, 6, 0, 0, 60, 0, 46,
48, 0, 0, 0, 55, 0, 0, 0, 0, 2,
17, 18, 19, 20, 21, 22, 11, 12, 13, 33,
14, 15, 16, 56, 45, 49, 52, 53, 23, 24,
25, 26, 27, 28, 41, 39, 38, 42, 57, 40,

0, 58, 0, 59, 0
} ;

static yyconst flex_int32_t yy_ec[256] =
@@ -392,70 +395,82 @@ static yyconst flex_int32_t yy_meta[35] =
1, 1, 1, 1
} ;

static yyconst flex_int16_t yy_base[91] =
static yyconst flex_int16_t yy_base[114] =
{ 0,
0, 0, 113, 114, 114, 114, 0, 28, 30, 104,
32, 114, 114, 36, 27, 11, 25, 41, 35, 0,
103, 69, 70, 76, 114, 47, 114, 82, 94, 114,
46, 84, 114, 88, 114, 114, 114, 114, 114, 114,
114, 92, 114, 114, 114, 56, 74, 114, 114, 114,
0, 96, 95, 76, 114, 114, 85, 83, 76, 114,
70, 114, 114, 114, 114, 114, 0, 114, 114, 114,
114, 114, 73, 114, 114, 0, 114, 0, 0, 0,
114, 114, 92, 91, 90, 89, 83, 70, 68, 39
0, 0, 135, 136, 136, 136, 0, 28, 30, 126,
32, 136, 136, 36, 117, 27, 11, 25, 51, 73,
0, 124, 53, 59, 67, 136, 55, 136, 103, 115,
136, 62, 105, 56, 136, 109, 136, 136, 136, 136,
136, 136, 136, 113, 59, 62, 136, 136, 136, 65,
95, 76, 136, 136, 136, 0, 117, 116, 98, 136,
136, 107, 105, 97, 136, 45, 68, 49, 90, 136,
136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
136, 136, 136, 0, 136, 136, 136, 136, 136, 136,
136, 136, 136, 136, 136, 94, 136, 136, 0, 136,

0, 0, 0, 136, 136, 113, 112, 111, 110, 109,
54, 46, 39
} ;

static yyconst flex_int16_t yy_def[91] =
static yyconst flex_int16_t yy_def[114] =
{ 0,
82, 1, 82, 82, 82, 82, 83, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 84,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
85, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 86, 82, 82, 82,
82, 82, 82, 82, 82, 87, 82, 88, 89, 90,
82, 0, 82, 82, 82, 82, 82, 82, 82, 82
105, 1, 105, 105, 105, 105, 106, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
107, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 108, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 109, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 110, 105,

111, 112, 113, 105, 0, 105, 105, 105, 105, 105,
105, 105, 105
} ;

static yyconst flex_int16_t yy_nxt[149] =
static yyconst flex_int16_t yy_nxt[171] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 4, 4,
12, 13, 14, 4, 15, 4, 4, 4, 4, 4,
4, 4, 16, 4, 4, 4, 17, 18, 19, 4,
4, 4, 4, 4, 21, 22, 21, 22, 21, 22,
81, 24, 35, 36, 37, 38, 33, 46, 24, 25,
26, 27, 28, 29, 34, 42, 39, 40, 41, 54,
58, 30, 47, 31, 32, 55, 48, 49, 50, 80,
59, 79, 43, 44, 45, 21, 22, 23, 24, 24,
52, 52, 72, 53, 78, 24, 24, 63, 64, 65,
76, 67, 51, 20, 77, 71, 70, 73, 69, 74,

68, 75, 53, 53, 66, 62, 61, 60, 57, 56,
23, 23, 82, 3, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82
12, 13, 14, 15, 16, 4, 4, 4, 4, 4,
4, 4, 17, 4, 4, 4, 18, 19, 20, 4,
4, 4, 4, 4, 22, 23, 22, 23, 22, 23,
104, 25, 37, 38, 39, 40, 35, 103, 25, 26,
27, 28, 29, 30, 36, 102, 41, 42, 43, 22,
23, 31, 25, 32, 33, 44, 24, 59, 25, 25,
45, 57, 57, 60, 58, 25, 63, 89, 90, 46,
93, 94, 47, 48, 49, 50, 64, 66, 67, 68,
71, 72, 73, 74, 75, 76, 77, 78, 79, 91,

51, 92, 95, 52, 53, 54, 55, 81, 82, 83,
101, 99, 84, 56, 21, 100, 88, 96, 87, 97,
86, 98, 85, 58, 58, 80, 70, 69, 65, 62,
61, 24, 34, 24, 105, 3, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105
} ;

static yyconst flex_int16_t yy_chk[149] =
static yyconst flex_int16_t yy_chk[171] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 8, 8, 9, 9, 11, 11,
90, 11, 16, 16, 16, 17, 15, 19, 11, 14,
14, 14, 14, 14, 15, 18, 17, 17, 17, 26,
31, 14, 19, 14, 14, 26, 19, 19, 19, 89,
31, 88, 18, 18, 18, 22, 22, 23, 22, 23,
24, 24, 61, 24, 87, 22, 23, 46, 46, 46,
86, 85, 84, 83, 73, 59, 58, 61, 57, 61,

54, 61, 53, 52, 47, 42, 34, 32, 29, 28,
21, 10, 3, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82
113, 11, 17, 17, 17, 18, 16, 112, 11, 14,
14, 14, 14, 14, 16, 111, 18, 18, 18, 23,
23, 14, 23, 14, 14, 19, 24, 27, 24, 23,
19, 25, 25, 27, 25, 24, 32, 66, 66, 19,
68, 68, 19, 19, 19, 20, 32, 34, 34, 34,
45, 45, 45, 46, 46, 46, 50, 50, 50, 67,

20, 67, 69, 20, 20, 20, 20, 52, 52, 52,
110, 109, 108, 107, 106, 96, 64, 69, 63, 69,
62, 69, 59, 58, 57, 51, 44, 36, 33, 30,
29, 22, 15, 10, 3, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105
} ;

/* The intent behind this definition is that it'll catch
@@ -504,7 +519,7 @@ typedef lol::EasyMeshParser::token_type token_type;
#define yyterminate() return token::T_END
#define YY_NO_UNISTD_H
#define YY_USER_ACTION yylloc->columns(yyleng);
#line 508 "generated/easymesh-scanner.cpp"
#line 523 "generated/easymesh-scanner.cpp"

#define INITIAL 0

@@ -617,7 +632,7 @@ YY_DECL
yylloc->step();


#line 621 "generated/easymesh-scanner.cpp"
#line 636 "generated/easymesh-scanner.cpp"

if ( !(yy_init) )
{
@@ -670,13 +685,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 83 )
if ( yy_current_state >= 106 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
while ( yy_current_state != 82 );
while ( yy_current_state != 105 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);

@@ -764,141 +779,216 @@ YY_RULE_SETUP
case 14:
YY_RULE_SETUP
#line 65 "easymesh/easymesh-scanner.l"
{ return token::T_SCALEX; }
{ return token::T_TWISTX; }
YY_BREAK
case 15:
YY_RULE_SETUP
#line 66 "easymesh/easymesh-scanner.l"
{ return token::T_SCALEY; }
{ return token::T_TWISTY; }
YY_BREAK
case 16:
YY_RULE_SETUP
#line 67 "easymesh/easymesh-scanner.l"
{ return token::T_SCALEZ; }
{ return token::T_TWISTZ; }
YY_BREAK
case 17:
YY_RULE_SETUP
#line 68 "easymesh/easymesh-scanner.l"
{ return token::T_SCALE; }
{ return token::T_SHEARX; }
YY_BREAK
case 18:
YY_RULE_SETUP
#line 69 "easymesh/easymesh-scanner.l"
{ return token::T_TOGGLESCALEWINDING; }
{ return token::T_SHEARY; }
YY_BREAK
case 19:
YY_RULE_SETUP
#line 70 "easymesh/easymesh-scanner.l"
{ return token::T_MIRRORX; }
{ return token::T_SHEARZ; }
YY_BREAK
case 20:
YY_RULE_SETUP
#line 71 "easymesh/easymesh-scanner.l"
{ return token::T_MIRRORY; }
{ return token::T_STRETCHX; }
YY_BREAK
case 21:
YY_RULE_SETUP
#line 72 "easymesh/easymesh-scanner.l"
{ return token::T_MIRRORZ; }
{ return token::T_STRETCHY; }
YY_BREAK
case 22:
YY_RULE_SETUP
#line 73 "easymesh/easymesh-scanner.l"
{ return token::T_RADIALJITTER; }
{ return token::T_STRETCHZ; }
YY_BREAK
case 23:
YY_RULE_SETUP
#line 75 "easymesh/easymesh-scanner.l"
{ return token::T_CSGUNION; }
#line 74 "easymesh/easymesh-scanner.l"
{ return token::T_BENDXY; }
YY_BREAK
case 24:
YY_RULE_SETUP
#line 76 "easymesh/easymesh-scanner.l"
{ return token::T_CSGSUBSTRACT; }
#line 75 "easymesh/easymesh-scanner.l"
{ return token::T_BENDXZ; }
YY_BREAK
case 25:
YY_RULE_SETUP
#line 77 "easymesh/easymesh-scanner.l"
{ return token::T_CSGSUBSTRACTLOSS; }
#line 76 "easymesh/easymesh-scanner.l"
{ return token::T_BENDYX; }
YY_BREAK
case 26:
YY_RULE_SETUP
#line 78 "easymesh/easymesh-scanner.l"
{ return token::T_CSGAND; }
#line 77 "easymesh/easymesh-scanner.l"
{ return token::T_BENDYZ; }
YY_BREAK
case 27:
YY_RULE_SETUP
#line 79 "easymesh/easymesh-scanner.l"
{ return token::T_CSGXOR; }
#line 78 "easymesh/easymesh-scanner.l"
{ return token::T_BENDZX; }
YY_BREAK
case 28:
YY_RULE_SETUP
#line 81 "easymesh/easymesh-scanner.l"
{ return token::T_BOX; }
#line 79 "easymesh/easymesh-scanner.l"
{ return token::T_BENDZY; }
YY_BREAK
case 29:
YY_RULE_SETUP
#line 82 "easymesh/easymesh-scanner.l"
{ return token::T_CYLINDER; }
#line 80 "easymesh/easymesh-scanner.l"
{ return token::T_SCALEX; }
YY_BREAK
case 30:
YY_RULE_SETUP
#line 83 "easymesh/easymesh-scanner.l"
{ return token::T_CAPSULE; }
#line 81 "easymesh/easymesh-scanner.l"
{ return token::T_SCALEY; }
YY_BREAK
case 31:
YY_RULE_SETUP
#line 84 "easymesh/easymesh-scanner.l"
{ return token::T_COG; }
#line 82 "easymesh/easymesh-scanner.l"
{ return token::T_SCALEZ; }
YY_BREAK
case 32:
YY_RULE_SETUP
#line 85 "easymesh/easymesh-scanner.l"
{ return token::T_DISC; }
#line 83 "easymesh/easymesh-scanner.l"
{ return token::T_SCALE; }
YY_BREAK
case 33:
YY_RULE_SETUP
#line 86 "easymesh/easymesh-scanner.l"
{ return token::T_EXPANDEDSTAR; }
#line 84 "easymesh/easymesh-scanner.l"
{ return token::T_TOGGLESCALEWINDING; }
YY_BREAK
case 34:
YY_RULE_SETUP
#line 87 "easymesh/easymesh-scanner.l"
{ return token::T_FLATCHAMFBOX; }
#line 85 "easymesh/easymesh-scanner.l"
{ return token::T_MIRRORX; }
YY_BREAK
case 35:
YY_RULE_SETUP
#line 88 "easymesh/easymesh-scanner.l"
{ return token::T_QUAD; }
#line 86 "easymesh/easymesh-scanner.l"
{ return token::T_MIRRORY; }
YY_BREAK
case 36:
YY_RULE_SETUP
#line 89 "easymesh/easymesh-scanner.l"
{ return token::T_STAR; }
#line 87 "easymesh/easymesh-scanner.l"
{ return token::T_MIRRORZ; }
YY_BREAK
case 37:
YY_RULE_SETUP
#line 90 "easymesh/easymesh-scanner.l"
{ return token::T_SMOOTHCHAMFBOX; }
#line 88 "easymesh/easymesh-scanner.l"
{ return token::T_RADIALJITTER; }
YY_BREAK
case 38:
YY_RULE_SETUP
#line 91 "easymesh/easymesh-scanner.l"
{ return token::T_SPHERE; }
#line 90 "easymesh/easymesh-scanner.l"
{ return token::T_CSGUNION; }
YY_BREAK
case 39:
YY_RULE_SETUP
#line 92 "easymesh/easymesh-scanner.l"
{ return token::T_TRIANGLE; }
#line 91 "easymesh/easymesh-scanner.l"
{ return token::T_CSGSUBSTRACT; }
YY_BREAK
case 40:
YY_RULE_SETUP
#line 92 "easymesh/easymesh-scanner.l"
{ return token::T_CSGSUBSTRACTLOSS; }
YY_BREAK
case 41:
YY_RULE_SETUP
#line 93 "easymesh/easymesh-scanner.l"
{ return token::T_CSGAND; }
YY_BREAK
case 42:
YY_RULE_SETUP
#line 94 "easymesh/easymesh-scanner.l"
{ return token::T_CSGXOR; }
YY_BREAK
case 43:
YY_RULE_SETUP
#line 96 "easymesh/easymesh-scanner.l"
{ return token::T_BOX; }
YY_BREAK
case 44:
YY_RULE_SETUP
#line 97 "easymesh/easymesh-scanner.l"
{ return token::T_CYLINDER; }
YY_BREAK
case 45:
YY_RULE_SETUP
#line 98 "easymesh/easymesh-scanner.l"
{ return token::T_CAPSULE; }
YY_BREAK
case 46:
YY_RULE_SETUP
#line 99 "easymesh/easymesh-scanner.l"
{ return token::T_COG; }
YY_BREAK
case 47:
YY_RULE_SETUP
#line 100 "easymesh/easymesh-scanner.l"
{ return token::T_DISC; }
YY_BREAK
case 48:
YY_RULE_SETUP
#line 101 "easymesh/easymesh-scanner.l"
{ return token::T_EXPANDEDSTAR; }
YY_BREAK
case 49:
YY_RULE_SETUP
#line 102 "easymesh/easymesh-scanner.l"
{ return token::T_FLATCHAMFBOX; }
YY_BREAK
case 50:
YY_RULE_SETUP
#line 103 "easymesh/easymesh-scanner.l"
{ return token::T_QUAD; }
YY_BREAK
case 51:
YY_RULE_SETUP
#line 104 "easymesh/easymesh-scanner.l"
{ return token::T_STAR; }
YY_BREAK
case 52:
YY_RULE_SETUP
#line 105 "easymesh/easymesh-scanner.l"
{ return token::T_SMOOTHCHAMFBOX; }
YY_BREAK
case 53:
YY_RULE_SETUP
#line 106 "easymesh/easymesh-scanner.l"
{ return token::T_SPHERE; }
YY_BREAK
case 54:
YY_RULE_SETUP
#line 107 "easymesh/easymesh-scanner.l"
{ return token::T_TRIANGLE; }
YY_BREAK
case 55:
YY_RULE_SETUP
#line 108 "easymesh/easymesh-scanner.l"
{ return token::T_TORUS; }
YY_BREAK
case 41:
case 56:
YY_RULE_SETUP
#line 95 "easymesh/easymesh-scanner.l"
#line 110 "easymesh/easymesh-scanner.l"
{
uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
yylval->u32val = 0x11000000u * (tmp >> 8)
@@ -907,9 +997,9 @@ YY_RULE_SETUP
| 0x000000ffu;
return token::COLOR; }
YY_BREAK
case 42:
case 57:
YY_RULE_SETUP
#line 102 "easymesh/easymesh-scanner.l"
#line 117 "easymesh/easymesh-scanner.l"
{
uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
yylval->u32val = 0x11000000u * (tmp >> 12)
@@ -918,64 +1008,64 @@ YY_RULE_SETUP
| 0x00000011u * (tmp & 0xf);
return token::COLOR; }
YY_BREAK
case 43:
case 58:
YY_RULE_SETUP
#line 109 "easymesh/easymesh-scanner.l"
#line 124 "easymesh/easymesh-scanner.l"
{
yylval->u32val = 0xffu
| 0x100u * (uint32_t)std::strtol(yytext + 1, NULL, 16);
return token::COLOR; }
YY_BREAK
case 44:
case 59:
YY_RULE_SETUP
#line 113 "easymesh/easymesh-scanner.l"
#line 128 "easymesh/easymesh-scanner.l"
{
yylval->u32val = (uint32_t)std::strtol(yytext + 1, NULL, 16);
return token::COLOR; }
YY_BREAK
case 45:
case 60:
YY_RULE_SETUP
#line 116 "easymesh/easymesh-scanner.l"
#line 131 "easymesh/easymesh-scanner.l"
{
yylval->fval = std::atof(yytext); return token::NUMBER; }
YY_BREAK
case 46:
case 61:
YY_RULE_SETUP
#line 118 "easymesh/easymesh-scanner.l"
#line 133 "easymesh/easymesh-scanner.l"
{ return token_type('-'); }
YY_BREAK
case 47:
case 62:
YY_RULE_SETUP
#line 119 "easymesh/easymesh-scanner.l"
#line 134 "easymesh/easymesh-scanner.l"
{ return token_type('['); }
YY_BREAK
case 48:
case 63:
YY_RULE_SETUP
#line 120 "easymesh/easymesh-scanner.l"
#line 135 "easymesh/easymesh-scanner.l"
{ return token_type(']'); }
YY_BREAK
case 49:
case 64:
YY_RULE_SETUP
#line 121 "easymesh/easymesh-scanner.l"
#line 136 "easymesh/easymesh-scanner.l"
{ /* ignore this */ }
YY_BREAK
case 50:
/* rule 50 can match eol */
case 65:
/* rule 65 can match eol */
YY_RULE_SETUP
#line 122 "easymesh/easymesh-scanner.l"
#line 137 "easymesh/easymesh-scanner.l"
{ /* ignore this */ }
YY_BREAK
case 51:
case 66:
YY_RULE_SETUP
#line 123 "easymesh/easymesh-scanner.l"
#line 138 "easymesh/easymesh-scanner.l"
{ return token::T_ERROR; }
YY_BREAK
case 52:
case 67:
YY_RULE_SETUP
#line 125 "easymesh/easymesh-scanner.l"
#line 140 "easymesh/easymesh-scanner.l"
ECHO;
YY_BREAK
#line 979 "generated/easymesh-scanner.cpp"
#line 1069 "generated/easymesh-scanner.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();

@@ -1357,7 +1447,7 @@ int yyFlexLexer::yy_get_next_buffer()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 83 )
if ( yy_current_state >= 106 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1385,11 +1475,11 @@ int yyFlexLexer::yy_get_next_buffer()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 83 )
if ( yy_current_state >= 106 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 82);
yy_is_jam = (yy_current_state == 105);

return yy_is_jam ? 0 : yy_current_state;
}
@@ -1876,7 +1966,7 @@ void EasyMeshfree (void * ptr )

#define YYTABLES_NAME "yytables"

#line 125 "easymesh/easymesh-scanner.l"
#line 140 "easymesh/easymesh-scanner.l"





+ 6
- 2
test/MeshViewerBuffer.txt Vedi File

@@ -1,7 +1,11 @@
//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 tax .4 .4 0]
//[sc#88f ab 4 4 4]
//[sc#ff2 asph 2 4 tx 4 tax 1 1 0]
[sc#ff2 asph 2 4]
//[sc#88f ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .125 stx 10 0 0]
[sc#ff2 scb#2ff acg 13 2 1 1 8 8 4 4 0 1 tax -2 0 0 0]
//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 shz 1 0 0 0]
//[sc#ff2 asph 4 4 shx 0 0 0 0]
//[sc#ff2 asph 4 4 tax .4 .4 0]
//[sc#ff2 asph 2 4]
//[sc#ff2 acap 1 4 4]
//[sc#ff2 scb#ff2 ac 10 4 4 4 0 0 1]
//[sc#ff2 scb#ff2 ad 10 4 0]


Caricamento…
Annulla
Salva