package.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package comm
  2. import (
  3. "time"
  4. "go.mongodb.org/mongo-driver/bson/primitive"
  5. )
  6. type DesignProduct struct { //设计单品信息
  7. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  8. ProjectId primitive.ObjectID `bson:"projectId,omitempty" json:"projectId"`
  9. FromDbConfId string `bson:"fromDbConfId,omitempty" json:"fromDbConfId"` //数据库定义Id
  10. FromAssetConfId string `bson:"fromAssetConfId,omitempty" json:"fromAssetConfId"`
  11. FromId string `bson:"fromId,omitempty" json:"fromId"`
  12. Name string `bson:"name,omitempty" json:"name"`
  13. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  14. StaticMesh *StaticMeshSource `bson:"staticMesh,omitempty" json:"staticMesh"` //静态模型资产
  15. UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`
  16. }
  17. type ProductHeader struct {
  18. Id string `bson:"id,omitempty" json:"id"`
  19. FromDbConfId string `bson:"fromDbConfId,omitempty" json:"fromDbConfId"` //数据库定义Id
  20. FromAssetConfId string `bson:"fromAssetConfId,omitempty" json:"fromAssetConfId"` //数据包
  21. FromId string `bson:"fromId,omitempty" json:"fromId"`
  22. Name string `bson:"name,omitempty" json:"name"`
  23. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  24. CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
  25. }
  26. type PackageProductCompMat struct {
  27. Id string `bson:"id" json:"id"`
  28. UvMap *OssType `bson:"uvmap" json:"uvmap"`
  29. UvSize *UvSize `bson:"uvsize" json:"uvsize"`
  30. Name string `bson:"name" json:"name"`
  31. MatId string `bson:"matId" json:"matId"`
  32. GroupId string `bson:"groupId" json:"groupId"` //部件分组Id
  33. Index int `bson:"index" json:"index"`
  34. Visible *bool `bson:"visible" json:"visible"`
  35. Locked *bool `bson:"locked" json:"locked"` //是否锁定
  36. Images []*ComponentImage `bson:"images" json:"images"`
  37. PaperMatId string `bson:"paperMatId" json:"paperMatId"` //纸张id
  38. UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
  39. }
  40. type PackageProduct struct {
  41. Id string `bson:"id,omitempty" json:"id"`
  42. GeomId string `bson:"geomId,omitempty" json:"geomId"`
  43. Name string `bson:"name,omitempty" json:"name"`
  44. CusNum string `bson:"cusNum,omitempty" json:"cusNum,omitempty"`
  45. Type string `bson:"type,omitempty" json:"type,omitempty"` //类型
  46. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  47. Components []*PackageProductCompMat `bson:"components,omitempty" json:"components"`
  48. UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
  49. }
  50. func (p *PackageProduct) UpdateSourceUrl(handler UpdateUrlHandler) {
  51. if p.Thumbnail != nil {
  52. p.Thumbnail.UpdateSourceUrl(handler)
  53. }
  54. for _, c := range p.Components {
  55. if c.UvMap != nil {
  56. c.UvMap.UpdateSourceUrl(handler)
  57. }
  58. }
  59. }
  60. type PackageGeom struct {
  61. Id string `bson:"id,omitempty" json:"id"`
  62. Name string `bson:"name,omitempty" json:"name"`
  63. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  64. Osgjs *OssType `bson:"osgjs,omitempty" json:"osgjs"`
  65. File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx
  66. Glb *OssType `bson:"glb,omitempty" json:"glb"` //hdr or fbx
  67. Shadow *OssType `bson:"shadow,omitempty" json:"shadow,omitempty"`
  68. BoundingBox *Obb `bson:"boundingBox,omitempty" json:"boundingBox,omitempty"`
  69. GenType string `bson:"genType,omitempty" json:"genType,omitempty"` //生成方式构建类型staticMesh, paramBox //默认staticMesh类型
  70. GenConf interface{} `bson:"genConf,omitempty" json:"genConf,omitempty"` //构建配置
  71. }
  72. func (g *PackageGeom) UpdateSourceUrl(handler UpdateUrlHandler) {
  73. if g.Thumbnail != nil {
  74. g.Thumbnail.UpdateSourceUrl(handler)
  75. }
  76. if g.Osgjs != nil {
  77. g.Osgjs.UpdateSourceUrl(handler)
  78. }
  79. if g.File != nil {
  80. g.File.UpdateSourceUrl(handler)
  81. }
  82. if g.Glb != nil {
  83. g.Glb.UpdateSourceUrl(handler)
  84. }
  85. if g.Shadow != nil {
  86. g.Shadow.UpdateSourceUrl(handler)
  87. }
  88. }
  89. type PackageSceneProduct struct {
  90. Id string `bson:"id,omitempty" json:"id"`
  91. ProdId string `bson:"prodId,omitempty" json:"prodId"`
  92. Transform *ModelTransform `bson:"transform,omitempty" json:"transform,omitempty"`
  93. Visible *bool `bson:"visible,omitempty" json:"visible,omitempty"`
  94. NoShadow *bool `bson:"noShadow,omitempty" json:"noShadow,omitempty"` //是否不显示阴影
  95. UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
  96. }
  97. type PackageScene struct {
  98. Id string `bson:"id,omitempty" json:"id,omitempty"`
  99. Name string `bson:"name,omitempty" json:"name,omitempty"`
  100. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail,omitempty"`
  101. EnvId string `bson:"envId,omitempty" json:"envId,omitempty"`
  102. Products []*PackageSceneProduct `bson:"products,omitempty" json:"products,omitempty"`
  103. Lights *SceneLight `bson:"lights,omitempty" json:"lights,omitempty"`
  104. Stickers []*PackSceneSticker `bson:"stickers,omitempty" json:"stickers,omitempty"`
  105. CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
  106. UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`
  107. Background *Evn3dBackground `bson:"background,omitempty" json:"background"` //添加背景配置
  108. UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
  109. }
  110. func (s *PackageScene) UpdateSourceUrl(handler UpdateUrlHandler) {
  111. if s.Thumbnail != nil {
  112. s.Thumbnail.UpdateSourceUrl(handler)
  113. }
  114. for _, tiker := range s.Stickers {
  115. if tiker.Img != nil {
  116. tiker.Img.UpdateSourceUrl(handler)
  117. }
  118. }
  119. if s.Background != nil && s.Background.Image != nil {
  120. s.Background.Image.UpdateSourceUrl(handler)
  121. }
  122. }
  123. type PositionObj2d struct {
  124. X int `bson:"x,omitempty" json:"x"`
  125. Y int `bson:"y,omitempty" json:"y"`
  126. }
  127. type PackSceneSticker struct {
  128. Id string `bson:"id,omitempty" json:"id"`
  129. Config interface{} `bson:"config,omitempty" json:"config"`
  130. Img *OssType `bson:"img,omitempty" json:"img"`
  131. Mirror []int `bson:"mirror,omitempty" json:"mirror"`
  132. Position PositionObj2d `bson:"position,omitempty" json:"position"`
  133. Rotation int `bson:"rotation,omitempty" json:"rotation"`
  134. Scale []float32 `bson:"scale,omitempty" json:"scale"`
  135. Visible *bool `bson:"visible,omitempty" json:"visible"`
  136. }
  137. type PackageEnv3d struct {
  138. Id string `bson:"id,omitempty" json:"id"`
  139. Name string `bson:"name,omitempty" json:"name"`
  140. CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //自定义编号
  141. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  142. CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
  143. HDR *OssType `bson:"hdr,omitempty" json:"hdr"`
  144. Config *Evn3dHdrConf `bson:"config,omitempty" json:"config"`
  145. Options *Env3dOption `bson:"options,omitempty" json:"options"`
  146. ToneMap *ToneMap `bson:"toneMap,omitempty" json:"toneMap"`
  147. Background *Evn3dBackground `bson:"background,omitempty" json:"background"`
  148. UserData interface{} `bson:"userData,omitempty" json:"userData"` //用户数据
  149. }
  150. func (e *PackageEnv3d) UpdateSourceUrl(handler UpdateUrlHandler) {
  151. if e.Thumbnail != nil {
  152. e.Thumbnail.UpdateSourceUrl(handler)
  153. }
  154. if e.HDR != nil {
  155. e.HDR.UpdateSourceUrl(handler)
  156. }
  157. if e.Config != nil {
  158. e.Config.UpdateSourceUrl(handler)
  159. }
  160. if e.Background != nil && e.Background.Image != nil {
  161. e.Background.Image.UpdateSourceUrl(handler)
  162. }
  163. }
  164. type PackageMaterial struct {
  165. Id string `bson:"id,omitempty" json:"id"`
  166. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  167. Name string `bson:"name,omitempty" json:"name"`
  168. CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //编号
  169. NormalMap *OssType `bson:"normalMap,omitempty" json:"normalMap"`
  170. DisplaceMap *OssType `bson:"displaceMap,omitempty" json:"displaceMap"` //置换贴图
  171. DisplaceFactor *float64 `bson:"displaceFactor,omitempty" json:"displaceFactor"`
  172. BaseMap *OssType `bson:"baseMap,omitempty" json:"baseMap"`
  173. BaseColor *Vect3 `bson:"baseColor,omitempty" json:"baseColor"`
  174. RoughMap *OssType `bson:"roughMap,omitempty" json:"roughMap"`
  175. RoughFactor *float64 `bson:"roughFactor,omitempty" json:"roughFactor"`
  176. MetalMap *OssType `bson:"metalMap,omitempty" json:"metalMap"`
  177. MetalFactor *float64 `bson:"metalFactor,omitempty" json:"metalFactor"`
  178. DiffuseMap *OssType `bson:"diffuseMap,omitempty" json:"diffuseMap"`
  179. DiffuseColor *Vect3 `bson:"diffuseColor,omitempty" json:"diffuseColor"`
  180. GlossMap *OssType `bson:"glossMap,omitempty" json:"glossMap"` //光泽贴图
  181. GlossFactor *float64 `bson:"glossFactor,omitempty" json:"glossFactor"`
  182. SpecMap *OssType `bson:"specMap,omitempty" json:"specMap"` //高光贴图
  183. SpecColor *Vect3 `bson:"specColor,omitempty" json:"specColor"` //高光贴图
  184. //工艺相关材质球
  185. TechMaterial *TechMatConfig `bson:"techMaterial" json:"techMaterial"`
  186. Images []*ComponentImage `bson:"images" json:"images"`
  187. OpacMap *OssType `bson:"opacMap,omitempty" json:"opacMap"` //透明度
  188. OpacFactor *float64 `bson:"opacFactor,omitempty" json:"opacFactor"` //透明度贴图
  189. Type string `bson:"type,omitempty" json:"type"` //spec meta //高光流 金属流(默认)
  190. Uvtransform *MaterailUv `bson:"uv,omitempty" json:"uv"`
  191. CusUvTransform *MaterailUv `bson:"cusUv,omitempty" json:"cusUv"` //用户定义的uv
  192. //LogicType string `bson:"logicType,omitempty" json:"logicType"` //fabric3d fabric2d color //3d面料 2d图片面料 color //特殊材质球
  193. UvMap string `bson:"uvMap,omitempty" json:"uvMap"` //uv的映射方式 box 或 uv 默认box
  194. UserData interface{} `bson:"userData,omitempty" json:"userData"` //指定要数据放置的字段
  195. }
  196. func (m *PackageMaterial) CopyFromMatConf(c *MaterialConf) {
  197. m.Thumbnail = c.Thumbnail
  198. m.BaseColor = c.BaseColor
  199. m.BaseMap = c.BaseMap
  200. m.MetalFactor = c.MetalFactor
  201. m.MetalMap = c.MetalMap
  202. m.RoughFactor = c.RoughFactor
  203. m.RoughMap = c.RoughMap
  204. m.NormalMap = c.NormalMap
  205. m.Name = c.Name
  206. if len(c.Type) > 0 {
  207. m.Type = c.Type
  208. }
  209. m.OpacFactor = c.OpacFactor
  210. m.OpacMap = c.OpacMap
  211. m.Uvtransform = c.Uvtransform
  212. m.CusNum = c.CusNum
  213. m.DiffuseColor = c.DiffuseColor
  214. m.DiffuseMap = c.DiffuseMap
  215. m.DisplaceFactor = c.DisplaceFactor
  216. m.DisplaceMap = c.DisplaceMap
  217. m.GlossFactor = c.GlossFactor
  218. m.GlossMap = c.GlossMap
  219. m.SpecColor = c.SpecColor
  220. m.SpecMap = c.SpecMap
  221. }
  222. type Queen3dPackageSource struct {
  223. Version string `bson:"version,omitempty" json:"version"`
  224. ViewMode string `bson:"viewMode,omitempty" json:"viewMode"` //prod or scene //单品或场景
  225. //材质球
  226. Mats []*MatConfigSource `bson:"mats,omitempty" json:"mats"`
  227. //几何体
  228. Geoms []*PackageGeom `bson:"geoms,omitempty" json:"geoms"`
  229. //环境
  230. Env3ds []*PackageEnv3d `bson:"env3ds,omitempty" json:"env3ds"`
  231. //使用的单品
  232. Products []*PackageProduct `bson:"products,omitempty" json:"products"`
  233. //场景
  234. Scenes []*PackageScene `bson:"scenes,omitempty" json:"scenes"`
  235. UserData interface{} `bson:"userData,omitempty" json:"userData"` //指定要数据放置的字段
  236. }