project.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package model
  2. import (
  3. "time"
  4. "go.mongodb.org/mongo-driver/bson/primitive"
  5. )
  6. type Transform struct {
  7. Pos Vect3 `bson:"pos" json:"pos"`
  8. Scale Vect3 `bson:"scale" json:"scale"`
  9. Rot Vect3 `bson:"rot" json:"rot"`
  10. }
  11. type Vect2 [2]float64
  12. type Vect3 [3]float64
  13. type Vect4 [4]float64
  14. type VectXYWH struct {
  15. Y float64 `bson:"y" json:"y"`
  16. X float64 `bson:"x" json:"x"`
  17. W float64 `bson:"w" json:"w"`
  18. H float64 `bson:"h" json:"h"`
  19. }
  20. type DynamicProp struct {
  21. Label string `bson:"label"`
  22. Name string `bson:"name"`
  23. Value float32 `bson:"value"`
  24. Type string `bson:"type"`
  25. }
  26. type ComponentTransform struct {
  27. Translate []float32 `bson:"translate"`
  28. Rotate []float32 `bson:"rotate"`
  29. }
  30. type ComponentMaterial struct {
  31. Thumbnail *OssType `bson:"thumbnail,omitempty"`
  32. Name string `bson:"name,omitempty"`
  33. Id string `bson:"id"`
  34. Offset *Vect2 `bson:"offset"`
  35. Repeat *Vect2 `bson:"repeat"`
  36. Props []*DynamicProp `bson:"props"`
  37. }
  38. type ComponentImage struct {
  39. Id string `bson:"id" json:"id"`
  40. Image *OssType `bson:"image" json:"image"`
  41. Width int `bson:"width" json:"width"`
  42. Height int `bson:"height" json:"height"`
  43. Position Vect2 `bson:"position" json:"position"`
  44. Scale Vect2 `bson:"scale" json:"scale"`
  45. Rotation float64 `bson:"rotation" json:"rotation"`
  46. FillType string `bson:"fillType" json:"fillType"`
  47. Technology string `bson:"technology" json:"technology"`
  48. BasicColor Vect3 `bson:"basicColor" json:"basicColor"`
  49. AotuFactor float32 `bson:"aotuFactor" json:"aotuFactor"`
  50. RoughFactor float32 `bson:"roughFactor" json:"roughFactor"`
  51. ReflectionFactor float32 `bson:"reflectionFactor" json:"reflectionFactor"`
  52. MetalFactor float32 `bson:"metalFactor" json:"metalFactor"`
  53. }
  54. type ProductComponentUv struct {
  55. Img *OssType `bson:"img"`
  56. Transform ComponentTransform `bson:"transform"`
  57. }
  58. type ProductComponent struct {
  59. Id string `bson:"id"`
  60. Uv *ProductComponentUv `bson:"uv"`
  61. BaseMaterial *ComponentMaterial `bson:"baseMaterial"`
  62. Images []*ComponentImage `bson:"images"`
  63. }
  64. type SceneProduct struct {
  65. FromId string `bson:"fromId,omitempty" json:"fromId"` //多模型的支持
  66. Id string `bson:"id,omitempty" json:"id"`
  67. Name string `bson:"name,omitempty" json:"name"`
  68. Type string `bson:"type,omitempty" json:"type"`
  69. Locked bool `bson:"locked,omitempty" json:"locked"`
  70. Visible bool `bson:"visible,omitempty" json:"visible"`
  71. Transform *Transform `bson:"transform,omitempty" json:"transform"`
  72. }
  73. type Product struct {
  74. Id string `bson:"id,omitempty"`
  75. Name string `bson:"name,omitempty"` //名字唯一
  76. Thumbnail OssType `bson:"thumbnail,omitempty"`
  77. CreateTime time.Time `bson:"createTime,omitempty"`
  78. Components []*ProductComponent `bson:"components,omitempty"`
  79. }
  80. type SceneOfflineRender struct {
  81. TaskId string `bson:"taskId,omitempty"`
  82. Image OssType `bson:"image,omitempty"`
  83. }
  84. type Scene struct {
  85. Id string `bson:"id,omitempty"`
  86. Name string `bson:"name,omitempty"` //名字唯一
  87. CreateTime time.Time `bson:"createTime,omitempty"`
  88. Thumbnail *OssType `bson:"thumbnail,omitempty"`
  89. Renders []*SceneOfflineRender `bson:"renders"`
  90. Product []*SceneProduct `bson:"renders"`
  91. }
  92. type Project struct {
  93. Id primitive.ObjectID `bson:"_id,omitempty"`
  94. Name string `bson:"name,omitempty"`
  95. Thumbnail OssType `bson:"thumbnail"`
  96. CreateTime time.Time `bson:"createTime,omitempty"`
  97. UpdateTime time.Time `bson:"updateTime,omitempty"`
  98. UserId primitive.ObjectID `bson:"userId,omitempty"`
  99. Products []*Product `bson:"products"`
  100. Scenes []*Scene `bson:"scenes"`
  101. }
  102. //declare interface DesignConfig {
  103. // scenes: {
  104. // lights: {
  105. // id: string;
  106. // name: string;
  107. // type: string;
  108. // }[];
  109. // }[];
  110. //}