File tree 4 files changed +26
-2
lines changed
DelvEdit/src/com/interrupt/dungeoneer/editor
Dungeoneer/src/com/interrupt/dungeoneer/gfx
4 files changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -3314,6 +3314,7 @@ public void paste() {
3314
3314
}
3315
3315
3316
3316
level .entities .add (copy );
3317
+ copy .init (level , Source .EDITOR );
3317
3318
3318
3319
markWorldAsDirty ((int )copy .x , (int )copy .y , 4 );
3319
3320
}
@@ -3854,6 +3855,7 @@ public void doPaint() {
3854
3855
public void doDelete () {
3855
3856
if (pickedEntity != null ) {
3856
3857
level .entities .removeValue (pickedEntity , true );
3858
+ markWorldAsDirty ((int )pickedEntity .x , (int )pickedEntity .y , 4 );
3857
3859
3858
3860
for (Entity selEntity : additionalSelected ) {
3859
3861
level .entities .removeValue (selEntity , true );
Original file line number Diff line number Diff line change @@ -220,6 +220,9 @@ else if(surface.edge == TileEdges.South) {
220
220
}
221
221
222
222
editor .level .entities .add (entity );
223
+ entity .init (editor .level , Level .Source .EDITOR );
224
+ editor .markWorldAsDirty ((int )entity .x , (int )entity .y , 4 );
225
+
223
226
editor .refreshLights ();
224
227
editor .history .saveState (editor .level );
225
228
}
Original file line number Diff line number Diff line change @@ -110,12 +110,16 @@ public void actionPerformed (ActionEvent event) {
110
110
newGroup .x = main .x ;
111
111
newGroup .y = main .y ;
112
112
newGroup .z = main .z ;
113
+
114
+ editor .markWorldAsDirty ((int )main .x , (int )main .y , 4 );
113
115
114
116
for (Entity selected : additionalSelected ) {
115
117
selected .x = selected .x - main .x ;
116
118
selected .y = selected .y - main .y ;
117
119
selected .z = selected .z - main .z ;
118
120
newGroup .entities .add (selected );
121
+
122
+ editor .markWorldAsDirty ((int )selected .x , (int )selected .y , 4 );
119
123
120
124
level .entities .removeValue (selected , true );
121
125
}
@@ -133,9 +137,11 @@ public void actionPerformed (ActionEvent event) {
133
137
remove .addActionListener (new ActionListener () {
134
138
public void actionPerformed (ActionEvent event ) {
135
139
level .entities .removeValue (main , true );
140
+ editor .markWorldAsDirty ((int )main .x , (int )main .y , 4 );
136
141
137
142
for (Entity selected : additionalSelected ) {
138
143
level .entities .removeValue (selected , true );
144
+ editor .markWorldAsDirty ((int )selected .x , (int )selected .y , 4 );
139
145
}
140
146
141
147
editor .refreshLights ();
Original file line number Diff line number Diff line change 14
14
import com .interrupt .dungeoneer .Art ;
15
15
import com .interrupt .dungeoneer .GameManager ;
16
16
import com .interrupt .dungeoneer .entities .Entity ;
17
+ import com .interrupt .dungeoneer .entities .Group ;
17
18
import com .interrupt .dungeoneer .game .Game ;
18
19
import com .interrupt .dungeoneer .game .Level ;
19
20
import com .interrupt .dungeoneer .game .OverworldChunk ;
@@ -128,6 +129,19 @@ public void freeStaticMeshes() {
128
129
staticMeshBatch .clear ();
129
130
}
130
131
}
132
+
133
+ public void AddEntityForEditor (Entity e , Level level ) {
134
+ // Needed for static meshes in groups in the editor
135
+ if (e instanceof Group ) {
136
+ e .init (level , Level .Source .EDITOR );
137
+ for (Entity g : ((Group ) e ).entities ) {
138
+ AddEntityForEditor (g , level );
139
+ }
140
+ } else {
141
+ entities .add (e );
142
+ e .updateLight (level );
143
+ }
144
+ }
131
145
132
146
public void Tesselate (Level level , GlRenderer renderer )
133
147
{
@@ -150,8 +164,7 @@ public void Tesselate(Level level, GlRenderer renderer)
150
164
if (renderer .editorIsRendering ) {
151
165
for (Entity e : level .entities ) {
152
166
if (e .x >= xOffset && e .x < xOffset + width && e .y >= yOffset && e .y < yOffset + height ) {
153
- entities .add (e );
154
- e .updateLight (level );
167
+ AddEntityForEditor (e , level );
155
168
}
156
169
}
157
170
}
You can’t perform that action at this time.
0 commit comments