blockTools.ts 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. import { AlphaTestBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/alphaTestBlock';
  2. import { BonesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/bonesBlock';
  3. import { InstancesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/instancesBlock';
  4. import { MorphTargetsBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/morphTargetsBlock';
  5. import { ImageProcessingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/imageProcessingBlock';
  6. import { ColorMergerBlock } from 'babylonjs/Materials/Node/Blocks/colorMergerBlock';
  7. import { VectorMergerBlock } from 'babylonjs/Materials/Node/Blocks/vectorMergerBlock';
  8. import { ColorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/colorSplitterBlock';
  9. import { VectorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/vectorSplitterBlock';
  10. import { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
  11. import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
  12. import { ReflectionTextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/reflectionTextureBlock';
  13. import { LightBlock } from 'babylonjs/Materials/Node/Blocks/Dual/lightBlock';
  14. import { FogBlock } from 'babylonjs/Materials/Node/Blocks/Dual/fogBlock';
  15. import { VertexOutputBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/vertexOutputBlock';
  16. import { FragmentOutputBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragmentOutputBlock';
  17. import { NormalizeBlock } from 'babylonjs/Materials/Node/Blocks/normalizeBlock';
  18. import { AddBlock } from 'babylonjs/Materials/Node/Blocks/addBlock';
  19. import { ScaleBlock } from 'babylonjs/Materials/Node/Blocks/scaleBlock';
  20. import { TrigonometryBlock, TrigonometryBlockOperations } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
  21. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  22. import { CrossBlock } from 'babylonjs/Materials/Node/Blocks/crossBlock';
  23. import { DotBlock } from 'babylonjs/Materials/Node/Blocks/dotBlock';
  24. import { MultiplyBlock } from 'babylonjs/Materials/Node/Blocks/multiplyBlock';
  25. import { TransformBlock } from 'babylonjs/Materials/Node/Blocks/transformBlock';
  26. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  27. import { FresnelBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fresnelBlock';
  28. import { LerpBlock } from 'babylonjs/Materials/Node/Blocks/lerpBlock';
  29. import { DivideBlock } from 'babylonjs/Materials/Node/Blocks/divideBlock';
  30. import { SubtractBlock } from 'babylonjs/Materials/Node/Blocks/subtractBlock';
  31. import { StepBlock } from 'babylonjs/Materials/Node/Blocks/stepBlock';
  32. export class BlockTools {
  33. public static GetBlockFromString(data: string) {
  34. switch (data) {
  35. case "BonesBlock":
  36. return new BonesBlock("Bones");
  37. case "InstancesBlock":
  38. return new InstancesBlock("Instances");
  39. case "MorphTargetsBlock":
  40. return new MorphTargetsBlock("MorphTargets");
  41. case "AlphaTestBlock":
  42. return new AlphaTestBlock("AlphaTest");
  43. case "ImageProcessingBlock":
  44. return new ImageProcessingBlock("ImageProcessing");
  45. case "ColorMergerBlock":
  46. return new ColorMergerBlock("ColorMerger");
  47. case "VectorMergerBlock":
  48. return new VectorMergerBlock("VectorMerger");
  49. case "ColorSplitterBlock":
  50. return new ColorSplitterBlock("ColorSplitter");
  51. case "VectorSplitterBlock":
  52. return new VectorSplitterBlock("VectorSplitter");
  53. case "TextureBlock":
  54. return new TextureBlock("Texture");
  55. case "ReflectionTextureBlock":
  56. return new ReflectionTextureBlock("Texture");
  57. case "LightBlock":
  58. return new LightBlock("Lights");
  59. case "FogBlock":
  60. return new FogBlock("Fog");
  61. case "VertexOutputBlock":
  62. return new VertexOutputBlock("VertexOutput");
  63. case "FragmentOutputBlock":
  64. return new FragmentOutputBlock("FragmentOutput");
  65. case "AddBlock":
  66. return new AddBlock("Add");
  67. case "ClampBlock":
  68. return new ClampBlock("Clamp");
  69. case "ScaleBlock":
  70. return new ScaleBlock("Scale");
  71. case "CrossBlock":
  72. return new CrossBlock("Dot");
  73. case "DotBlock":
  74. return new DotBlock("Dot");
  75. case "MultiplyBlock":
  76. return new MultiplyBlock("Multiply");
  77. case "TransformBlock":
  78. return new TransformBlock("Transform");
  79. case "TrigonometryBlock":
  80. return new TrigonometryBlock("Trigonometry");
  81. case "RemapBlock":
  82. return new RemapBlock("Remap");
  83. case "NormalizeBlock":
  84. return new NormalizeBlock("Normalize");
  85. case "FresnelBlock":
  86. return new FresnelBlock("Fresnel");
  87. case "LerpBlock":
  88. return new LerpBlock("Lerp");
  89. case "DivideBlock":
  90. return new DivideBlock("Divide");
  91. case "SubtractBlock":
  92. return new SubtractBlock("Subtract");
  93. case "StepBlock":
  94. return new StepBlock("Step");
  95. case "CosBlock": {
  96. let cosBlock = new TrigonometryBlock("Cos");
  97. cosBlock.operation = TrigonometryBlockOperations.Cos;
  98. return cosBlock;
  99. }
  100. case "SinBlock": {
  101. let sinBlock = new TrigonometryBlock("Sin");
  102. sinBlock.operation = TrigonometryBlockOperations.Sin;
  103. return sinBlock;
  104. }
  105. case "AbsBlock": {
  106. let absBlock = new TrigonometryBlock("Abs");
  107. absBlock.operation = TrigonometryBlockOperations.Abs;
  108. return absBlock;
  109. }
  110. case "ExpBlock": {
  111. let expBlock = new TrigonometryBlock("Exp");
  112. expBlock.operation = TrigonometryBlockOperations.Exp;
  113. return expBlock;
  114. }
  115. case "Exp2Block": {
  116. let exp2Block = new TrigonometryBlock("Exp2");
  117. exp2Block.operation = TrigonometryBlockOperations.Exp2;
  118. return exp2Block;
  119. }
  120. case "RoundBlock": {
  121. let roundBlock = new TrigonometryBlock("Round");
  122. roundBlock.operation = TrigonometryBlockOperations.Round;
  123. return roundBlock;
  124. }
  125. case "CeilingBlock": {
  126. let ceilingBlock = new TrigonometryBlock("Ceiling");
  127. ceilingBlock.operation = TrigonometryBlockOperations.Ceiling;
  128. return ceilingBlock;
  129. }
  130. case "FloorBlock": {
  131. let floorBlock = new TrigonometryBlock("Floor");
  132. floorBlock.operation = TrigonometryBlockOperations.Floor;
  133. return floorBlock;
  134. }
  135. }
  136. return null;
  137. }
  138. public static GetColorFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes) {
  139. let color = "Red";
  140. switch (type) {
  141. case NodeMaterialBlockConnectionPointTypes.Float:
  142. color = "#ca9e27";
  143. break;
  144. case NodeMaterialBlockConnectionPointTypes.Vector2:
  145. color = "#16bcb1";
  146. break;
  147. case NodeMaterialBlockConnectionPointTypes.Vector3:
  148. case NodeMaterialBlockConnectionPointTypes.Color3:
  149. color = "#b786cb";
  150. break;
  151. case NodeMaterialBlockConnectionPointTypes.Vector4:
  152. case NodeMaterialBlockConnectionPointTypes.Color4:
  153. color = "#be5126";
  154. break;
  155. case NodeMaterialBlockConnectionPointTypes.Matrix:
  156. color = "#591990";
  157. break;
  158. }
  159. return color;
  160. }
  161. public static GetConnectionNodeTypeFromString(type: string) {
  162. switch (type) {
  163. case "Float":
  164. return NodeMaterialBlockConnectionPointTypes.Float;
  165. case "Vector2":
  166. return NodeMaterialBlockConnectionPointTypes.Vector2;
  167. case "Vector3":
  168. return NodeMaterialBlockConnectionPointTypes.Vector3;
  169. case "Vector4":
  170. return NodeMaterialBlockConnectionPointTypes.Vector4;
  171. case "Matrix":
  172. return NodeMaterialBlockConnectionPointTypes.Matrix;
  173. case "Color3":
  174. return NodeMaterialBlockConnectionPointTypes.Color3;
  175. case "Color4":
  176. return NodeMaterialBlockConnectionPointTypes.Color4;
  177. }
  178. return NodeMaterialBlockConnectionPointTypes.AutoDetect;
  179. }
  180. public static GetStringFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes) {
  181. switch (type){
  182. case NodeMaterialBlockConnectionPointTypes.Float:
  183. return "Float";
  184. case NodeMaterialBlockConnectionPointTypes.Vector2:
  185. return "Vector2";
  186. case NodeMaterialBlockConnectionPointTypes.Vector3:
  187. return "Vector3";
  188. case NodeMaterialBlockConnectionPointTypes.Vector4:
  189. return "Vector4";
  190. case NodeMaterialBlockConnectionPointTypes.Color3:
  191. return "Color3";
  192. case NodeMaterialBlockConnectionPointTypes.Color4:
  193. return "Color4";
  194. case NodeMaterialBlockConnectionPointTypes.Matrix:
  195. return "Matrix";
  196. }
  197. return "";
  198. }
  199. }