|
@@ -291,6 +291,12 @@ void SpriteSheetEditor::handleEvent(Event *event) {
|
|
|
extensions.push_back("tga");
|
|
extensions.push_back("tga");
|
|
|
globalFrame->showAssetBrowser(extensions);
|
|
globalFrame->showAssetBrowser(extensions);
|
|
|
} else if(event->getDispatcher() == generateFramesButton) {
|
|
} else if(event->getDispatcher() == generateFramesButton) {
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ beforeData->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if(generateTypeDropdown->getSelectedIndex() == 0) {
|
|
if(generateTypeDropdown->getSelectedIndex() == 0) {
|
|
|
int numX = floor(sprite->getTexture()->getWidth() / uniformGridWidthInput->getText().toNumber());
|
|
int numX = floor(sprite->getTexture()->getWidth() / uniformGridWidthInput->getText().toNumber());
|
|
|
int numY = floor(sprite->getTexture()->getHeight() / uniformGridHeightInput->getText().toNumber());
|
|
int numY = floor(sprite->getTexture()->getHeight() / uniformGridHeightInput->getText().toNumber());
|
|
@@ -299,6 +305,13 @@ void SpriteSheetEditor::handleEvent(Event *event) {
|
|
|
sprite->createFramesFromIslands(minimumDistanceInput->getText().toInteger(), defaultAnchors[defaultAnchorCombo->getSelectedIndex()]);
|
|
sprite->createFramesFromIslands(minimumDistanceInput->getText().toInteger(), defaultAnchors[defaultAnchorCombo->getSelectedIndex()]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ data->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
dispatchEvent(new Event(),Event::CHANGE_EVENT);
|
|
dispatchEvent(new Event(),Event::CHANGE_EVENT);
|
|
|
} else if(event->getDispatcher() == bgSelector) {
|
|
} else if(event->getDispatcher() == bgSelector) {
|
|
|
switch(bgSelector->getSelectedIndex()) {
|
|
switch(bgSelector->getSelectedIndex()) {
|
|
@@ -322,7 +335,21 @@ void SpriteSheetEditor::handleEvent(Event *event) {
|
|
|
detectOptions->enabled = true;
|
|
detectOptions->enabled = true;
|
|
|
}
|
|
}
|
|
|
} else if(event->getDispatcher() == clearFramesButton) {
|
|
} else if(event->getDispatcher() == clearFramesButton) {
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ beforeData->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
sprite->clearFrames();
|
|
sprite->clearFrames();
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ data->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
dispatchEvent(new Event(),Event::CHANGE_EVENT);
|
|
dispatchEvent(new Event(),Event::CHANGE_EVENT);
|
|
|
} else if(event->getDispatcher() == generateOptionsButton) {
|
|
} else if(event->getDispatcher() == generateOptionsButton) {
|
|
|
optionsWindow->visible = !optionsWindow->visible;
|
|
optionsWindow->visible = !optionsWindow->visible;
|
|
@@ -330,6 +357,16 @@ void SpriteSheetEditor::handleEvent(Event *event) {
|
|
|
} else if(event->getDispatcher() == globalFrame->assetBrowser) {
|
|
} else if(event->getDispatcher() == globalFrame->assetBrowser) {
|
|
|
String newImagePath = globalFrame->assetBrowser->getSelectedAssetPath();
|
|
String newImagePath = globalFrame->assetBrowser->getSelectedAssetPath();
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ beforeData->name = sprite->getTexture()->getResourcePath();
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ data->name = globalFrame->assetBrowser->getSelectedAssetPath();
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_image", beforeData, data);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
sprite->loadTexture(globalFrame->assetBrowser->getSelectedAssetPath());
|
|
sprite->loadTexture(globalFrame->assetBrowser->getSelectedAssetPath());
|
|
|
previewImage->setTexture(sprite->getTexture());
|
|
previewImage->setTexture(sprite->getTexture());
|
|
|
|
|
|
|
@@ -372,7 +409,21 @@ void SpriteSheetEditor::handleEvent(Event *event) {
|
|
|
|
|
|
|
|
frame.anchorPoint = transformGrips->getAnchorPoint();
|
|
frame.anchorPoint = transformGrips->getAnchorPoint();
|
|
|
|
|
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ beforeData->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
sprite->setSpriteFrame(frame);
|
|
sprite->setSpriteFrame(frame);
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ data->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
dispatchEvent(new Event(),Event::CHANGE_EVENT);
|
|
dispatchEvent(new Event(),Event::CHANGE_EVENT);
|
|
|
}
|
|
}
|
|
|
} else if(event->getDispatcher() == previewBg) {
|
|
} else if(event->getDispatcher() == previewBg) {
|
|
@@ -497,7 +548,21 @@ void SpriteSheetEditor::handleEvent(Event *event) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ beforeData->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
sprite->addSpriteFrame(frameToAdd);
|
|
sprite->addSpriteFrame(frameToAdd);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ data->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
creatingFrame = false;
|
|
creatingFrame = false;
|
|
@@ -518,10 +583,23 @@ void SpriteSheetEditor::selectAll() {
|
|
|
|
|
|
|
|
void SpriteSheetEditor::deleteSelectedFrames() {
|
|
void SpriteSheetEditor::deleteSelectedFrames() {
|
|
|
|
|
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ beforeData->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
for(int i=0; i < selectedIDs.size(); i++) {
|
|
for(int i=0; i < selectedIDs.size(); i++) {
|
|
|
sprite->removeFrameByID(selectedIDs[i]);
|
|
sprite->removeFrameByID(selectedIDs[i]);
|
|
|
}
|
|
}
|
|
|
clearSelected();
|
|
clearSelected();
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < sprite->getNumFrames(); i++) {
|
|
|
|
|
+ data->spriteFrames.push_back(sprite->getSpriteFrame(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void SpriteSheetEditor::clearSelected() {
|
|
void SpriteSheetEditor::clearSelected() {
|
|
@@ -921,31 +999,87 @@ void SpriteStateEditorDetails::setSpriteState(SpriteState *state) {
|
|
|
refreshState();
|
|
refreshState();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+PolycodeSpriteEditorActionData *SpriteStateEditorDetails::makeStateData() {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ data->stateFPS = spriteState->getStateFPS();
|
|
|
|
|
+ data->stateScale = spriteState->getPixelsPerUnit();
|
|
|
|
|
+ data->stateBBox = spriteState->getBoundingBox();
|
|
|
|
|
+ data->stateOffset = spriteState->getSpriteOffset();
|
|
|
|
|
+ data->state = spriteState;
|
|
|
|
|
+ return data;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void SpriteStateEditorDetails::handleEvent(Event *event) {
|
|
void SpriteStateEditorDetails::handleEvent(Event *event) {
|
|
|
if(event->getDispatcher() == fpsInput) {
|
|
if(event->getDispatcher() == fpsInput) {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = makeStateData();
|
|
|
spriteState->setStateFPS(fpsInput->getText().toNumber());
|
|
spriteState->setStateFPS(fpsInput->getText().toNumber());
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = makeStateData();
|
|
|
|
|
+ editor->didAction("changed_state_info", beforeData, data);
|
|
|
} else if(event->getDispatcher() == scaleInput) {
|
|
} else if(event->getDispatcher() == scaleInput) {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = makeStateData();
|
|
|
spriteState->setPixelsPerUnit(scaleInput->getText().toNumber());
|
|
spriteState->setPixelsPerUnit(scaleInput->getText().toNumber());
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = makeStateData();
|
|
|
|
|
+ editor->didAction("changed_state_info", beforeData, data);
|
|
|
} else if(event->getDispatcher() == bBoxWidthInput) {
|
|
} else if(event->getDispatcher() == bBoxWidthInput) {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = makeStateData();
|
|
|
Vector2 bBox = spriteState->getBoundingBox();
|
|
Vector2 bBox = spriteState->getBoundingBox();
|
|
|
spriteState->setBoundingBox(Vector2(bBoxWidthInput->getText().toNumber(), bBox.y));
|
|
spriteState->setBoundingBox(Vector2(bBoxWidthInput->getText().toNumber(), bBox.y));
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = makeStateData();
|
|
|
|
|
+ editor->didAction("changed_state_info", beforeData, data);
|
|
|
} else if(event->getDispatcher() == bBoxHeightInput) {
|
|
} else if(event->getDispatcher() == bBoxHeightInput) {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = makeStateData();
|
|
|
Vector2 bBox = spriteState->getBoundingBox();
|
|
Vector2 bBox = spriteState->getBoundingBox();
|
|
|
spriteState->setBoundingBox(Vector2(bBox.x, bBoxHeightInput->getText().toNumber()));
|
|
spriteState->setBoundingBox(Vector2(bBox.x, bBoxHeightInput->getText().toNumber()));
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = makeStateData();
|
|
|
|
|
+ editor->didAction("changed_state_info", beforeData, data);
|
|
|
} else if(event->getDispatcher() == offsetXInput) {
|
|
} else if(event->getDispatcher() == offsetXInput) {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = makeStateData();
|
|
|
Vector2 offset = spriteState->getSpriteOffset();
|
|
Vector2 offset = spriteState->getSpriteOffset();
|
|
|
spriteState->setSpriteOffset(Vector2(offsetXInput->getText().toNumber(), offset.y));
|
|
spriteState->setSpriteOffset(Vector2(offsetXInput->getText().toNumber(), offset.y));
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = makeStateData();
|
|
|
|
|
+ editor->didAction("changed_state_info", beforeData, data);
|
|
|
} else if(event->getDispatcher() == offsetYInput) {
|
|
} else if(event->getDispatcher() == offsetYInput) {
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = makeStateData();
|
|
|
Vector2 offset = spriteState->getSpriteOffset();
|
|
Vector2 offset = spriteState->getSpriteOffset();
|
|
|
spriteState->setSpriteOffset(Vector2(offset.x, offsetYInput->getText().toNumber()));
|
|
spriteState->setSpriteOffset(Vector2(offset.x, offsetYInput->getText().toNumber()));
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = makeStateData();
|
|
|
|
|
+ editor->didAction("changed_state_info", beforeData, data);
|
|
|
} else if(event->getDispatcher() == playButton) {
|
|
} else if(event->getDispatcher() == playButton) {
|
|
|
sceneSprite->setPaused(false);
|
|
sceneSprite->setPaused(false);
|
|
|
} else if(event->getDispatcher() == pauseButton) {
|
|
} else if(event->getDispatcher() == pauseButton) {
|
|
|
sceneSprite->setPaused(true);
|
|
sceneSprite->setPaused(true);
|
|
|
} else if(event->getDispatcher() == clearFramesButton) {
|
|
} else if(event->getDispatcher() == clearFramesButton) {
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ beforeData->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
spriteState->clearFrames();
|
|
spriteState->clearFrames();
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ data->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_sprite_set_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
} else if(event->getDispatcher() == removeFramesButton) {
|
|
} else if(event->getDispatcher() == removeFramesButton) {
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ beforeData->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
editBar->deleteSelectedFrames();
|
|
editBar->deleteSelectedFrames();
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ data->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_sprite_set_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1304,11 +1438,40 @@ void SpriteStateEditBar::handleEvent(Event *event) {
|
|
|
|
|
|
|
|
if(fabs(distance) > defaultFrameWidth * zoomScale) {
|
|
if(fabs(distance) > defaultFrameWidth * zoomScale) {
|
|
|
if(distance > 0.0) {
|
|
if(distance > 0.0) {
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ beforeData->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
spriteState->insertFrame(extendingIndex, extendingID);
|
|
spriteState->insertFrame(extendingIndex, extendingID);
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ data->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_sprite_set_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
} else {
|
|
} else {
|
|
|
if(extendingIndex < spriteState->getNumFrameIDs()-1) {
|
|
if(extendingIndex < spriteState->getNumFrameIDs()-1) {
|
|
|
if(spriteState->getFrameIDAtIndex(extendingIndex+1) == extendingID) {
|
|
if(spriteState->getFrameIDAtIndex(extendingIndex+1) == extendingID) {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ beforeData->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
spriteState->removeFrameByIndex(extendingIndex+1);
|
|
spriteState->removeFrameByIndex(extendingIndex+1);
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ data->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_sprite_set_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1322,11 +1485,26 @@ void SpriteStateEditBar::handleEvent(Event *event) {
|
|
|
Number distance = Services()->getCore()->getInput()->getMousePosition().x - frameMoveBase.x;
|
|
Number distance = Services()->getCore()->getInput()->getMousePosition().x - frameMoveBase.x;
|
|
|
|
|
|
|
|
if(fabs(distance) > defaultFrameWidth * zoomScale) {
|
|
if(fabs(distance) > defaultFrameWidth * zoomScale) {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ beforeData->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if(distance > 0.0) {
|
|
if(distance > 0.0) {
|
|
|
moveSelectedRight();
|
|
moveSelectedRight();
|
|
|
} else {
|
|
} else {
|
|
|
moveSelectedLeft();
|
|
moveSelectedLeft();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ data->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ editor->didAction("changed_sprite_set_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
frameMoveBase = Services()->getCore()->getInput()->getMousePosition();
|
|
frameMoveBase = Services()->getCore()->getInput()->getMousePosition();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1869,8 +2047,22 @@ void PolycodeSpriteEditor::handleEvent(Event *event) {
|
|
|
if(spriteState->getNumFrameIDs() == 0) {
|
|
if(spriteState->getNumFrameIDs() == 0) {
|
|
|
generateBBox = true;
|
|
generateBBox = true;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ PolycodeSpriteEditorActionData *beforeData = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ beforeData->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
spriteState->appendFrames(spriteSheetEditor->getSelectedFrameIDs());
|
|
spriteState->appendFrames(spriteSheetEditor->getSelectedFrameIDs());
|
|
|
|
|
|
|
|
|
|
+ PolycodeSpriteEditorActionData *data = new PolycodeSpriteEditorActionData();
|
|
|
|
|
+ for(int i=0; i < spriteState->getNumFrameIDs(); i++) {
|
|
|
|
|
+ data->frameIDs.push_back(spriteState->getFrameIDAtIndex(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ data->reverse = false;
|
|
|
|
|
+ didAction("changed_sprite_set_frames", beforeData, data);
|
|
|
|
|
+
|
|
|
if(generateBBox && spriteSheetEditor->getSelectedFrameIDs().size() > 0) {
|
|
if(generateBBox && spriteSheetEditor->getSelectedFrameIDs().size() > 0) {
|
|
|
|
|
|
|
|
SpriteFrame frame = sprite->getSpriteFrameByID(spriteSheetEditor->getSelectedFrameIDs()[0]);
|
|
SpriteFrame frame = sprite->getSpriteFrameByID(spriteSheetEditor->getSelectedFrameIDs()[0]);
|
|
@@ -1939,6 +2131,7 @@ bool PolycodeSpriteEditor::openFile(OSFileEntry filePath) {
|
|
|
spriteSheetEditor = new SpriteSheetEditor(sprite);
|
|
spriteSheetEditor = new SpriteSheetEditor(sprite);
|
|
|
topSizer->addLeftChild(spriteSheetEditor);
|
|
topSizer->addLeftChild(spriteSheetEditor);
|
|
|
spriteSheetEditor->addEventListener(this, Event::CHANGE_EVENT);
|
|
spriteSheetEditor->addEventListener(this, Event::CHANGE_EVENT);
|
|
|
|
|
+ spriteSheetEditor->editor = this;
|
|
|
|
|
|
|
|
spriteBrowser = new SpriteBrowser(sprite);
|
|
spriteBrowser = new SpriteBrowser(sprite);
|
|
|
spriteBrowser->editor = this;
|
|
spriteBrowser->editor = this;
|
|
@@ -1948,6 +2141,8 @@ bool PolycodeSpriteEditor::openFile(OSFileEntry filePath) {
|
|
|
stateEditor = new SpriteStateEditor(sprite);
|
|
stateEditor = new SpriteStateEditor(sprite);
|
|
|
bottomSizer->addRightChild(stateEditor);
|
|
bottomSizer->addRightChild(stateEditor);
|
|
|
stateEditor->editor = this;
|
|
stateEditor->editor = this;
|
|
|
|
|
+ stateEditor->getDetailsEditor()->editor = this;
|
|
|
|
|
+ stateEditor->getDetailsEditor()->getEditBar()->editor = this;
|
|
|
|
|
|
|
|
addFramesButton = stateEditor->getDetailsEditor()->getAppendFramesButton();
|
|
addFramesButton = stateEditor->getDetailsEditor()->getAppendFramesButton();
|
|
|
addFramesButton->addEventListener(this, UIEvent::CLICK_EVENT);
|
|
addFramesButton->addEventListener(this, UIEvent::CLICK_EVENT);
|
|
@@ -2024,6 +2219,39 @@ void PolycodeSpriteEditor::doAction(String actionName, PolycodeEditorActionData
|
|
|
|
|
|
|
|
spriteData->state->setName(spriteData->name);
|
|
spriteData->state->setName(spriteData->name);
|
|
|
stateEditor->refreshStates();
|
|
stateEditor->refreshStates();
|
|
|
|
|
+ } else if(actionName == "changed_sprite_set_frames") {
|
|
|
|
|
+
|
|
|
|
|
+ SpriteState *spriteState = stateEditor->getDetailsEditor()->getSpriteState();
|
|
|
|
|
+ spriteState->clearFrames();
|
|
|
|
|
+ spriteState->appendFrames(spriteData->frameIDs);
|
|
|
|
|
+
|
|
|
|
|
+ if(spriteSheetEditor->getSelectedFrameIDs().size() > 0) {
|
|
|
|
|
+
|
|
|
|
|
+ SpriteFrame frame = sprite->getSpriteFrameByID(spriteSheetEditor->getSelectedFrameIDs()[0]);
|
|
|
|
|
+ Number aspectRatio = frame.coordinates.w / frame.coordinates.h;
|
|
|
|
|
+ Number textureAspectRatio = ((Number)sprite->getTexture()->getWidth()) / ((Number)sprite->getTexture()->getHeight());
|
|
|
|
|
+ Number frameHeight = frame.coordinates.h * ((Number)sprite->getTexture()->getHeight());
|
|
|
|
|
+ Number frameWidth = frameHeight * aspectRatio * textureAspectRatio;
|
|
|
|
|
+ spriteState->setBoundingBox(Vector2(frameWidth, frameHeight));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stateEditor->getDetailsEditor()->refreshState();
|
|
|
|
|
+
|
|
|
|
|
+ } else if(actionName == "changed_frames") {
|
|
|
|
|
+ sprite->clearFrames();
|
|
|
|
|
+ for(int i=0; i < spriteData->spriteFrames.size(); i++) {
|
|
|
|
|
+ sprite->addSpriteFrame(spriteData->spriteFrames[i]);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if(actionName == "changed_image") {
|
|
|
|
|
+ spriteSheetEditor->sprite->loadTexture(spriteData->name);
|
|
|
|
|
+ spriteSheetEditor->previewImage->setTexture(sprite->getTexture());
|
|
|
|
|
+
|
|
|
|
|
+ } else if(actionName == "changed_state_info") {
|
|
|
|
|
+ spriteData->state->setSpriteOffset(spriteData->stateOffset);
|
|
|
|
|
+ spriteData->state->setBoundingBox(spriteData->stateBBox);
|
|
|
|
|
+ spriteData->state->setStateFPS(spriteData->stateFPS);
|
|
|
|
|
+ spriteData->state->setPixelsPerUnit(spriteData->stateScale);
|
|
|
|
|
+ stateEditor->getDetailsEditor()->refreshState();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|