NodeUtils.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { Color, Matrix3, Matrix4, Vector2, Vector3, Vector4 } from 'three';
  2. export const getNodesKeys = ( object ) => {
  3. const props = [];
  4. for ( const name in object ) {
  5. const value = object[ name ];
  6. if ( value && value.isNode === true ) {
  7. props.push( name );
  8. }
  9. }
  10. return props;
  11. };
  12. export const getValueType = ( value ) => {
  13. if ( typeof value === 'number' ) {
  14. return 'float';
  15. } else if ( typeof value === 'boolean' ) {
  16. return 'bool';
  17. } else if ( value?.isVector2 === true ) {
  18. return 'vec2';
  19. } else if ( value?.isVector3 === true ) {
  20. return 'vec3';
  21. } else if ( value?.isVector4 === true ) {
  22. return 'vec4';
  23. } else if ( value?.isMatrix3 === true ) {
  24. return 'mat3';
  25. } else if ( value?.isMatrix4 === true ) {
  26. return 'mat4';
  27. } else if ( value?.isColor === true ) {
  28. return 'color';
  29. }
  30. return null;
  31. };
  32. export const getValueFromType = ( type, ...params ) => {
  33. const last4 = type?.slice( -4 );
  34. if ( type === 'color' ) {
  35. return new Color( ...params );
  36. } else if ( last4 === 'vec2' ) {
  37. return new Vector2( ...params );
  38. } else if ( last4 === 'vec3' ) {
  39. return new Vector3( ...params );
  40. } else if ( last4 === 'vec4' ) {
  41. return new Vector4( ...params );
  42. } else if ( last4 === 'mat3' ) {
  43. return new Matrix3( ...params );
  44. } else if ( last4 === 'mat4' ) {
  45. return new Matrix4( ...params );
  46. } else if ( type === 'bool' ) {
  47. return false;
  48. } else if ( ( type === 'float' ) || ( type === 'int' ) || ( type === 'uint' ) ) {
  49. return 0;
  50. }
  51. return null;
  52. };