package comm import ( "time" "go.mongodb.org/mongo-driver/bson/primitive" ) type DesignProduct struct { //设计单品信息 Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` ProjectId primitive.ObjectID `bson:"projectId,omitempty" json:"projectId"` FromDbConfId string `bson:"fromDbConfId,omitempty" json:"fromDbConfId"` //数据库定义Id FromAssetConfId string `bson:"fromAssetConfId,omitempty" json:"fromAssetConfId"` FromId string `bson:"fromId,omitempty" json:"fromId"` Name string `bson:"name,omitempty" json:"name"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` StaticMesh *StaticMeshSource `bson:"staticMesh,omitempty" json:"staticMesh"` //静态模型资产 UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` } type ProductHeader struct { Id string `bson:"id,omitempty" json:"id"` FromDbConfId string `bson:"fromDbConfId,omitempty" json:"fromDbConfId"` //数据库定义Id FromAssetConfId string `bson:"fromAssetConfId,omitempty" json:"fromAssetConfId"` //数据包 FromId string `bson:"fromId,omitempty" json:"fromId"` Name string `bson:"name,omitempty" json:"name"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` } type PackageProductCompMat struct { Id string `bson:"id" json:"id"` UvMap *OssType `bson:"uvmap" json:"uvmap"` UvSize *UvSize `bson:"uvsize" json:"uvsize"` Name string `bson:"name" json:"name"` MatId string `bson:"matId" json:"matId"` GroupId string `bson:"groupId" json:"groupId"` //部件分组Id Index int `bson:"index" json:"index"` Visible *bool `bson:"visible" json:"visible"` Locked *bool `bson:"locked" json:"locked"` //是否锁定 Images []*ComponentImage `bson:"images" json:"images"` PaperMatId string `bson:"paperMatId" json:"paperMatId"` //纸张id UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据 } type PackageProduct struct { Id string `bson:"id,omitempty" json:"id"` GeomId string `bson:"geomId,omitempty" json:"geomId"` Name string `bson:"name,omitempty" json:"name"` CusNum string `bson:"cusNum,omitempty" json:"cusNum,omitempty"` Type string `bson:"type,omitempty" json:"type,omitempty"` //类型 Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Components []*PackageProductCompMat `bson:"components,omitempty" json:"components"` UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据 } func (p *PackageProduct) UpdateSourceUrl(handler UpdateUrlHandler) { if p.Thumbnail != nil { p.Thumbnail.UpdateSourceUrl(handler) } for _, c := range p.Components { if c.UvMap != nil { c.UvMap.UpdateSourceUrl(handler) } } } type PackageGeom struct { Id string `bson:"id,omitempty" json:"id"` Name string `bson:"name,omitempty" json:"name"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Osgjs *OssType `bson:"osgjs,omitempty" json:"osgjs"` File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx Glb *OssType `bson:"glb,omitempty" json:"glb"` //hdr or fbx Shadow *OssType `bson:"shadow,omitempty" json:"shadow,omitempty"` BoundingBox *Obb `bson:"boundingBox,omitempty" json:"boundingBox,omitempty"` GenType string `bson:"genType,omitempty" json:"genType,omitempty"` //生成方式构建类型staticMesh, paramBox //默认staticMesh类型 GenConf interface{} `bson:"genConf,omitempty" json:"genConf,omitempty"` //构建配置 } func (g *PackageGeom) UpdateSourceUrl(handler UpdateUrlHandler) { if g.Thumbnail != nil { g.Thumbnail.UpdateSourceUrl(handler) } if g.Osgjs != nil { g.Osgjs.UpdateSourceUrl(handler) } if g.File != nil { g.File.UpdateSourceUrl(handler) } if g.Glb != nil { g.Glb.UpdateSourceUrl(handler) } if g.Shadow != nil { g.Shadow.UpdateSourceUrl(handler) } } type PackageSceneProduct struct { Id string `bson:"id,omitempty" json:"id"` ProdId string `bson:"prodId,omitempty" json:"prodId"` Transform *ModelTransform `bson:"transform,omitempty" json:"transform,omitempty"` Visible *bool `bson:"visible,omitempty" json:"visible,omitempty"` NoShadow *bool `bson:"noShadow,omitempty" json:"noShadow,omitempty"` //是否不显示阴影 UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据 } type PackageScene struct { Id string `bson:"id,omitempty" json:"id,omitempty"` Name string `bson:"name,omitempty" json:"name,omitempty"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail,omitempty"` EnvId string `bson:"envId,omitempty" json:"envId,omitempty"` Products []*PackageSceneProduct `bson:"products,omitempty" json:"products,omitempty"` Lights *SceneLight `bson:"lights,omitempty" json:"lights,omitempty"` Stickers []*PackSceneSticker `bson:"stickers,omitempty" json:"stickers,omitempty"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Background *Evn3dBackground `bson:"background,omitempty" json:"background"` //添加背景配置 UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据 } func (s *PackageScene) UpdateSourceUrl(handler UpdateUrlHandler) { if s.Thumbnail != nil { s.Thumbnail.UpdateSourceUrl(handler) } for _, tiker := range s.Stickers { if tiker.Img != nil { tiker.Img.UpdateSourceUrl(handler) } } if s.Background != nil && s.Background.Image != nil { s.Background.Image.UpdateSourceUrl(handler) } } type PositionObj2d struct { X int `bson:"x,omitempty" json:"x"` Y int `bson:"y,omitempty" json:"y"` } type PackSceneSticker struct { Id string `bson:"id,omitempty" json:"id"` Config interface{} `bson:"config,omitempty" json:"config"` Img *OssType `bson:"img,omitempty" json:"img"` Mirror []int `bson:"mirror,omitempty" json:"mirror"` Position PositionObj2d `bson:"position,omitempty" json:"position"` Rotation int `bson:"rotation,omitempty" json:"rotation"` Scale []float32 `bson:"scale,omitempty" json:"scale"` Visible *bool `bson:"visible,omitempty" json:"visible"` } type PackageEnv3d struct { Id string `bson:"id,omitempty" json:"id"` Name string `bson:"name,omitempty" json:"name"` CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //自定义编号 Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` HDR *OssType `bson:"hdr,omitempty" json:"hdr"` Config *Evn3dHdrConf `bson:"config,omitempty" json:"config"` Options *Env3dOption `bson:"options,omitempty" json:"options"` ToneMap *ToneMap `bson:"toneMap,omitempty" json:"toneMap"` Background *Evn3dBackground `bson:"background,omitempty" json:"background"` UserData interface{} `bson:"userData,omitempty" json:"userData"` //用户数据 } func (e *PackageEnv3d) UpdateSourceUrl(handler UpdateUrlHandler) { if e.Thumbnail != nil { e.Thumbnail.UpdateSourceUrl(handler) } if e.HDR != nil { e.HDR.UpdateSourceUrl(handler) } if e.Config != nil { e.Config.UpdateSourceUrl(handler) } if e.Background != nil && e.Background.Image != nil { e.Background.Image.UpdateSourceUrl(handler) } } type PackageMaterial struct { Id string `bson:"id,omitempty" json:"id"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Name string `bson:"name,omitempty" json:"name"` CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //编号 NormalMap *OssType `bson:"normalMap,omitempty" json:"normalMap"` DisplaceMap *OssType `bson:"displaceMap,omitempty" json:"displaceMap"` //置换贴图 DisplaceFactor *float64 `bson:"displaceFactor,omitempty" json:"displaceFactor"` BaseMap *OssType `bson:"baseMap,omitempty" json:"baseMap"` BaseColor *Vect3 `bson:"baseColor,omitempty" json:"baseColor"` RoughMap *OssType `bson:"roughMap,omitempty" json:"roughMap"` RoughFactor *float64 `bson:"roughFactor,omitempty" json:"roughFactor"` MetalMap *OssType `bson:"metalMap,omitempty" json:"metalMap"` MetalFactor *float64 `bson:"metalFactor,omitempty" json:"metalFactor"` DiffuseMap *OssType `bson:"diffuseMap,omitempty" json:"diffuseMap"` DiffuseColor *Vect3 `bson:"diffuseColor,omitempty" json:"diffuseColor"` GlossMap *OssType `bson:"glossMap,omitempty" json:"glossMap"` //光泽贴图 GlossFactor *float64 `bson:"glossFactor,omitempty" json:"glossFactor"` SpecMap *OssType `bson:"specMap,omitempty" json:"specMap"` //高光贴图 SpecColor *Vect3 `bson:"specColor,omitempty" json:"specColor"` //高光贴图 //工艺相关材质球 TechMaterial *TechMatConfig `bson:"techMaterial" json:"techMaterial"` Images []*ComponentImage `bson:"images" json:"images"` OpacMap *OssType `bson:"opacMap,omitempty" json:"opacMap"` //透明度 OpacFactor *float64 `bson:"opacFactor,omitempty" json:"opacFactor"` //透明度贴图 Type string `bson:"type,omitempty" json:"type"` //spec meta //高光流 金属流(默认) Uvtransform *MaterailUv `bson:"uv,omitempty" json:"uv"` CusUvTransform *MaterailUv `bson:"cusUv,omitempty" json:"cusUv"` //用户定义的uv //LogicType string `bson:"logicType,omitempty" json:"logicType"` //fabric3d fabric2d color //3d面料 2d图片面料 color //特殊材质球 UvMap string `bson:"uvMap,omitempty" json:"uvMap"` //uv的映射方式 box 或 uv 默认box UserData interface{} `bson:"userData,omitempty" json:"userData"` //指定要数据放置的字段 } func (m *PackageMaterial) CopyFromMatConf(c *MaterialConf) { m.Thumbnail = c.Thumbnail m.BaseColor = c.BaseColor m.BaseMap = c.BaseMap m.MetalFactor = c.MetalFactor m.MetalMap = c.MetalMap m.RoughFactor = c.RoughFactor m.RoughMap = c.RoughMap m.NormalMap = c.NormalMap m.Name = c.Name if len(c.Type) > 0 { m.Type = c.Type } m.OpacFactor = c.OpacFactor m.OpacMap = c.OpacMap m.Uvtransform = c.Uvtransform m.CusNum = c.CusNum m.DiffuseColor = c.DiffuseColor m.DiffuseMap = c.DiffuseMap m.DisplaceFactor = c.DisplaceFactor m.DisplaceMap = c.DisplaceMap m.GlossFactor = c.GlossFactor m.GlossMap = c.GlossMap m.SpecColor = c.SpecColor m.SpecMap = c.SpecMap } type Queen3dPackageSource struct { Version string `bson:"version,omitempty" json:"version"` ViewMode string `bson:"viewMode,omitempty" json:"viewMode"` //prod or scene //单品或场景 //材质球 Mats []*MatConfigSource `bson:"mats,omitempty" json:"mats"` //几何体 Geoms []*PackageGeom `bson:"geoms,omitempty" json:"geoms"` //环境 Env3ds []*PackageEnv3d `bson:"env3ds,omitempty" json:"env3ds"` //使用的单品 Products []*PackageProduct `bson:"products,omitempty" json:"products"` //场景 Scenes []*PackageScene `bson:"scenes,omitempty" json:"scenes"` UserData interface{} `bson:"userData,omitempty" json:"userData"` //指定要数据放置的字段 }