ParticleInterface.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /**
  2. * 组件数据接口,记录粒子系统的成员属性和对应类型
  3. * 新增的属性字段需要在IParticleData和ParticleSchema中添加
  4. */
  5. export interface IParticleData {
  6. neverCull?: boolean;
  7. /**
  8. * 渲染模式。
  9. */
  10. renderMode?: string;
  11. uniforms?: [string, string][];
  12. states?: [string, string][];
  13. renderModel?: xrFrameSystem.GLTFModel;
  14. /**
  15. * 纹理信息。
  16. */
  17. texture?: xrFrameSystem.Texture;
  18. /**
  19. * 是否使用噪声纹理。
  20. */
  21. useNoise?: boolean;
  22. /**
  23. * 使用自定义的噪声纹理。
  24. */
  25. noiseTexture?: xrFrameSystem.Texture;
  26. /**
  27. * 最大粒子数目。
  28. */
  29. capacity?: number;
  30. /**
  31. * 每秒粒子发射数。
  32. */
  33. emitRate?: number;
  34. /**
  35. * 初始角度。
  36. */
  37. angle?: number[];
  38. /**
  39. * 粒子系统启动延时秒数。
  40. */
  41. delay?: number;
  42. /**
  43. * y轴方向上的每秒位移。
  44. */
  45. gravity?: number;
  46. /**
  47. * 初始大小。
  48. */
  49. size?: number[];
  50. /**
  51. * 粒子在x轴方向上的大小尺度。
  52. */
  53. scaleX?: number[];
  54. /**
  55. * 粒子在y轴方向上的大小尺度。
  56. */
  57. scaleY?: number[];
  58. /**
  59. * 速度。
  60. */
  61. speed?: number[];
  62. /**
  63. * 生命周期时长。
  64. */
  65. lifeTime?: number[];
  66. /**
  67. * 粒子初始颜色左区间。
  68. */
  69. startColor?: number[];
  70. /**
  71. * 粒子初始颜色右区间。
  72. */
  73. startColor2?: number[];
  74. /**
  75. * 粒子结束时颜色。
  76. */
  77. endColor?: number[];
  78. /**
  79. * 角速度。
  80. */
  81. angularSpeed?: number[];
  82. /**
  83. * 发射器类型。
  84. */
  85. emitterType?: string;
  86. /**
  87. * 发射器属性配置。
  88. */
  89. emitterProps?: [string, string][];
  90. /**
  91. * 粒子系统生命周期时长。
  92. */
  93. stopDuration?: number;
  94. /**
  95. * 粒子预渲染周期数。
  96. */
  97. prewarmCycles?: number;
  98. /**
  99. * 速度阻尼系数。
  100. */
  101. speedDampen?: number;
  102. /**
  103. * 动画图集信息。
  104. */
  105. atlas?: xrFrameSystem.Atlas;
  106. /**
  107. * 图集切换速度。
  108. */
  109. atlasSpeed?: number;
  110. /**
  111. * 是否随机播放图集。
  112. */
  113. atlasRandom?: boolean;
  114. /**
  115. * 是否循环播放图集。
  116. */
  117. atlasLoop?: boolean;
  118. /**
  119. * 指定图集帧名。
  120. */
  121. atlasFrames?: string[];
  122. /**
  123. * 网格信息。
  124. */
  125. mesh?: xrFrameSystem.Geometry;
  126. sizeChange?: [string, string][];
  127. colorChange?: [string, string][];
  128. speedChange?: [string, string][];
  129. burstCount?: number;
  130. burstTime?: number;
  131. burstCycle?: number;
  132. burstInterval?: number;
  133. }
  134. /**
  135. * 此处声明属性在框架内运行时的真正类型
  136. */
  137. export const ParticleSchema: xrFrameSystem.IComponentSchema = {
  138. renderModel: { type: 'gltf' },
  139. neverCull: { type: 'boolean', defaultValue: false },
  140. renderMode: { type: 'string', defaultValue: 'default' },
  141. uniforms: { type: 'map' },
  142. states: { type: 'map' },
  143. texture: { type: 'texture' },
  144. useNoise: { type: 'boolean' },
  145. noiseTexture: { type: 'texture' },
  146. capacity: { type: 'number' },
  147. emitRate: { type: 'number' },
  148. angle: { type: 'number-array' },
  149. delay: { type: 'number' },
  150. gravity: { type: 'number' },
  151. emitterPosition: { type: 'number-array' },
  152. size: { type: 'number-array' },
  153. scaleX: { type: 'number-array' },
  154. scaleY: { type: 'number-array' },
  155. speed: { type: 'number-array' },
  156. lifeTime: { type: 'number-array' },
  157. startColor: { type: 'number-array' },
  158. startColor2: { type: 'number-array' },
  159. endColor: { type: 'number-array' },
  160. angularSpeed: { type: 'number-array' },
  161. emitterType: { type: 'string' },
  162. emitterProps: { type: 'map' },
  163. stopDuration: { type: 'number' },
  164. prewarmCycles: { type: 'number' },
  165. speedDampen: { type: 'number', defaultValue: 0 },
  166. atlas: { type: 'atlas' },
  167. atlasSpeed: { type: 'number', defaultValue: 1 },
  168. atlasRandom: { type: 'boolean' },
  169. atlasLoop: { type: 'boolean', defaultValue: true },
  170. atlasFrames: { type: 'array' },
  171. mesh: { type: 'geometry' },
  172. sizeChange: { type: 'map' },
  173. colorChange: { type: 'map' },
  174. speedChange: { type: 'map' },
  175. burstCount: { type: 'number' },
  176. burstTime: { type: 'number' },
  177. burstCycle: { type: 'number' },
  178. burstInterval: { type: 'number' },
  179. }