@@ -12,6 +12,7 @@ namespace gdjs {
12
12
13
13
export type CustomObjectConfiguration = ObjectConfiguration & {
14
14
animatable ?: SpriteAnimationData [ ] ;
15
+ variant : string ;
15
16
childrenContent : { [ objectName : string ] : ObjectConfiguration & any } ;
16
17
} ;
17
18
@@ -92,34 +93,50 @@ namespace gdjs {
92
93
}
93
94
94
95
private _initializeFromObjectData (
95
- objectData : ObjectData & CustomObjectConfiguration
96
+ customObjectData : ObjectData & CustomObjectConfiguration
96
97
) {
97
98
const eventsBasedObjectData = this . _runtimeScene
98
99
. getGame ( )
99
- . getEventsBasedObjectData ( objectData . type ) ;
100
+ . getEventsBasedObjectData ( customObjectData . type ) ;
100
101
if ( ! eventsBasedObjectData ) {
101
102
logger . error (
102
- `A CustomRuntimeObject was initialized (or re-initialized) from object data referring to an non existing events based object data with type "${ objectData . type } ".`
103
+ `A CustomRuntimeObject was initialized (or re-initialized) from object data referring to an non existing events based object data with type "${ customObjectData . type } ".`
103
104
) ;
104
105
return ;
105
106
}
107
+
108
+ let usedVariantData : EventsBasedObjectVariantData = eventsBasedObjectData ;
109
+ if ( customObjectData . variant ) {
110
+ for (
111
+ let variantIndex = 0 ;
112
+ variantIndex < eventsBasedObjectData . variants . length ;
113
+ variantIndex ++
114
+ ) {
115
+ const variantData = eventsBasedObjectData . variants [ variantIndex ] ;
116
+ if ( variantData . name === customObjectData . variant ) {
117
+ usedVariantData = variantData ;
118
+ break ;
119
+ }
120
+ }
121
+ }
122
+
106
123
this . _isInnerAreaFollowingParentSize =
107
124
eventsBasedObjectData . isInnerAreaFollowingParentSize ;
108
- if ( eventsBasedObjectData . instances . length > 0 ) {
125
+ if ( usedVariantData . instances . length > 0 ) {
109
126
if ( ! this . _innerArea ) {
110
127
this . _innerArea = {
111
128
min : [ 0 , 0 , 0 ] ,
112
129
max : [ 0 , 0 , 0 ] ,
113
130
} ;
114
131
}
115
- this . _innerArea . min [ 0 ] = eventsBasedObjectData . areaMinX ;
116
- this . _innerArea . min [ 1 ] = eventsBasedObjectData . areaMinY ;
117
- this . _innerArea . min [ 2 ] = eventsBasedObjectData . areaMinZ ;
118
- this . _innerArea . max [ 0 ] = eventsBasedObjectData . areaMaxX ;
119
- this . _innerArea . max [ 1 ] = eventsBasedObjectData . areaMaxY ;
120
- this . _innerArea . max [ 2 ] = eventsBasedObjectData . areaMaxZ ;
121
- }
122
- this . _instanceContainer . loadFrom ( objectData , eventsBasedObjectData ) ;
132
+ this . _innerArea . min [ 0 ] = usedVariantData . areaMinX ;
133
+ this . _innerArea . min [ 1 ] = usedVariantData . areaMinY ;
134
+ this . _innerArea . min [ 2 ] = usedVariantData . areaMinZ ;
135
+ this . _innerArea . max [ 0 ] = usedVariantData . areaMaxX ;
136
+ this . _innerArea . max [ 1 ] = usedVariantData . areaMaxY ;
137
+ this . _innerArea . max [ 2 ] = usedVariantData . areaMaxZ ;
138
+ }
139
+ this . _instanceContainer . loadFrom ( customObjectData , usedVariantData ) ;
123
140
}
124
141
125
142
protected abstract _createRender ( ) :
0 commit comments