Move Player command works, use player's rotation when opening first view
This commit is contained in:
parent
f8025c890d
commit
636934b71a
@ -259,6 +259,11 @@ class EditorSession(QtCore.QObject):
|
||||
player = self.worldEditor.getPlayer()
|
||||
center = Vector(*player.Position)
|
||||
log.info("Centering on single-player player.")
|
||||
rotation = player.Rotation
|
||||
try:
|
||||
self.editorTab.currentView().yawPitch = rotation
|
||||
except AttributeError:
|
||||
pass
|
||||
except PlayerNotFound:
|
||||
try:
|
||||
center = self.worldEditor.worldSpawnPosition()
|
||||
|
@ -4,6 +4,7 @@
|
||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||
import logging
|
||||
from PySide.QtCore import Qt
|
||||
from mcedit2.command import SimpleRevisionCommand
|
||||
from mcedit2.editortools import EditorTool
|
||||
from mcedit2.nbt_treemodel import NBTTreeModel, NBTFilterProxyModel
|
||||
from mcedit2.util.load_ui import load_ui
|
||||
@ -52,7 +53,16 @@ class PlayerTool(EditorTool):
|
||||
def movePlayerToCamera(self):
|
||||
view = self.editorSession.editorTab.currentView()
|
||||
if view.viewID == "Cam":
|
||||
self.selectedPlayer.Position = view.centerPoint
|
||||
command = SimpleRevisionCommand(self.editorSession, "Move Player")
|
||||
with command.begin():
|
||||
self.selectedPlayer.Position = view.centerPoint
|
||||
try:
|
||||
self.selectedPlayer.Rotation = view.yawPitch
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
self.selectedPlayer.dirty = True # xxx do in AnvilPlayerRef
|
||||
self.editorSession.pushCommand(command)
|
||||
else:
|
||||
raise ValueError("Current view is not camera view.")
|
||||
|
||||
|
@ -335,6 +335,7 @@ class AnvilWorldMetadata(object):
|
||||
def __init__(self, metadataTag):
|
||||
self.metadataTag = metadataTag
|
||||
self.rootTag = metadataTag["Data"]
|
||||
self.dirty = False
|
||||
|
||||
# --- NBT Tag variables ---
|
||||
|
||||
@ -487,7 +488,9 @@ class AnvilWorldAdapter(object):
|
||||
:return:
|
||||
:rtype:
|
||||
"""
|
||||
self.selectedRevision.writeFile("level.dat", self.metadata.metadataTag.save())
|
||||
if self.metadata.dirty:
|
||||
self.selectedRevision.writeFile("level.dat", self.metadata.metadataTag.save())
|
||||
self.metadata.dirty = False
|
||||
|
||||
def saveChanges(self):
|
||||
"""
|
||||
@ -801,7 +804,7 @@ class AnvilWorldAdapter(object):
|
||||
def savePlayerTag(self, tag, playerUUID):
|
||||
if playerUUID == "":
|
||||
# sync metadata?
|
||||
return
|
||||
self.metadata.dirty = True
|
||||
else:
|
||||
self.selectedRevision.writeFile("playerdata/%s.dat" % playerUUID, tag.save())
|
||||
|
||||
@ -920,6 +923,7 @@ class AnvilPlayerRef(object):
|
||||
def save(self):
|
||||
if self.dirty:
|
||||
self.adapter.savePlayerTag(self.rootTag, self.playerUUID)
|
||||
self.dirty = False
|
||||
|
||||
_dimNames = {
|
||||
-1:"DIM-1",
|
||||
|
@ -252,8 +252,11 @@ class WorldEditor(object):
|
||||
:return:
|
||||
:rtype:
|
||||
"""
|
||||
dirtyPlayers = 0
|
||||
for player in self.playerCache.itervalues():
|
||||
player.save()
|
||||
if player.dirty:
|
||||
dirtyPlayers += 1
|
||||
player.save()
|
||||
|
||||
dirtyChunkCount = 0
|
||||
for chunk in self._loadedChunkData.itervalues():
|
||||
@ -261,7 +264,8 @@ class WorldEditor(object):
|
||||
dirtyChunkCount += 1
|
||||
self.adapter.writeChunk(chunk)
|
||||
chunk.dirty = False
|
||||
log.info(u"Saved {0} chunks".format(dirtyChunkCount))
|
||||
self.adapter.syncToDisk()
|
||||
log.info(u"Saved %d chunks and %d players", dirtyChunkCount, dirtyPlayers)
|
||||
|
||||
def saveChanges(self):
|
||||
if self.readonly:
|
||||
|
Reference in New Issue
Block a user