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()
|
player = self.worldEditor.getPlayer()
|
||||||
center = Vector(*player.Position)
|
center = Vector(*player.Position)
|
||||||
log.info("Centering on single-player player.")
|
log.info("Centering on single-player player.")
|
||||||
|
rotation = player.Rotation
|
||||||
|
try:
|
||||||
|
self.editorTab.currentView().yawPitch = rotation
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
except PlayerNotFound:
|
except PlayerNotFound:
|
||||||
try:
|
try:
|
||||||
center = self.worldEditor.worldSpawnPosition()
|
center = self.worldEditor.worldSpawnPosition()
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||||
import logging
|
import logging
|
||||||
from PySide.QtCore import Qt
|
from PySide.QtCore import Qt
|
||||||
|
from mcedit2.command import SimpleRevisionCommand
|
||||||
from mcedit2.editortools import EditorTool
|
from mcedit2.editortools import EditorTool
|
||||||
from mcedit2.nbt_treemodel import NBTTreeModel, NBTFilterProxyModel
|
from mcedit2.nbt_treemodel import NBTTreeModel, NBTFilterProxyModel
|
||||||
from mcedit2.util.load_ui import load_ui
|
from mcedit2.util.load_ui import load_ui
|
||||||
@ -52,7 +53,16 @@ class PlayerTool(EditorTool):
|
|||||||
def movePlayerToCamera(self):
|
def movePlayerToCamera(self):
|
||||||
view = self.editorSession.editorTab.currentView()
|
view = self.editorSession.editorTab.currentView()
|
||||||
if view.viewID == "Cam":
|
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:
|
else:
|
||||||
raise ValueError("Current view is not camera view.")
|
raise ValueError("Current view is not camera view.")
|
||||||
|
|
||||||
|
@ -335,6 +335,7 @@ class AnvilWorldMetadata(object):
|
|||||||
def __init__(self, metadataTag):
|
def __init__(self, metadataTag):
|
||||||
self.metadataTag = metadataTag
|
self.metadataTag = metadataTag
|
||||||
self.rootTag = metadataTag["Data"]
|
self.rootTag = metadataTag["Data"]
|
||||||
|
self.dirty = False
|
||||||
|
|
||||||
# --- NBT Tag variables ---
|
# --- NBT Tag variables ---
|
||||||
|
|
||||||
@ -487,7 +488,9 @@ class AnvilWorldAdapter(object):
|
|||||||
:return:
|
:return:
|
||||||
:rtype:
|
: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):
|
def saveChanges(self):
|
||||||
"""
|
"""
|
||||||
@ -801,7 +804,7 @@ class AnvilWorldAdapter(object):
|
|||||||
def savePlayerTag(self, tag, playerUUID):
|
def savePlayerTag(self, tag, playerUUID):
|
||||||
if playerUUID == "":
|
if playerUUID == "":
|
||||||
# sync metadata?
|
# sync metadata?
|
||||||
return
|
self.metadata.dirty = True
|
||||||
else:
|
else:
|
||||||
self.selectedRevision.writeFile("playerdata/%s.dat" % playerUUID, tag.save())
|
self.selectedRevision.writeFile("playerdata/%s.dat" % playerUUID, tag.save())
|
||||||
|
|
||||||
@ -920,6 +923,7 @@ class AnvilPlayerRef(object):
|
|||||||
def save(self):
|
def save(self):
|
||||||
if self.dirty:
|
if self.dirty:
|
||||||
self.adapter.savePlayerTag(self.rootTag, self.playerUUID)
|
self.adapter.savePlayerTag(self.rootTag, self.playerUUID)
|
||||||
|
self.dirty = False
|
||||||
|
|
||||||
_dimNames = {
|
_dimNames = {
|
||||||
-1:"DIM-1",
|
-1:"DIM-1",
|
||||||
|
@ -252,8 +252,11 @@ class WorldEditor(object):
|
|||||||
:return:
|
:return:
|
||||||
:rtype:
|
:rtype:
|
||||||
"""
|
"""
|
||||||
|
dirtyPlayers = 0
|
||||||
for player in self.playerCache.itervalues():
|
for player in self.playerCache.itervalues():
|
||||||
player.save()
|
if player.dirty:
|
||||||
|
dirtyPlayers += 1
|
||||||
|
player.save()
|
||||||
|
|
||||||
dirtyChunkCount = 0
|
dirtyChunkCount = 0
|
||||||
for chunk in self._loadedChunkData.itervalues():
|
for chunk in self._loadedChunkData.itervalues():
|
||||||
@ -261,7 +264,8 @@ class WorldEditor(object):
|
|||||||
dirtyChunkCount += 1
|
dirtyChunkCount += 1
|
||||||
self.adapter.writeChunk(chunk)
|
self.adapter.writeChunk(chunk)
|
||||||
chunk.dirty = False
|
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):
|
def saveChanges(self):
|
||||||
if self.readonly:
|
if self.readonly:
|
||||||
|
Reference in New Issue
Block a user