package model import ( "time" "go.mongodb.org/mongo-driver/bson/primitive" ) type Transform struct { Pos Vect3 `bson:"pos" json:"pos"` Scale Vect3 `bson:"scale" json:"scale"` Rot Vect3 `bson:"rot" json:"rot"` } type Vect2 [2]float64 type Vect3 [3]float64 type Vect4 [4]float64 type VectXYWH struct { Y float64 `bson:"y" json:"y"` X float64 `bson:"x" json:"x"` W float64 `bson:"w" json:"w"` H float64 `bson:"h" json:"h"` } type DynamicProp struct { Label string `bson:"label"` Name string `bson:"name"` Value float32 `bson:"value"` Type string `bson:"type"` } type ComponentTransform struct { Translate []float32 `bson:"translate"` Rotate []float32 `bson:"rotate"` } type ComponentMaterial struct { Thumbnail *OssType `bson:"thumbnail,omitempty"` Name string `bson:"name,omitempty"` Id string `bson:"id"` Offset *Vect2 `bson:"offset"` Repeat *Vect2 `bson:"repeat"` Props []*DynamicProp `bson:"props"` } type ComponentImage struct { Id string `bson:"id" json:"id"` Image *OssType `bson:"image" json:"image"` Width int `bson:"width" json:"width"` Height int `bson:"height" json:"height"` Position Vect2 `bson:"position" json:"position"` Scale Vect2 `bson:"scale" json:"scale"` Rotation float64 `bson:"rotation" json:"rotation"` FillType string `bson:"fillType" json:"fillType"` Technology string `bson:"technology" json:"technology"` BasicColor Vect3 `bson:"basicColor" json:"basicColor"` AotuFactor float32 `bson:"aotuFactor" json:"aotuFactor"` RoughFactor float32 `bson:"roughFactor" json:"roughFactor"` ReflectionFactor float32 `bson:"reflectionFactor" json:"reflectionFactor"` MetalFactor float32 `bson:"metalFactor" json:"metalFactor"` } type ProductComponentUv struct { Img *OssType `bson:"img"` Transform ComponentTransform `bson:"transform"` } type ProductComponent struct { Id string `bson:"id"` Uv *ProductComponentUv `bson:"uv"` BaseMaterial *ComponentMaterial `bson:"baseMaterial"` Images []*ComponentImage `bson:"images"` } type SceneProduct struct { FromId string `bson:"fromId,omitempty" json:"fromId"` //多模型的支持 Id string `bson:"id,omitempty" json:"id"` Name string `bson:"name,omitempty" json:"name"` Type string `bson:"type,omitempty" json:"type"` Locked bool `bson:"locked,omitempty" json:"locked"` Visible bool `bson:"visible,omitempty" json:"visible"` Transform *Transform `bson:"transform,omitempty" json:"transform"` } type Product struct { Id string `bson:"id,omitempty"` Name string `bson:"name,omitempty"` //名字唯一 Thumbnail OssType `bson:"thumbnail,omitempty"` CreateTime time.Time `bson:"createTime,omitempty"` Components []*ProductComponent `bson:"components,omitempty"` } type SceneOfflineRender struct { TaskId string `bson:"taskId,omitempty"` Image OssType `bson:"image,omitempty"` } type Scene struct { Id string `bson:"id,omitempty"` Name string `bson:"name,omitempty"` //名字唯一 CreateTime time.Time `bson:"createTime,omitempty"` Thumbnail *OssType `bson:"thumbnail,omitempty"` Renders []*SceneOfflineRender `bson:"renders"` Product []*SceneProduct `bson:"renders"` } type Project struct { Id primitive.ObjectID `bson:"_id,omitempty"` Name string `bson:"name,omitempty"` Thumbnail OssType `bson:"thumbnail"` CreateTime time.Time `bson:"createTime,omitempty"` UpdateTime time.Time `bson:"updateTime,omitempty"` UserId primitive.ObjectID `bson:"userId,omitempty"` Products []*Product `bson:"products"` Scenes []*Scene `bson:"scenes"` } //declare interface DesignConfig { // scenes: { // lights: { // id: string; // name: string; // type: string; // }[]; // }[]; //}