2
3
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-14 02:27:40 -04:00

Move Plasma20 to be the new repository root

--HG--
rename : MOULOpenSourceClientPlugin/Plasma20/CMakeLists.txt => CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Docs/Distributor.doc => Docs/Distributor.doc
rename : MOULOpenSourceClientPlugin/Plasma20/Docs/ReleaseNotes/ReleaseNotes.txt => Docs/ReleaseNotes/ReleaseNotes.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Docs/Resource Manager.doc => Docs/Resource Manager.doc
rename : MOULOpenSourceClientPlugin/Plasma20/Docs/sound cones.htm => Docs/sound cones.htm
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/AllDlls/AllDlls.sln => MsDevProjects/AllDlls/AllDlls.sln
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/AllDlls/AllDlls.vcproj => MsDevProjects/AllDlls/AllDlls.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/AllClient/AllClient.sln => MsDevProjects/Plasma/Apps/AllClient/AllClient.sln
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/AllClient/AllClient.vcproj => MsDevProjects/Plasma/Apps/AllClient/AllClient.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plClient/plClient.vcproj => MsDevProjects/Plasma/Apps/plClient/plClient.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plClientKey/plClientKey.vcproj => MsDevProjects/Plasma/Apps/plClientKey/plClientKey.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plClientPatcher/plClientPatcher.vcproj => MsDevProjects/Plasma/Apps/plClientPatcher/plClientPatcher.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plFileEncrypt/plFileEncrypt.vcproj => MsDevProjects/Plasma/Apps/plFileEncrypt/plFileEncrypt.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plFileSecure/plFileSecure.vcproj => MsDevProjects/Plasma/Apps/plFileSecure/plFileSecure.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plLogDecrypt/plLogDecrypt.vcproj => MsDevProjects/Plasma/Apps/plLogDecrypt/plLogDecrypt.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plMD5/plMD5.vcproj => MsDevProjects/Plasma/Apps/plMD5/plMD5.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plPageInfo/plPageInfo.vcproj => MsDevProjects/Plasma/Apps/plPageInfo/plPageInfo.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plPageOptimizer/plPageOptimizer.vcproj => MsDevProjects/Plasma/Apps/plPageOptimizer/plPageOptimizer.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.vcproj => MsDevProjects/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.vcproj => MsDevProjects/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plPythonPack/plPythonPack.vcproj => MsDevProjects/Plasma/Apps/plPythonPack/plPythonPack.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/Apps/plUruLauncher/plUruLauncher.vcproj => MsDevProjects/Plasma/Apps/plUruLauncher/plUruLauncher.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/CoreLib/CoreLib.vcproj => MsDevProjects/Plasma/CoreLib/CoreLib.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/CoreLibExe/CoreLibExe.vcproj => MsDevProjects/Plasma/CoreLibExe/CoreLibExe.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/FeatureLibInc/FeatureLibInc.vcproj => MsDevProjects/Plasma/FeatureLib/FeatureLibInc/FeatureLibInc.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfAnimation/pfAnimation.vcproj => MsDevProjects/Plasma/FeatureLib/pfAnimation/pfAnimation.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfAudio/pfAudio.vcproj => MsDevProjects/Plasma/FeatureLib/pfAudio/pfAudio.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfCCR/pfCCR.vcproj => MsDevProjects/Plasma/FeatureLib/pfCCR/pfCCR.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfCamera/pfCamera.vcproj => MsDevProjects/Plasma/FeatureLib/pfCamera/pfCamera.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfCharacter/pfCharacter.vcproj => MsDevProjects/Plasma/FeatureLib/pfCharacter/pfCharacter.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfConditional/pfConditional.vcproj => MsDevProjects/Plasma/FeatureLib/pfConditional/pfConditional.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfConsole/pfConsole.vcproj => MsDevProjects/Plasma/FeatureLib/pfConsole/pfConsole.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.vcproj => MsDevProjects/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgr.vcproj => MsDevProjects/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfGameMgr/pfGameMgr.vcproj => MsDevProjects/Plasma/FeatureLib/pfGameMgr/pfGameMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfGameScoreMgr/pfGameScoreMgr.vcproj => MsDevProjects/Plasma/FeatureLib/pfGameScoreMgr/pfGameScoreMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfJournalBook/pfJournalBook.vcproj => MsDevProjects/Plasma/FeatureLib/pfJournalBook/pfJournalBook.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfKI/placeholder.txt => MsDevProjects/Plasma/FeatureLib/pfKI/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationMgr.vcproj => MsDevProjects/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfLoginDialog/pfLoginDialog.vcproj => MsDevProjects/Plasma/FeatureLib/pfLoginDialog/pfLoginDialog.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfMessage/pfMessage.vcproj => MsDevProjects/Plasma/FeatureLib/pfMessage/pfMessage.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfPython/pfPython.vcproj => MsDevProjects/Plasma/FeatureLib/pfPython/pfPython.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloader.vcproj => MsDevProjects/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloader.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfStackTrace/pfStackTrace.vcproj => MsDevProjects/Plasma/FeatureLib/pfStackTrace/pfStackTrace.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfSurface/pfSurface.vcproj => MsDevProjects/Plasma/FeatureLib/pfSurface/pfSurface.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/GameLib/PlasmaGame/GameLib/placeholder.txt => MsDevProjects/Plasma/GameLib/PlasmaGame/GameLib/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/GameLib/PlasmaGame/placeholder.txt => MsDevProjects/Plasma/GameLib/PlasmaGame/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/GameLib/placeholder.txt => MsDevProjects/Plasma/GameLib/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnAddrInfo/pnAddrInfo.vcproj => MsDevProjects/Plasma/NucleusLib/pnAddrInfo/pnAddrInfo.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnAsyncCore/pnAsyncCore.vcproj => MsDevProjects/Plasma/NucleusLib/pnAsyncCore/pnAsyncCore.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnAsyncCoreExe/pnAsyncCoreExe.vcproj => MsDevProjects/Plasma/NucleusLib/pnAsyncCoreExe/pnAsyncCoreExe.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnCrash/pnCrash.vcproj => MsDevProjects/Plasma/NucleusLib/pnCrash/pnCrash.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnCrashExe/pnCrashExe.vcproj => MsDevProjects/Plasma/NucleusLib/pnCrashExe/pnCrashExe.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnCsrCli/pnCsrCli.vcproj => MsDevProjects/Plasma/NucleusLib/pnCsrCli/pnCsrCli.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnCsrNet/pnCsrNet.vcproj => MsDevProjects/Plasma/NucleusLib/pnCsrNet/pnCsrNet.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnDispatch/pnDispatch.vcproj => MsDevProjects/Plasma/NucleusLib/pnDispatch/pnDispatch.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnFactory/pnFactory.vcproj => MsDevProjects/Plasma/NucleusLib/pnFactory/pnFactory.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnGameMgr/pnGameMgr.vcproj => MsDevProjects/Plasma/NucleusLib/pnGameMgr/pnGameMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnIni/pnIni.vcproj => MsDevProjects/Plasma/NucleusLib/pnIni/pnIni.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnIniExe/pnIniExe.vcproj => MsDevProjects/Plasma/NucleusLib/pnIniExe/pnIniExe.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnInputCore/pnInputCore.vcproj => MsDevProjects/Plasma/NucleusLib/pnInputCore/pnInputCore.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnKeyedObject/pnKeyedObject.vcproj => MsDevProjects/Plasma/NucleusLib/pnKeyedObject/pnKeyedObject.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnMail/pnMail.vcproj => MsDevProjects/Plasma/NucleusLib/pnMail/pnMail.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnMessage/pnMessage.vcproj => MsDevProjects/Plasma/NucleusLib/pnMessage/pnMessage.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnModifier/pnModifier.vcproj => MsDevProjects/Plasma/NucleusLib/pnModifier/pnModifier.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNetBase/pnNetBase.vcproj => MsDevProjects/Plasma/NucleusLib/pnNetBase/pnNetBase.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNetCli/pnNetCli.vcproj => MsDevProjects/Plasma/NucleusLib/pnNetCli/pnNetCli.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNetCommon/pnNetCommon.vcproj => MsDevProjects/Plasma/NucleusLib/pnNetCommon/pnNetCommon.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNetDiag/pnNetDiag.vcproj => MsDevProjects/Plasma/NucleusLib/pnNetDiag/pnNetDiag.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNetLog/pnNetLog.vcproj => MsDevProjects/Plasma/NucleusLib/pnNetLog/pnNetLog.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNetProtocol/pnNetProtocol.vcproj => MsDevProjects/Plasma/NucleusLib/pnNetProtocol/pnNetProtocol.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnNucleusInc/pnNucleusInc.vcproj => MsDevProjects/Plasma/NucleusLib/pnNucleusInc/pnNucleusInc.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnOraLib/pnOraLib.vcproj => MsDevProjects/Plasma/NucleusLib/pnOraLib/pnOraLib.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnProduct/pnProduct.vcproj => MsDevProjects/Plasma/NucleusLib/pnProduct/pnProduct.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnSceneObject/pnSceneObject.vcproj => MsDevProjects/Plasma/NucleusLib/pnSceneObject/pnSceneObject.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.vcproj => MsDevProjects/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnSqlLib/pnSqlLib.vcproj => MsDevProjects/Plasma/NucleusLib/pnSqlLib/pnSqlLib.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnSrvUtils/pnSrvUtils.vcproj => MsDevProjects/Plasma/NucleusLib/pnSrvUtils/pnSrvUtils.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnSrvUtilsExe/pnSrvUtilsExe.vcproj => MsDevProjects/Plasma/NucleusLib/pnSrvUtilsExe/pnSrvUtilsExe.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnTimer/pnTimer.vcproj => MsDevProjects/Plasma/NucleusLib/pnTimer/pnTimer.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnUtils/pnUtils.vcproj => MsDevProjects/Plasma/NucleusLib/pnUtils/pnUtils.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/NucleusLib/pnUtilsExe/pnUtilsExe.vcproj => MsDevProjects/Plasma/NucleusLib/pnUtilsExe/pnUtilsExe.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/PubUtilInc/PubUtilInc.vcproj => MsDevProjects/Plasma/PubUtilLib/PubUtilInc/PubUtilInc.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plAgeDescription/plAgeDescription.vcproj => MsDevProjects/Plasma/PubUtilLib/plAgeDescription/plAgeDescription.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plAgeLoader/plAgeLoader.vcproj => MsDevProjects/Plasma/PubUtilLib/plAgeLoader/plAgeLoader.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plAudible/plAudible.vcproj => MsDevProjects/Plasma/PubUtilLib/plAudible/plAudible.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plAudio/plAudio.vcproj => MsDevProjects/Plasma/PubUtilLib/plAudio/plAudio.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plAudioCore/plAudioCore.vcproj => MsDevProjects/Plasma/PubUtilLib/plAudioCore/plAudioCore.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plAvatar/plAvatar.vcproj => MsDevProjects/Plasma/PubUtilLib/plAvatar/plAvatar.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plCompression/plCompression.vcproj => MsDevProjects/Plasma/PubUtilLib/plCompression/plCompression.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plConditionalObject/placeholder.txt => MsDevProjects/Plasma/PubUtilLib/plConditionalObject/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plContainer/plContainer.vcproj => MsDevProjects/Plasma/PubUtilLib/plContainer/plContainer.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plDeviceSelector/plDeviceSelector.vcproj => MsDevProjects/Plasma/PubUtilLib/plDeviceSelector/plDeviceSelector.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plDrawable/plDrawable.vcproj => MsDevProjects/Plasma/PubUtilLib/plDrawable/plDrawable.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plEncryption/plEncryption.vcproj => MsDevProjects/Plasma/PubUtilLib/plEncryption/plEncryption.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plFile/plFile.vcproj => MsDevProjects/Plasma/PubUtilLib/plFile/plFile.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plGClip/plGClip.vcproj => MsDevProjects/Plasma/PubUtilLib/plGClip/plGClip.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plGImage/plGImage.vcproj => MsDevProjects/Plasma/PubUtilLib/plGImage/plGImage.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plGLight/plGLight.vcproj => MsDevProjects/Plasma/PubUtilLib/plGLight/plGLight.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plGeometry/plGeometry.vcproj => MsDevProjects/Plasma/PubUtilLib/plGeometry/plGeometry.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plInputCore/plInputCore.vcproj => MsDevProjects/Plasma/PubUtilLib/plInputCore/plInputCore.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plInterp/plInterp.vcproj => MsDevProjects/Plasma/PubUtilLib/plInterp/plInterp.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plIntersect/plIntersect.vcproj => MsDevProjects/Plasma/PubUtilLib/plIntersect/plIntersect.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plJPEG/plJPEG.vcproj => MsDevProjects/Plasma/PubUtilLib/plJPEG/plJPEG.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plMath/plMath.vcproj => MsDevProjects/Plasma/PubUtilLib/plMath/plMath.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plMessage/plMessage.vcproj => MsDevProjects/Plasma/PubUtilLib/plMessage/plMessage.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plModifier/plModifier.vcproj => MsDevProjects/Plasma/PubUtilLib/plModifier/plModifier.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetClient/PlNetClient.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetClient/PlNetClient.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetClientRecorder/plNetClientRecorder.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetClientRecorder/plNetClientRecorder.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetCommon/plNetCommon.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetCommon/plNetCommon.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetGameLib/plNetGameLib.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetGameLib/plNetGameLib.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetMessage/plNetMessage.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetMessage/plNetMessage.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plNetTransport/plNetTransport.vcproj => MsDevProjects/Plasma/PubUtilLib/plNetTransport/plNetTransport.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plParticleSystem/plParticleSystem.vcproj => MsDevProjects/Plasma/PubUtilLib/plParticleSystem/plParticleSystem.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plPhysX/plPhysX.vcproj => MsDevProjects/Plasma/PubUtilLib/plPhysX/plPhysX.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plPhysical/plPhysical.vcproj => MsDevProjects/Plasma/PubUtilLib/plPhysical/plPhysical.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plPipeline/plPipeline.vcproj => MsDevProjects/Plasma/PubUtilLib/plPipeline/plPipeline.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.vcproj => MsDevProjects/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plResMgr/plResMgr.vcproj => MsDevProjects/Plasma/PubUtilLib/plResMgr/plResMgr.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plSDL/plSDL.vcproj => MsDevProjects/Plasma/PubUtilLib/plSDL/plSDL.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plSDLBrowser/placeholder.txt => MsDevProjects/Plasma/PubUtilLib/plSDLBrowser/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plScene/plScene.vcproj => MsDevProjects/Plasma/PubUtilLib/plScene/plScene.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plSockets/plSockets.vcproj => MsDevProjects/Plasma/PubUtilLib/plSockets/plSockets.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plStatGather/plStatGather.vcproj => MsDevProjects/Plasma/PubUtilLib/plStatGather/plStatGather.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plStatusLog/plStatusLog.vcproj => MsDevProjects/Plasma/PubUtilLib/plStatusLog/plStatusLog.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plStreamLogger/plStreamLogger.vcproj => MsDevProjects/Plasma/PubUtilLib/plStreamLogger/plStreamLogger.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plSurface/plSurface.vcproj => MsDevProjects/Plasma/PubUtilLib/plSurface/plSurface.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plTransform/plTransform.vcproj => MsDevProjects/Plasma/PubUtilLib/plTransform/plTransform.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plUUID/plUUID.vcproj => MsDevProjects/Plasma/PubUtilLib/plUUID/plUUID.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTime.vcproj => MsDevProjects/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTime.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plVault/plVault.vcproj => MsDevProjects/Plasma/PubUtilLib/plVault/plVault.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plWinStrBlock/plWinStrBlock.vcproj => MsDevProjects/Plasma/PubUtilLib/plWinStrBlock/plWinStrBlock.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PubUtilLib/plWndCtrls/plWndCtrls.vcproj => MsDevProjects/Plasma/PubUtilLib/plWndCtrls/plWndCtrls.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PythonLib/Cypython/placeholder.txt => MsDevProjects/Plasma/PythonLib/Cypython/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PythonLib/pyNetClientComm/pyNetClientComm.vcproj => MsDevProjects/Plasma/PythonLib/pyNetClientComm/pyNetClientComm.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PythonLib/pyNetClientGame/placeholder.txt => MsDevProjects/Plasma/PythonLib/pyNetClientGame/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PythonLib/pyPlasma/pyPlasma.vcproj => MsDevProjects/Plasma/PythonLib/pyPlasma/pyPlasma.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PythonLib/pyPloticus/pyPloticus.vcproj => MsDevProjects/Plasma/PythonLib/pyPloticus/pyPloticus.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/PythonLib/pyVault/pyVault.vcproj => MsDevProjects/Plasma/PythonLib/pyVault/pyVault.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/CheckFolderVar/placeholder.txt => MsDevProjects/Tools/CheckFolderVar/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxComponent/MaxComponent.vcproj => MsDevProjects/Tools/MaxComponent/MaxComponent.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxConvert/MaxConvert.vcproj => MsDevProjects/Tools/MaxConvert/MaxConvert.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxExport/MaxExport.vcproj => MsDevProjects/Tools/MaxExport/MaxExport.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxMain/MaxMain.vcproj => MsDevProjects/Tools/MaxMain/MaxMain.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxMtlUpdate/placeholder.txt => MsDevProjects/Tools/MaxMtlUpdate/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxPlasmaLights/MaxPlasmaLights.vcproj => MsDevProjects/Tools/MaxPlasmaLights/MaxPlasmaLights.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxPlasmaMtls/MaxPlasmaMtls.vcproj => MsDevProjects/Tools/MaxPlasmaMtls/MaxPlasmaMtls.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/MaxSceneViewer/MaxSceneViewer.vcproj => MsDevProjects/Tools/MaxSceneViewer/MaxSceneViewer.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/plDatMerger/placeholder.txt => MsDevProjects/Tools/plDatMerger/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/plFontConverter/plFontConverter.vcproj => MsDevProjects/Tools/plFontConverter/plFontConverter.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Tools/plResBrowser/placeholder.txt => MsDevProjects/Tools/plResBrowser/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/lib/HawkVoiceDIstatic.lib => SDKs/Win32/HawkVoice/lib/HawkVoiceDIstatic.lib
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/Blowfish.001 => SDKs/Win32/HawkVoice/src/BLOWFISH/Blowfish.001
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/Blowfish.dsp => SDKs/Win32/HawkVoice/src/BLOWFISH/Blowfish.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/COPYRIGHT => SDKs/Win32/HawkVoice/src/BLOWFISH/COPYRIGHT
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/INSTALL => SDKs/Win32/HawkVoice/src/BLOWFISH/INSTALL
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/Makefile => SDKs/Win32/HawkVoice/src/BLOWFISH/Makefile
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/Makefile.ssl => SDKs/Win32/HawkVoice/src/BLOWFISH/Makefile.ssl
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/Makefile.uni => SDKs/Win32/HawkVoice/src/BLOWFISH/Makefile.uni
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/README => SDKs/Win32/HawkVoice/src/BLOWFISH/README
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/bf586.pl => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/bf586.pl
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/bx86-cpp.s => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/bx86-cpp.s
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/bx86unix.cpp => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/bx86unix.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/readme => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/readme
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/win32.asm => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/win32.asm
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/x86ms.pl => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/x86ms.pl
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/asm/x86unix.pl => SDKs/Win32/HawkVoice/src/BLOWFISH/asm/x86unix.pl
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_cbc.c => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_cbc.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_cfb64.c => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_cfb64.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_ecb.c => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_ecb.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_enc.c => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_enc.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_locl.h => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_locl.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_locl.org => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_locl.org
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_ofb64.c => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_ofb64.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_pi.h => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_pi.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/bf_skey.c => SDKs/Win32/HawkVoice/src/BLOWFISH/bf_skey.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/blowfish.doc => SDKs/Win32/HawkVoice/src/BLOWFISH/blowfish.doc
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/BLOWFISH/blowfish.h => SDKs/Win32/HawkVoice/src/BLOWFISH/blowfish.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/Win32/HawkVoice/src/hvdi.h => SDKs/Win32/HawkVoice/src/hvdi.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Grammar/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/Grammar/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Grammar/Grammar => SDKs/XPlatform/Cypython-2.3.3/Grammar/Grammar
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/LICENSE => SDKs/XPlatform/Cypython-2.3.3/LICENSE
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/Modules/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/Setup.config.in => SDKs/XPlatform/Cypython-2.3.3/Modules/Setup.config.in
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/Setup.dist => SDKs/XPlatform/Cypython-2.3.3/Modules/Setup.dist
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_bsddb.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_bsddb.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_codecsmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_codecsmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_csv.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_csv.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_curses_panel.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_curses_panel.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_cursesmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_cursesmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_hotshot.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_hotshot.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_localemodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_localemodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_randommodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_randommodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_sre.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_sre.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_ssl.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_ssl.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_testcapimodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_testcapimodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_tkinter.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_tkinter.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/_weakref.c => SDKs/XPlatform/Cypython-2.3.3/Modules/_weakref.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/addrinfo.h => SDKs/XPlatform/Cypython-2.3.3/Modules/addrinfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/almodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/almodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/ar_beos => SDKs/XPlatform/Cypython-2.3.3/Modules/ar_beos
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/arraymodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/arraymodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/audioop.c => SDKs/XPlatform/Cypython-2.3.3/Modules/audioop.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/binascii.c => SDKs/XPlatform/Cypython-2.3.3/Modules/binascii.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/bsddbmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/bsddbmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/bz2module.c => SDKs/XPlatform/Cypython-2.3.3/Modules/bz2module.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cPickle.c => SDKs/XPlatform/Cypython-2.3.3/Modules/cPickle.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cStringIO.c => SDKs/XPlatform/Cypython-2.3.3/Modules/cStringIO.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/ccpython.cc => SDKs/XPlatform/Cypython-2.3.3/Modules/ccpython.cc
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cdmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/cdmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cgen.py => SDKs/XPlatform/Cypython-2.3.3/Modules/cgen.py
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cgensupport.c => SDKs/XPlatform/Cypython-2.3.3/Modules/cgensupport.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cgensupport.h => SDKs/XPlatform/Cypython-2.3.3/Modules/cgensupport.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/clmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/clmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cmathmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/cmathmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/config.c.in => SDKs/XPlatform/Cypython-2.3.3/Modules/config.c.in
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cryptmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/cryptmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/cstubs => SDKs/XPlatform/Cypython-2.3.3/Modules/cstubs
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/datetimemodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/datetimemodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/dbmmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/dbmmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/dlmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/dlmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/errnomodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/errnomodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/Makefile.in => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/Makefile.in
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/ascii.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/ascii.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/asciitab.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/asciitab.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/expat.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/expat.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/iasciitab.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/iasciitab.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/internal.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/internal.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/latin1tab.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/latin1tab.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/macconfig.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/macconfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/nametab.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/nametab.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/utf8tab.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/utf8tab.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/winconfig.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/winconfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmlparse.c => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmlparse.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmlrole.c => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmlrole.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmlrole.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmlrole.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok.c => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok_impl.c => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok_impl.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok_impl.h => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok_impl.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok_ns.c => SDKs/XPlatform/Cypython-2.3.3/Modules/expat/xmltok_ns.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/fcntlmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/fcntlmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/flmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/flmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/fmmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/fmmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/fpectlmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/fpectlmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/fpetestmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/fpetestmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/gc_weakref.txt => SDKs/XPlatform/Cypython-2.3.3/Modules/gc_weakref.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/gcmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/gcmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/gdbmmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/gdbmmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/getaddrinfo.c => SDKs/XPlatform/Cypython-2.3.3/Modules/getaddrinfo.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/getbuildinfo.c => SDKs/XPlatform/Cypython-2.3.3/Modules/getbuildinfo.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/getnameinfo.c => SDKs/XPlatform/Cypython-2.3.3/Modules/getnameinfo.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/getpath.c => SDKs/XPlatform/Cypython-2.3.3/Modules/getpath.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/glmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/glmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/grpmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/grpmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/imageop.c => SDKs/XPlatform/Cypython-2.3.3/Modules/imageop.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/imgfile.c => SDKs/XPlatform/Cypython-2.3.3/Modules/imgfile.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/itertoolsmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/itertoolsmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/ld_so_aix => SDKs/XPlatform/Cypython-2.3.3/Modules/ld_so_aix
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/ld_so_beos => SDKs/XPlatform/Cypython-2.3.3/Modules/ld_so_beos
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/linuxaudiodev.c => SDKs/XPlatform/Cypython-2.3.3/Modules/linuxaudiodev.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/main.c => SDKs/XPlatform/Cypython-2.3.3/Modules/main.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/makesetup => SDKs/XPlatform/Cypython-2.3.3/Modules/makesetup
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/makexp_aix => SDKs/XPlatform/Cypython-2.3.3/Modules/makexp_aix
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/mathmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/mathmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/md5.h => SDKs/XPlatform/Cypython-2.3.3/Modules/md5.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/md5c.c => SDKs/XPlatform/Cypython-2.3.3/Modules/md5c.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/md5module.c => SDKs/XPlatform/Cypython-2.3.3/Modules/md5module.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/mmapmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/mmapmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/mpzmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/mpzmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/nismodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/nismodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/operator.c => SDKs/XPlatform/Cypython-2.3.3/Modules/operator.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/ossaudiodev.c => SDKs/XPlatform/Cypython-2.3.3/Modules/ossaudiodev.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/parsermodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/parsermodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/pcre-int.h => SDKs/XPlatform/Cypython-2.3.3/Modules/pcre-int.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/pcre.h => SDKs/XPlatform/Cypython-2.3.3/Modules/pcre.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/pcremodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/pcremodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/posixmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/posixmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/puremodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/puremodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/pwdmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/pwdmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/pyexpat.c => SDKs/XPlatform/Cypython-2.3.3/Modules/pyexpat.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/pypcre.c => SDKs/XPlatform/Cypython-2.3.3/Modules/pypcre.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/python.c => SDKs/XPlatform/Cypython-2.3.3/Modules/python.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/readline.c => SDKs/XPlatform/Cypython-2.3.3/Modules/readline.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/regexmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/regexmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/regexpr.c => SDKs/XPlatform/Cypython-2.3.3/Modules/regexpr.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/regexpr.h => SDKs/XPlatform/Cypython-2.3.3/Modules/regexpr.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/resource.c => SDKs/XPlatform/Cypython-2.3.3/Modules/resource.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/rgbimgmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/rgbimgmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/rotormodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/rotormodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/selectmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/selectmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/sgimodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/sgimodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/shamodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/shamodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/signalmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/signalmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/socketmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/socketmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/socketmodule.h => SDKs/XPlatform/Cypython-2.3.3/Modules/socketmodule.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/sre.h => SDKs/XPlatform/Cypython-2.3.3/Modules/sre.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/sre_constants.h => SDKs/XPlatform/Cypython-2.3.3/Modules/sre_constants.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/stropmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/stropmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/structmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/structmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/sunaudiodev.c => SDKs/XPlatform/Cypython-2.3.3/Modules/sunaudiodev.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/svmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/svmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/symtablemodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/symtablemodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/syslogmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/syslogmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/termios.c => SDKs/XPlatform/Cypython-2.3.3/Modules/termios.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/testcapi_long.h => SDKs/XPlatform/Cypython-2.3.3/Modules/testcapi_long.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/threadmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/threadmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/timemodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/timemodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/timing.h => SDKs/XPlatform/Cypython-2.3.3/Modules/timing.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/timingmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/timingmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/tkappinit.c => SDKs/XPlatform/Cypython-2.3.3/Modules/tkappinit.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/unicodedata.c => SDKs/XPlatform/Cypython-2.3.3/Modules/unicodedata.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/unicodedata_db.h => SDKs/XPlatform/Cypython-2.3.3/Modules/unicodedata_db.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/unicodename_db.h => SDKs/XPlatform/Cypython-2.3.3/Modules/unicodename_db.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/xreadlinesmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/xreadlinesmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/xxmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/xxmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/xxsubtype.c => SDKs/XPlatform/Cypython-2.3.3/Modules/xxsubtype.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/yuv.h => SDKs/XPlatform/Cypython-2.3.3/Modules/yuv.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/yuvconvert.c => SDKs/XPlatform/Cypython-2.3.3/Modules/yuvconvert.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/zipimport.c => SDKs/XPlatform/Cypython-2.3.3/Modules/zipimport.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Modules/zlibmodule.c => SDKs/XPlatform/Cypython-2.3.3/Modules/zlibmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/Objects/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/abstract.c => SDKs/XPlatform/Cypython-2.3.3/Objects/abstract.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/boolobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/boolobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/bufferobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/bufferobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/cellobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/cellobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/classobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/classobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/cobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/cobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/complexobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/complexobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/descrobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/descrobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/dictnotes.txt => SDKs/XPlatform/Cypython-2.3.3/Objects/dictnotes.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/dictobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/dictobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/enumobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/enumobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/fileobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/fileobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/floatobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/floatobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/frameobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/frameobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/funcobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/funcobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/intobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/intobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/iterobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/iterobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/listobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/listobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/listsort.txt => SDKs/XPlatform/Cypython-2.3.3/Objects/listsort.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/longobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/longobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/methodobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/methodobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/moduleobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/moduleobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/object.c => SDKs/XPlatform/Cypython-2.3.3/Objects/object.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/obmalloc.c => SDKs/XPlatform/Cypython-2.3.3/Objects/obmalloc.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/rangeobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/rangeobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/sliceobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/sliceobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/stringobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/stringobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/structseq.c => SDKs/XPlatform/Cypython-2.3.3/Objects/structseq.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/tupleobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/tupleobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/typeobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/typeobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/unicodectype.c => SDKs/XPlatform/Cypython-2.3.3/Objects/unicodectype.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/unicodeobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/unicodeobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/unicodetype_db.h => SDKs/XPlatform/Cypython-2.3.3/Objects/unicodetype_db.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Objects/weakrefobject.c => SDKs/XPlatform/Cypython-2.3.3/Objects/weakrefobject.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/PC/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/PlasmaPack.cpp => SDKs/XPlatform/Cypython-2.3.3/PC/PlasmaPack.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/PlasmaPack.h => SDKs/XPlatform/Cypython-2.3.3/PC/PlasmaPack.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/WinMain.c => SDKs/XPlatform/Cypython-2.3.3/PC/WinMain.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/_winreg.c => SDKs/XPlatform/Cypython-2.3.3/PC/_winreg.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/PythonPowered.bmp => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/PythonPowered.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/README.txt => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/README.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/archive.h => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/archive.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/extract.c => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/extract.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/install.c => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/install.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/install.rc => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/install.rc
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/resource.h => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/wininst.dsp => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/wininst.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/wininst.dsw => SDKs/XPlatform/Cypython-2.3.3/PC/bdist_wininst/wininst.dsw
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/config.c => SDKs/XPlatform/Cypython-2.3.3/PC/config.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/dl_nt.c => SDKs/XPlatform/Cypython-2.3.3/PC/dl_nt.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/dllbase_nt.txt => SDKs/XPlatform/Cypython-2.3.3/PC/dllbase_nt.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.c => SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.def => SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.def
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.dsp => SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.dsw => SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/example.dsw
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/readme.txt => SDKs/XPlatform/Cypython-2.3.3/PC/example_nt/readme.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/frozen_dllmain.c => SDKs/XPlatform/Cypython-2.3.3/PC/frozen_dllmain.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/getpathp.c => SDKs/XPlatform/Cypython-2.3.3/PC/getpathp.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/import_nt.c => SDKs/XPlatform/Cypython-2.3.3/PC/import_nt.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/make_versioninfo.c => SDKs/XPlatform/Cypython-2.3.3/PC/make_versioninfo.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/msvcrtmodule.c => SDKs/XPlatform/Cypython-2.3.3/PC/msvcrtmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/Makefile => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/Makefile
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/README.os2emx => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/README.os2emx
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/config.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/config.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/dlfcn.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/dlfcn.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/dlfcn.h => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/dlfcn.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/dllentry.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/dllentry.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/getpathp.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/getpathp.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/pyconfig.h => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/pyconfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/python23.def => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/python23.def
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/pythonpm.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2emx/pythonpm.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/_tkinter.def => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/_tkinter.def
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/config.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/config.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/getpathp.c => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/getpathp.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/makefile => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/makefile
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/makefile.omk => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/makefile.omk
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/pyconfig.h => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/pyconfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/python.def => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/python.def
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/readme.txt => SDKs/XPlatform/Cypython-2.3.3/PC/os2vacpp/readme.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/py.ico => SDKs/XPlatform/Cypython-2.3.3/PC/py.ico
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/pyc.ico => SDKs/XPlatform/Cypython-2.3.3/PC/pyc.ico
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/pycon.ico => SDKs/XPlatform/Cypython-2.3.3/PC/pycon.ico
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/python.mk => SDKs/XPlatform/Cypython-2.3.3/PC/python.mk
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/python_exe.rc => SDKs/XPlatform/Cypython-2.3.3/PC/python_exe.rc
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/python_nt.rc => SDKs/XPlatform/Cypython-2.3.3/PC/python_nt.rc
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/pythonnt_rc.h => SDKs/XPlatform/Cypython-2.3.3/PC/pythonnt_rc.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/pythonnt_rc_d.h => SDKs/XPlatform/Cypython-2.3.3/PC/pythonnt_rc_d.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/readme.txt => SDKs/XPlatform/Cypython-2.3.3/PC/readme.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/testpy.py => SDKs/XPlatform/Cypython-2.3.3/PC/testpy.py
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/w9xpopen.c => SDKs/XPlatform/Cypython-2.3.3/PC/w9xpopen.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PC/winsound.c => SDKs/XPlatform/Cypython-2.3.3/PC/winsound.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/PCbuild/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/BUILDno.txt => SDKs/XPlatform/Cypython-2.3.3/PCbuild/BUILDno.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/Uninstal.wse => SDKs/XPlatform/Cypython-2.3.3/PCbuild/Uninstal.wse
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_bsddb.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_bsddb.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_csv.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_csv.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_socket.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_socket.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_sre.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_sre.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_sre_static.vcproj => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_sre_static.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_ssl.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_ssl.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_ssl.mak => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_ssl.mak
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_symtable.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_symtable.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_testcapi.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_testcapi.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/_tkinter.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/_tkinter.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/build_ssl.py => SDKs/XPlatform/Cypython-2.3.3/PCbuild/build_ssl.py
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/bz2.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/bz2.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/datetime.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/datetime.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/field3.py => SDKs/XPlatform/Cypython-2.3.3/PCbuild/field3.py
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/installer.bmp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/installer.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/mmap.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/mmap.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/parser.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/parser.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pcbuild.dsw => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pcbuild.dsw
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pyexpat.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pyexpat.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/python.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/python.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/python.iss => SDKs/XPlatform/Cypython-2.3.3/PCbuild/python.iss
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/python20.wse => SDKs/XPlatform/Cypython-2.3.3/PCbuild/python20.wse
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore.vcproj => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore_dyn_server.vcproj => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore_dyn_server.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore_static.vcproj => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythoncore_static.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythonw.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/pythonw.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/readme.txt => SDKs/XPlatform/Cypython-2.3.3/PCbuild/readme.txt
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/rmpyc.py => SDKs/XPlatform/Cypython-2.3.3/PCbuild/rmpyc.py
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/rt.bat => SDKs/XPlatform/Cypython-2.3.3/PCbuild/rt.bat
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/select.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/select.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/unicodedata.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/unicodedata.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/w9xpopen.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/w9xpopen.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/winreg.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/winreg.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/winsound.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/winsound.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/PCbuild/zlib.dsp => SDKs/XPlatform/Cypython-2.3.3/PCbuild/zlib.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/Parser/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/acceler.c => SDKs/XPlatform/Cypython-2.3.3/Parser/acceler.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/bitset.c => SDKs/XPlatform/Cypython-2.3.3/Parser/bitset.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/firstsets.c => SDKs/XPlatform/Cypython-2.3.3/Parser/firstsets.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/grammar.c => SDKs/XPlatform/Cypython-2.3.3/Parser/grammar.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/grammar.mak => SDKs/XPlatform/Cypython-2.3.3/Parser/grammar.mak
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/grammar1.c => SDKs/XPlatform/Cypython-2.3.3/Parser/grammar1.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/intrcheck.c => SDKs/XPlatform/Cypython-2.3.3/Parser/intrcheck.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/listnode.c => SDKs/XPlatform/Cypython-2.3.3/Parser/listnode.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/metagrammar.c => SDKs/XPlatform/Cypython-2.3.3/Parser/metagrammar.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/myreadline.c => SDKs/XPlatform/Cypython-2.3.3/Parser/myreadline.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/node.c => SDKs/XPlatform/Cypython-2.3.3/Parser/node.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/parser.c => SDKs/XPlatform/Cypython-2.3.3/Parser/parser.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/parser.h => SDKs/XPlatform/Cypython-2.3.3/Parser/parser.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/parsetok.c => SDKs/XPlatform/Cypython-2.3.3/Parser/parsetok.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/pgen.c => SDKs/XPlatform/Cypython-2.3.3/Parser/pgen.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/pgenmain.c => SDKs/XPlatform/Cypython-2.3.3/Parser/pgenmain.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/printgrammar.c => SDKs/XPlatform/Cypython-2.3.3/Parser/printgrammar.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/tokenizer.c => SDKs/XPlatform/Cypython-2.3.3/Parser/tokenizer.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/tokenizer.h => SDKs/XPlatform/Cypython-2.3.3/Parser/tokenizer.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Parser/tokenizer_pgen.c => SDKs/XPlatform/Cypython-2.3.3/Parser/tokenizer_pgen.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/.cvsignore => SDKs/XPlatform/Cypython-2.3.3/Python/.cvsignore
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/atof.c => SDKs/XPlatform/Cypython-2.3.3/Python/atof.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/bltinmodule.c => SDKs/XPlatform/Cypython-2.3.3/Python/bltinmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/ceval.c => SDKs/XPlatform/Cypython-2.3.3/Python/ceval.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/codecs.c => SDKs/XPlatform/Cypython-2.3.3/Python/codecs.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/compile.c => SDKs/XPlatform/Cypython-2.3.3/Python/compile.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dup2.c => SDKs/XPlatform/Cypython-2.3.3/Python/dup2.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_aix.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_aix.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_atheos.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_atheos.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_beos.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_beos.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_dl.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_dl.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_hpux.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_hpux.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_mac.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_mac.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_next.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_next.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_os2.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_os2.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_shlib.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_shlib.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_stub.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_stub.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/dynload_win.c => SDKs/XPlatform/Cypython-2.3.3/Python/dynload_win.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/errors.c => SDKs/XPlatform/Cypython-2.3.3/Python/errors.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/exceptions.c => SDKs/XPlatform/Cypython-2.3.3/Python/exceptions.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/fmod.c => SDKs/XPlatform/Cypython-2.3.3/Python/fmod.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/frozen.c => SDKs/XPlatform/Cypython-2.3.3/Python/frozen.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/frozenmain.c => SDKs/XPlatform/Cypython-2.3.3/Python/frozenmain.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/future.c => SDKs/XPlatform/Cypython-2.3.3/Python/future.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getargs.c => SDKs/XPlatform/Cypython-2.3.3/Python/getargs.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getcompiler.c => SDKs/XPlatform/Cypython-2.3.3/Python/getcompiler.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getcopyright.c => SDKs/XPlatform/Cypython-2.3.3/Python/getcopyright.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getcwd.c => SDKs/XPlatform/Cypython-2.3.3/Python/getcwd.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getmtime.c => SDKs/XPlatform/Cypython-2.3.3/Python/getmtime.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getopt.c => SDKs/XPlatform/Cypython-2.3.3/Python/getopt.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getplatform.c => SDKs/XPlatform/Cypython-2.3.3/Python/getplatform.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/getversion.c => SDKs/XPlatform/Cypython-2.3.3/Python/getversion.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/graminit.c => SDKs/XPlatform/Cypython-2.3.3/Python/graminit.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/hypot.c => SDKs/XPlatform/Cypython-2.3.3/Python/hypot.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/import.c => SDKs/XPlatform/Cypython-2.3.3/Python/import.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/import_pack.c => SDKs/XPlatform/Cypython-2.3.3/Python/import_pack.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/importdl.c => SDKs/XPlatform/Cypython-2.3.3/Python/importdl.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/importdl.h => SDKs/XPlatform/Cypython-2.3.3/Python/importdl.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/mactoolboxglue.c => SDKs/XPlatform/Cypython-2.3.3/Python/mactoolboxglue.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/marshal.c => SDKs/XPlatform/Cypython-2.3.3/Python/marshal.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/memmove.c => SDKs/XPlatform/Cypython-2.3.3/Python/memmove.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/modsupport.c => SDKs/XPlatform/Cypython-2.3.3/Python/modsupport.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/mysnprintf.c => SDKs/XPlatform/Cypython-2.3.3/Python/mysnprintf.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/mystrtoul.c => SDKs/XPlatform/Cypython-2.3.3/Python/mystrtoul.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/pyfpe.c => SDKs/XPlatform/Cypython-2.3.3/Python/pyfpe.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/pystate.c => SDKs/XPlatform/Cypython-2.3.3/Python/pystate.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/pythonrun.c => SDKs/XPlatform/Cypython-2.3.3/Python/pythonrun.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/sigcheck.c => SDKs/XPlatform/Cypython-2.3.3/Python/sigcheck.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/strdup.c => SDKs/XPlatform/Cypython-2.3.3/Python/strdup.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/strerror.c => SDKs/XPlatform/Cypython-2.3.3/Python/strerror.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/strtod.c => SDKs/XPlatform/Cypython-2.3.3/Python/strtod.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/structmember.c => SDKs/XPlatform/Cypython-2.3.3/Python/structmember.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/symtable.c => SDKs/XPlatform/Cypython-2.3.3/Python/symtable.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/sysmodule.c => SDKs/XPlatform/Cypython-2.3.3/Python/sysmodule.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread.c => SDKs/XPlatform/Cypython-2.3.3/Python/thread.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_atheos.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_atheos.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_beos.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_beos.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_cthread.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_cthread.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_foobar.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_foobar.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_lwp.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_lwp.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_nt.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_nt.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_os2.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_os2.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_pth.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_pth.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_pthread.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_pthread.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_sgi.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_sgi.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_solaris.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_solaris.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/thread_wince.h => SDKs/XPlatform/Cypython-2.3.3/Python/thread_wince.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/Python/traceback.c => SDKs/XPlatform/Cypython-2.3.3/Python/traceback.c
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/README => SDKs/XPlatform/Cypython-2.3.3/README
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/XboxBuild/_sre_static.vcproj => SDKs/XPlatform/Cypython-2.3.3/XboxBuild/_sre_static.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/XboxBuild/pythoncore_static.vcproj => SDKs/XPlatform/Cypython-2.3.3/XboxBuild/pythoncore_static.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/Python.h => SDKs/XPlatform/Cypython-2.3.3/include/Python.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/abstract.h => SDKs/XPlatform/Cypython-2.3.3/include/abstract.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/bitset.h => SDKs/XPlatform/Cypython-2.3.3/include/bitset.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/boolobject.h => SDKs/XPlatform/Cypython-2.3.3/include/boolobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/bufferobject.h => SDKs/XPlatform/Cypython-2.3.3/include/bufferobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/cStringIO.h => SDKs/XPlatform/Cypython-2.3.3/include/cStringIO.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/cellobject.h => SDKs/XPlatform/Cypython-2.3.3/include/cellobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/ceval.h => SDKs/XPlatform/Cypython-2.3.3/include/ceval.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/classobject.h => SDKs/XPlatform/Cypython-2.3.3/include/classobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/cobject.h => SDKs/XPlatform/Cypython-2.3.3/include/cobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/codecs.h => SDKs/XPlatform/Cypython-2.3.3/include/codecs.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/compile.h => SDKs/XPlatform/Cypython-2.3.3/include/compile.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/complexobject.h => SDKs/XPlatform/Cypython-2.3.3/include/complexobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/datetime.h => SDKs/XPlatform/Cypython-2.3.3/include/datetime.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/descrobject.h => SDKs/XPlatform/Cypython-2.3.3/include/descrobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/dictobject.h => SDKs/XPlatform/Cypython-2.3.3/include/dictobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/enumobject.h => SDKs/XPlatform/Cypython-2.3.3/include/enumobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/errcode.h => SDKs/XPlatform/Cypython-2.3.3/include/errcode.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/eval.h => SDKs/XPlatform/Cypython-2.3.3/include/eval.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/fileobject.h => SDKs/XPlatform/Cypython-2.3.3/include/fileobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/floatobject.h => SDKs/XPlatform/Cypython-2.3.3/include/floatobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/frameobject.h => SDKs/XPlatform/Cypython-2.3.3/include/frameobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/funcobject.h => SDKs/XPlatform/Cypython-2.3.3/include/funcobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/graminit.h => SDKs/XPlatform/Cypython-2.3.3/include/graminit.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/grammar.h => SDKs/XPlatform/Cypython-2.3.3/include/grammar.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/import.h => SDKs/XPlatform/Cypython-2.3.3/include/import.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/intobject.h => SDKs/XPlatform/Cypython-2.3.3/include/intobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/intrcheck.h => SDKs/XPlatform/Cypython-2.3.3/include/intrcheck.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/iterobject.h => SDKs/XPlatform/Cypython-2.3.3/include/iterobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/listobject.h => SDKs/XPlatform/Cypython-2.3.3/include/listobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/longintrepr.h => SDKs/XPlatform/Cypython-2.3.3/include/longintrepr.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/longobject.h => SDKs/XPlatform/Cypython-2.3.3/include/longobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/marshal.h => SDKs/XPlatform/Cypython-2.3.3/include/marshal.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/metagrammar.h => SDKs/XPlatform/Cypython-2.3.3/include/metagrammar.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/methodobject.h => SDKs/XPlatform/Cypython-2.3.3/include/methodobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/modsupport.h => SDKs/XPlatform/Cypython-2.3.3/include/modsupport.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/moduleobject.h => SDKs/XPlatform/Cypython-2.3.3/include/moduleobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/node.h => SDKs/XPlatform/Cypython-2.3.3/include/node.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/object.h => SDKs/XPlatform/Cypython-2.3.3/include/object.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/objimpl.h => SDKs/XPlatform/Cypython-2.3.3/include/objimpl.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/opcode.h => SDKs/XPlatform/Cypython-2.3.3/include/opcode.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/osdefs.h => SDKs/XPlatform/Cypython-2.3.3/include/osdefs.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/parsetok.h => SDKs/XPlatform/Cypython-2.3.3/include/parsetok.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/patchlevel.h => SDKs/XPlatform/Cypython-2.3.3/include/patchlevel.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pgen.h => SDKs/XPlatform/Cypython-2.3.3/include/pgen.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pgenheaders.h => SDKs/XPlatform/Cypython-2.3.3/include/pgenheaders.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/py_curses.h => SDKs/XPlatform/Cypython-2.3.3/include/py_curses.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pydebug.h => SDKs/XPlatform/Cypython-2.3.3/include/pydebug.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pyerrors.h => SDKs/XPlatform/Cypython-2.3.3/include/pyerrors.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pyfpe.h => SDKs/XPlatform/Cypython-2.3.3/include/pyfpe.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pygetopt.h => SDKs/XPlatform/Cypython-2.3.3/include/pygetopt.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pymactoolbox.h => SDKs/XPlatform/Cypython-2.3.3/include/pymactoolbox.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pymem.h => SDKs/XPlatform/Cypython-2.3.3/include/pymem.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pyport.h => SDKs/XPlatform/Cypython-2.3.3/include/pyport.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pystate.h => SDKs/XPlatform/Cypython-2.3.3/include/pystate.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pythonrun.h => SDKs/XPlatform/Cypython-2.3.3/include/pythonrun.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/pythread.h => SDKs/XPlatform/Cypython-2.3.3/include/pythread.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/rangeobject.h => SDKs/XPlatform/Cypython-2.3.3/include/rangeobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/sliceobject.h => SDKs/XPlatform/Cypython-2.3.3/include/sliceobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/stringobject.h => SDKs/XPlatform/Cypython-2.3.3/include/stringobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/structmember.h => SDKs/XPlatform/Cypython-2.3.3/include/structmember.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/structseq.h => SDKs/XPlatform/Cypython-2.3.3/include/structseq.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/symtable.h => SDKs/XPlatform/Cypython-2.3.3/include/symtable.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/sysmodule.h => SDKs/XPlatform/Cypython-2.3.3/include/sysmodule.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/token.h => SDKs/XPlatform/Cypython-2.3.3/include/token.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/traceback.h => SDKs/XPlatform/Cypython-2.3.3/include/traceback.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/tupleobject.h => SDKs/XPlatform/Cypython-2.3.3/include/tupleobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/ucnhash.h => SDKs/XPlatform/Cypython-2.3.3/include/ucnhash.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/unicodeobject.h => SDKs/XPlatform/Cypython-2.3.3/include/unicodeobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/include/weakrefobject.h => SDKs/XPlatform/Cypython-2.3.3/include/weakrefobject.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/pyconfig_dyn/pyconfig.h => SDKs/XPlatform/Cypython-2.3.3/pyconfig_dyn/pyconfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/SDKs/XPlatform/Cypython-2.3.3/pyconfig_static/pyconfig.h => SDKs/XPlatform/Cypython-2.3.3/pyconfig_static/pyconfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Installer/LargeMOUL.nsi => Scripts/Installer/LargeMOUL.nsi
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Installer/MOUL.nsi => Scripts/Installer/MOUL.nsi
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Installer/MOULInstaller.exe => Scripts/Installer/MOULInstaller.exe
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Max/PlasmaExport.ms => Scripts/Max/PlasmaExport.ms
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/Plasma.py => Scripts/Python/plasma/Plasma.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaConstants.py => Scripts/Python/plasma/PlasmaConstants.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaControlKeys.py => Scripts/Python/plasma/PlasmaControlKeys.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaGame.py => Scripts/Python/plasma/PlasmaGame.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaGameConstants.py => Scripts/Python/plasma/PlasmaGameConstants.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaKITypes.py => Scripts/Python/plasma/PlasmaKITypes.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaNetConstants.py => Scripts/Python/plasma/PlasmaNetConstants.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaTypes.py => Scripts/Python/plasma/PlasmaTypes.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/PlasmaVaultConstants.py => Scripts/Python/plasma/PlasmaVaultConstants.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/glue.py => Scripts/Python/plasma/glue.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/pch.py => Scripts/Python/plasma/pch.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/plasma/ptWordFilter.py => Scripts/Python/plasma/ptWordFilter.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/Bastion.py => Scripts/Python/system/Bastion.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/ConfigParser.py => Scripts/Python/system/ConfigParser.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/HTMLParser.py => Scripts/Python/system/HTMLParser.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/StringIO.py => Scripts/Python/system/StringIO.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/UserDict.py => Scripts/Python/system/UserDict.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/__future__.py => Scripts/Python/system/__future__.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/ascii.py => Scripts/Python/system/ascii.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/atexit.py => Scripts/Python/system/atexit.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/bdb.py => Scripts/Python/system/bdb.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/bisect.py => Scripts/Python/system/bisect.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/calendar.py => Scripts/Python/system/calendar.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/cmd.py => Scripts/Python/system/cmd.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/codecs.py => Scripts/Python/system/codecs.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/colorsys.py => Scripts/Python/system/colorsys.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/commands.py => Scripts/Python/system/commands.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/compileall.py => Scripts/Python/system/compileall.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/copy.py => Scripts/Python/system/copy.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/copy_reg.py => Scripts/Python/system/copy_reg.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/decompyle.py => Scripts/Python/system/decompyle.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/difflib.py => Scripts/Python/system/difflib.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/dircache.py => Scripts/Python/system/dircache.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/dis.py => Scripts/Python/system/dis.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/dospath.py => Scripts/Python/system/dospath.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/encoding_utf_8.py => Scripts/Python/system/encoding_utf_8.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/encodings.py => Scripts/Python/system/encodings.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/filecmp.py => Scripts/Python/system/filecmp.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/fileinput.py => Scripts/Python/system/fileinput.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/fnmatch.py => Scripts/Python/system/fnmatch.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/fpformat.py => Scripts/Python/system/fpformat.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/getopt.py => Scripts/Python/system/getopt.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/gettext.py => Scripts/Python/system/gettext.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/glob.py => Scripts/Python/system/glob.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/ihooks.py => Scripts/Python/system/ihooks.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/imghdr.py => Scripts/Python/system/imghdr.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/imputil.py => Scripts/Python/system/imputil.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/inspect.py => Scripts/Python/system/inspect.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/keyword.py => Scripts/Python/system/keyword.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/knee.py => Scripts/Python/system/knee.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/linecache.py => Scripts/Python/system/linecache.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/locale.py => Scripts/Python/system/locale.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/markupbase.py => Scripts/Python/system/markupbase.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/mutex.py => Scripts/Python/system/mutex.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/netrc.py => Scripts/Python/system/netrc.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/ntpath.py => Scripts/Python/system/ntpath.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/opcode.py => Scripts/Python/system/opcode.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/os.py => Scripts/Python/system/os.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/pdb.py => Scripts/Python/system/pdb.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/pickle.py => Scripts/Python/system/pickle.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/popen2.py => Scripts/Python/system/popen2.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/posixpath.py => Scripts/Python/system/posixpath.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/pre.py => Scripts/Python/system/pre.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/profile.py => Scripts/Python/system/profile.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/pstats.py => Scripts/Python/system/pstats.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/py_compile.py => Scripts/Python/system/py_compile.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/pyclbr.py => Scripts/Python/system/pyclbr.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/random.py => Scripts/Python/system/random.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/re.py => Scripts/Python/system/re.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/regex_syntax.py => Scripts/Python/system/regex_syntax.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/repr.py => Scripts/Python/system/repr.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/shlex.py => Scripts/Python/system/shlex.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/shutil.py => Scripts/Python/system/shutil.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/site.py => Scripts/Python/system/site.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/spark.py => Scripts/Python/system/spark.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/sre.py => Scripts/Python/system/sre.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/sre_compile.py => Scripts/Python/system/sre_compile.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/sre_constants.py => Scripts/Python/system/sre_constants.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/sre_parse.py => Scripts/Python/system/sre_parse.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/stat.py => Scripts/Python/system/stat.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/statcache.py => Scripts/Python/system/statcache.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/string.py => Scripts/Python/system/string.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/symbol.py => Scripts/Python/system/symbol.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/tabnanny.py => Scripts/Python/system/tabnanny.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/token.py => Scripts/Python/system/token.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/tokenize.py => Scripts/Python/system/tokenize.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/traceback.py => Scripts/Python/system/traceback.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/types.py => Scripts/Python/system/types.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/verify.py => Scripts/Python/system/verify.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/warnings.py => Scripts/Python/system/warnings.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/weakref.py => Scripts/Python/system/weakref.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/webbrowser.py => Scripts/Python/system/webbrowser.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/Python/system/whrandom.py => Scripts/Python/system/whrandom.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/Do_Not_Load_Neighborhood.py => Scripts/ServerPython/python/Do_Not_Load_Neighborhood.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/Do_Not_Load_RestorationGuild.py => Scripts/ServerPython/python/Do_Not_Load_RestorationGuild.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/plasma/placeholder.txt => Scripts/ServerPython/python/plasma/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/Bastion.py => Scripts/ServerPython/python/system/Bastion.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/ConfigParser.py => Scripts/ServerPython/python/system/ConfigParser.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/StringIO.py => Scripts/ServerPython/python/system/StringIO.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/__future__.py => Scripts/ServerPython/python/system/__future__.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/_sre.pyd => Scripts/ServerPython/python/system/_sre.pyd
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/_sre_d.pyd => Scripts/ServerPython/python/system/_sre_d.pyd
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/atexit.py => Scripts/ServerPython/python/system/atexit.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/bdb.py => Scripts/ServerPython/python/system/bdb.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/bisect.py => Scripts/ServerPython/python/system/bisect.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/calendar.py => Scripts/ServerPython/python/system/calendar.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/cmd.py => Scripts/ServerPython/python/system/cmd.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/codecs.py => Scripts/ServerPython/python/system/codecs.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/colorsys.py => Scripts/ServerPython/python/system/colorsys.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/commands.py => Scripts/ServerPython/python/system/commands.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/compileall.py => Scripts/ServerPython/python/system/compileall.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/copy.py => Scripts/ServerPython/python/system/copy.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/copy_reg.py => Scripts/ServerPython/python/system/copy_reg.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/decompyle.py => Scripts/ServerPython/python/system/decompyle.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/difflib.py => Scripts/ServerPython/python/system/difflib.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/dircache.py => Scripts/ServerPython/python/system/dircache.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/dis.py => Scripts/ServerPython/python/system/dis.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/dospath.py => Scripts/ServerPython/python/system/dospath.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/filecmp.py => Scripts/ServerPython/python/system/filecmp.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/fileinput.py => Scripts/ServerPython/python/system/fileinput.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/fnmatch.py => Scripts/ServerPython/python/system/fnmatch.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/fpformat.py => Scripts/ServerPython/python/system/fpformat.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/getopt.py => Scripts/ServerPython/python/system/getopt.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/gettext.py => Scripts/ServerPython/python/system/gettext.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/glob.py => Scripts/ServerPython/python/system/glob.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/ihooks.py => Scripts/ServerPython/python/system/ihooks.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/imghdr.py => Scripts/ServerPython/python/system/imghdr.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/imputil.py => Scripts/ServerPython/python/system/imputil.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/inspect.py => Scripts/ServerPython/python/system/inspect.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/keyword.py => Scripts/ServerPython/python/system/keyword.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/knee.py => Scripts/ServerPython/python/system/knee.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/linecache.py => Scripts/ServerPython/python/system/linecache.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/locale.py => Scripts/ServerPython/python/system/locale.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/mutex.py => Scripts/ServerPython/python/system/mutex.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/netrc.py => Scripts/ServerPython/python/system/netrc.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/ntpath.py => Scripts/ServerPython/python/system/ntpath.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/os.py => Scripts/ServerPython/python/system/os.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/pdb.py => Scripts/ServerPython/python/system/pdb.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/pickle.py => Scripts/ServerPython/python/system/pickle.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/popen2.py => Scripts/ServerPython/python/system/popen2.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/posixpath.py => Scripts/ServerPython/python/system/posixpath.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/pre.py => Scripts/ServerPython/python/system/pre.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/profile.py => Scripts/ServerPython/python/system/profile.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/pstats.py => Scripts/ServerPython/python/system/pstats.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/py_compile.py => Scripts/ServerPython/python/system/py_compile.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/pyclbr.py => Scripts/ServerPython/python/system/pyclbr.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/random.py => Scripts/ServerPython/python/system/random.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/re.py => Scripts/ServerPython/python/system/re.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/regex_syntax.py => Scripts/ServerPython/python/system/regex_syntax.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/repr.py => Scripts/ServerPython/python/system/repr.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/shlex.py => Scripts/ServerPython/python/system/shlex.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/shutil.py => Scripts/ServerPython/python/system/shutil.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/site.py => Scripts/ServerPython/python/system/site.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/spark.py => Scripts/ServerPython/python/system/spark.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/sre.py => Scripts/ServerPython/python/system/sre.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/sre_compile.py => Scripts/ServerPython/python/system/sre_compile.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/sre_constants.py => Scripts/ServerPython/python/system/sre_constants.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/sre_parse.py => Scripts/ServerPython/python/system/sre_parse.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/stat.py => Scripts/ServerPython/python/system/stat.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/statcache.py => Scripts/ServerPython/python/system/statcache.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/string.py => Scripts/ServerPython/python/system/string.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/symbol.py => Scripts/ServerPython/python/system/symbol.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/tabnanny.py => Scripts/ServerPython/python/system/tabnanny.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/token.py => Scripts/ServerPython/python/system/token.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/tokenize.py => Scripts/ServerPython/python/system/tokenize.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/traceback.py => Scripts/ServerPython/python/system/traceback.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/types.py => Scripts/ServerPython/python/system/types.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/verify.py => Scripts/ServerPython/python/system/verify.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/warnings.py => Scripts/ServerPython/python/system/warnings.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/weakref.py => Scripts/ServerPython/python/system/weakref.py
rename : MOULOpenSourceClientPlugin/Plasma20/Scripts/ServerPython/python/system/whrandom.py => Scripts/ServerPython/python/system/whrandom.py
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/CMakeLists.txt => Sources/Plasma/Apps/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/CMakeLists.txt => Sources/Plasma/Apps/plClient/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/pfAllCreatables.cpp => Sources/Plasma/Apps/plClient/pfAllCreatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/plAllCreatables.cpp => Sources/Plasma/Apps/plClient/plAllCreatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/plClient.cpp => Sources/Plasma/Apps/plClient/plClient.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/plClient.h => Sources/Plasma/Apps/plClient/plClient.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/plClientCreatable.h => Sources/Plasma/Apps/plClient/plClientCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/plClientUpdateFormat.h => Sources/Plasma/Apps/plClient/plClientUpdateFormat.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/plSimStateMsg.h => Sources/Plasma/Apps/plClient/plSimStateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/pnAllCreatables.cpp => Sources/Plasma/Apps/plClient/pnAllCreatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/Dirt.ICO => Sources/Plasma/Apps/plClient/res/Dirt.ICO
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/Microphone.bmp => Sources/Plasma/Apps/plClient/res/Microphone.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/Speaker.bmp => Sources/Plasma/Apps/plClient/res/Speaker.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/banner.bmp => Sources/Plasma/Apps/plClient/res/banner.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bitmap1.bmp => Sources/Plasma/Apps/plClient/res/bitmap1.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bitmap2.bmp => Sources/Plasma/Apps/plClient/res/bitmap2.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bitmap3.bmp => Sources/Plasma/Apps/plClient/res/bitmap3.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bmp00001.bmp => Sources/Plasma/Apps/plClient/res/bmp00001.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bmp00002.bmp => Sources/Plasma/Apps/plClient/res/bmp00002.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bmp00003.bmp => Sources/Plasma/Apps/plClient/res/bmp00003.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bmp00004.bmp => Sources/Plasma/Apps/plClient/res/bmp00004.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/bmp00005.bmp => Sources/Plasma/Apps/plClient/res/bmp00005.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/book.bmp => Sources/Plasma/Apps/plClient/res/book.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/book_cli.bmp => Sources/Plasma/Apps/plClient/res/book_cli.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/book_hig.bmp => Sources/Plasma/Apps/plClient/res/book_hig.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cnsl1.bin => Sources/Plasma/Apps/plClient/res/cnsl1.bin
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_clicked.bmp => Sources/Plasma/Apps/plClient/res/cursor_clicked.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_disabled.bmp => Sources/Plasma/Apps/plClient/res/cursor_disabled.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_down.bmp => Sources/Plasma/Apps/plClient/res/cursor_down.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_grab.bmp => Sources/Plasma/Apps/plClient/res/cursor_grab.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_left.bmp => Sources/Plasma/Apps/plClient/res/cursor_left.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_open.bmp => Sources/Plasma/Apps/plClient/res/cursor_open.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_poised.bmp => Sources/Plasma/Apps/plClient/res/cursor_poised.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_right.bmp => Sources/Plasma/Apps/plClient/res/cursor_right.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_u.bmp => Sources/Plasma/Apps/plClient/res/cursor_u.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_up.bmp => Sources/Plasma/Apps/plClient/res/cursor_up.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/cursor_upward.bmp => Sources/Plasma/Apps/plClient/res/cursor_upward.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/headspin.ico => Sources/Plasma/Apps/plClient/res/headspin.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/plClient.exe.manifest => Sources/Plasma/Apps/plClient/res/plClient.exe.manifest
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/plClient.rc => Sources/Plasma/Apps/plClient/res/plClient.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/resource.h => Sources/Plasma/Apps/plClient/res/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.01.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.01.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.02.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.02.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.03.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.03.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.04.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.04.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.05.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.05.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.06.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.06.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.07.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.07.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.08.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.08.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.09.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.09.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.10.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.10.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.11.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.11.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.12.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.12.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.13.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.13.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.14.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.14.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.15.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.15.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.16.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.16.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.17.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.17.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking.18.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking.18.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Linking_Text.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Linking_Text.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/xLoading_Updating_Text.jpg => Sources/Plasma/Apps/plClient/res/xLoading_Updating_Text.jpg
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp => Sources/Plasma/Apps/plClient/winmain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientKey/DllMain.cpp => Sources/Plasma/Apps/plClientKey/DllMain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientKey/plClientKey.cpp => Sources/Plasma/Apps/plClientKey/plClientKey.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientKey/plClientKey.def => Sources/Plasma/Apps/plClientKey/plClientKey.def
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientKey/plClientKey.h => Sources/Plasma/Apps/plClientKey/plClientKey.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientPatcher/CMakeLists.txt => Sources/Plasma/Apps/plClientPatcher/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientPatcher/Intern.h => Sources/Plasma/Apps/plClientPatcher/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientPatcher/Pch.h => Sources/Plasma/Apps/plClientPatcher/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientPatcher/UruPlayer.cpp => Sources/Plasma/Apps/plClientPatcher/UruPlayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientPatcher/UruPlayer.h => Sources/Plasma/Apps/plClientPatcher/UruPlayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClientPatcher/plLauncherCallback.h => Sources/Plasma/Apps/plClientPatcher/plLauncherCallback.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plFileEncrypt/main.cpp => Sources/Plasma/Apps/plFileEncrypt/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plFileSecure/main.cpp => Sources/Plasma/Apps/plFileSecure/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plLogDecrypt/plLogDecrypt.cpp => Sources/Plasma/Apps/plLogDecrypt/plLogDecrypt.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plMD5/Intern.h => Sources/Plasma/Apps/plMD5/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plMD5/Main.cpp => Sources/Plasma/Apps/plMD5/Main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plMD5/Pch.h => Sources/Plasma/Apps/plMD5/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPageInfo/plAllCreatables.cpp => Sources/Plasma/Apps/plPageInfo/plAllCreatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPageInfo/plPageInfo.cpp => Sources/Plasma/Apps/plPageInfo/plPageInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPageOptimizer/main.cpp => Sources/Plasma/Apps/plPageOptimizer/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPageOptimizer/pfAllCreatables.cpp => Sources/Plasma/Apps/plPageOptimizer/pfAllCreatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPageOptimizer/plPageOptimizer.cpp => Sources/Plasma/Apps/plPageOptimizer/plPageOptimizer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPageOptimizer/plPageOptimizer.h => Sources/Plasma/Apps/plPageOptimizer/plPageOptimizer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/Dirt.ICO => Sources/Plasma/Apps/plPlasmaInstaller/Dirt.ICO
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/main.cpp => Sources/Plasma/Apps/plPlasmaInstaller/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plInstallerReg.cpp => Sources/Plasma/Apps/plPlasmaInstaller/plInstallerReg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plInstallerReg.h => Sources/Plasma/Apps/plPlasmaInstaller/plInstallerReg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.cpp => Sources/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.h => Sources/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.rc => Sources/Plasma/Apps/plPlasmaInstaller/plPlasmaInstaller.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plSetPlasmaPath.cpp => Sources/Plasma/Apps/plPlasmaInstaller/plSetPlasmaPath.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plSetPlasmaPath.h => Sources/Plasma/Apps/plPlasmaInstaller/plSetPlasmaPath.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plUnzip.cpp => Sources/Plasma/Apps/plPlasmaInstaller/plUnzip.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/plUnzip.h => Sources/Plasma/Apps/plPlasmaInstaller/plUnzip.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaInstaller/resource.h => Sources/Plasma/Apps/plPlasmaInstaller/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/Dirt.ICO => Sources/Plasma/Apps/plPlasmaUpdate/Dirt.ICO
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/main.cpp => Sources/Plasma/Apps/plPlasmaUpdate/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plFileGrabber.cpp => Sources/Plasma/Apps/plPlasmaUpdate/plFileGrabber.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plFileGrabber.h => Sources/Plasma/Apps/plPlasmaUpdate/plFileGrabber.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plManifest.cpp => Sources/Plasma/Apps/plPlasmaUpdate/plManifest.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plManifest.h => Sources/Plasma/Apps/plPlasmaUpdate/plManifest.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaServers.cpp => Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaServers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaServers.h => Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaServers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.cpp => Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.h => Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.rc => Sources/Plasma/Apps/plPlasmaUpdate/plPlasmaUpdate.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPlasmaUpdate/resource.h => Sources/Plasma/Apps/plPlasmaUpdate/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPythonPack/CMakeLists.txt => Sources/Plasma/Apps/plPythonPack/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPythonPack/PythonInterface.cpp => Sources/Plasma/Apps/plPythonPack/PythonInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPythonPack/PythonInterface.h => Sources/Plasma/Apps/plPythonPack/PythonInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plPythonPack/main.cpp => Sources/Plasma/Apps/plPythonPack/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/CMakeLists.txt => Sources/Plasma/Apps/plUruLauncher/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Dirt.ICO => Sources/Plasma/Apps/plUruLauncher/Dirt.ICO
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Intern.h => Sources/Plasma/Apps/plUruLauncher/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp => Sources/Plasma/Apps/plUruLauncher/Main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Pch.h => Sources/Plasma/Apps/plUruLauncher/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/SelfPatcher.cpp => Sources/Plasma/Apps/plUruLauncher/SelfPatcher.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/banner.bmp => Sources/Plasma/Apps/plUruLauncher/banner.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/plLauncherInfo.h => Sources/Plasma/Apps/plUruLauncher/plLauncherInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/plUruLauncher.rc => Sources/Plasma/Apps/plUruLauncher/plUruLauncher.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/resource.h => Sources/Plasma/Apps/plUruLauncher/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CMakeLists.txt => Sources/Plasma/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/CMakeLists.txt => Sources/Plasma/CoreLib/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/HS_POINT2.inc => Sources/Plasma/CoreLib/HS_POINT2.inc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/HeadSpin.cpp => Sources/Plasma/CoreLib/HeadSpin.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/HeadSpin.h => Sources/Plasma/CoreLib/HeadSpin.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsBiExpander.h => Sources/Plasma/CoreLib/hsBiExpander.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsBitVector.cpp => Sources/Plasma/CoreLib/hsBitVector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsBitVector.h => Sources/Plasma/CoreLib/hsBitVector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsBounds.cpp => Sources/Plasma/CoreLib/hsBounds.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsBounds.h => Sources/Plasma/CoreLib/hsBounds.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsColorRGBA.h => Sources/Plasma/CoreLib/hsColorRGBA.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsConfig.h => Sources/Plasma/CoreLib/hsConfig.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsCritSect.cpp => Sources/Plasma/CoreLib/hsCritSect.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsCritSect.h => Sources/Plasma/CoreLib/hsCritSect.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsExceptionStack.cpp => Sources/Plasma/CoreLib/hsExceptionStack.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsExceptionStack.h => Sources/Plasma/CoreLib/hsExceptionStack.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsExceptions.h => Sources/Plasma/CoreLib/hsExceptions.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsFastMath.cpp => Sources/Plasma/CoreLib/hsFastMath.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsFastMath.h => Sources/Plasma/CoreLib/hsFastMath.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsFixedTypes.h => Sources/Plasma/CoreLib/hsFixedTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsGeometry3.cpp => Sources/Plasma/CoreLib/hsGeometry3.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsGeometry3.h => Sources/Plasma/CoreLib/hsGeometry3.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsHashTable.h => Sources/Plasma/CoreLib/hsHashTable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsLOD.h => Sources/Plasma/CoreLib/hsLOD.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMMIOStream.cpp => Sources/Plasma/CoreLib/hsMMIOStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMMIOStream.h => Sources/Plasma/CoreLib/hsMMIOStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMalloc.cpp => Sources/Plasma/CoreLib/hsMalloc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMalloc.h => Sources/Plasma/CoreLib/hsMalloc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMatrix33.cpp => Sources/Plasma/CoreLib/hsMatrix33.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMatrix33.h => Sources/Plasma/CoreLib/hsMatrix33.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMatrix44.cpp => Sources/Plasma/CoreLib/hsMatrix44.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMatrix44.h => Sources/Plasma/CoreLib/hsMatrix44.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMemory.cpp => Sources/Plasma/CoreLib/hsMemory.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsMemory.h => Sources/Plasma/CoreLib/hsMemory.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsPoint2.h => Sources/Plasma/CoreLib/hsPoint2.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsQuat.cpp => Sources/Plasma/CoreLib/hsQuat.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsQuat.h => Sources/Plasma/CoreLib/hsQuat.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsQueue.h => Sources/Plasma/CoreLib/hsQueue.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsRefCnt.h => Sources/Plasma/CoreLib/hsRefCnt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsSTLStream.cpp => Sources/Plasma/CoreLib/hsSTLStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsSTLStream.h => Sources/Plasma/CoreLib/hsSTLStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsSafeRefCnt.cpp => Sources/Plasma/CoreLib/hsSafeRefCnt.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsSafeRefCnt.h => Sources/Plasma/CoreLib/hsSafeRefCnt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsScalar.h => Sources/Plasma/CoreLib/hsScalar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStlSortUtils.h => Sources/Plasma/CoreLib/hsStlSortUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStlUtils.cpp => Sources/Plasma/CoreLib/hsStlUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStlUtils.h => Sources/Plasma/CoreLib/hsStlUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStream.cpp => Sources/Plasma/CoreLib/hsStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStream.h => Sources/Plasma/CoreLib/hsStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStringTokenizer.cpp => Sources/Plasma/CoreLib/hsStringTokenizer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsStringTokenizer.h => Sources/Plasma/CoreLib/hsStringTokenizer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsTempPointer.h => Sources/Plasma/CoreLib/hsTempPointer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsTemplates.cpp => Sources/Plasma/CoreLib/hsTemplates.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsTemplates.h => Sources/Plasma/CoreLib/hsTemplates.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsThread.cpp => Sources/Plasma/CoreLib/hsThread.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsThread.h => Sources/Plasma/CoreLib/hsThread.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsThread_Mac.cpp => Sources/Plasma/CoreLib/hsThread_Mac.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsThread_Unix.cpp => Sources/Plasma/CoreLib/hsThread_Unix.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsThread_Win.cpp => Sources/Plasma/CoreLib/hsThread_Win.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsTypes.h => Sources/Plasma/CoreLib/hsTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsUtils.cpp => Sources/Plasma/CoreLib/hsUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsUtils.h => Sources/Plasma/CoreLib/hsUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsWide.cpp => Sources/Plasma/CoreLib/hsWide.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsWide.h => Sources/Plasma/CoreLib/hsWide.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsWindowHndl.h => Sources/Plasma/CoreLib/hsWindowHndl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/hsWindows.h => Sources/Plasma/CoreLib/hsWindows.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/notes.txt => Sources/Plasma/CoreLib/notes.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/pcSmallRect.cpp => Sources/Plasma/CoreLib/pcSmallRect.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/pcSmallRect.h => Sources/Plasma/CoreLib/pcSmallRect.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plGeneric.cpp => Sources/Plasma/CoreLib/plGeneric.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plGeneric.h => Sources/Plasma/CoreLib/plGeneric.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plLoadMask.cpp => Sources/Plasma/CoreLib/plLoadMask.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plLoadMask.h => Sources/Plasma/CoreLib/plLoadMask.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plQuality.h => Sources/Plasma/CoreLib/plQuality.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plRefCnt.h => Sources/Plasma/CoreLib/plRefCnt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plRenderLevel.h => Sources/Plasma/CoreLib/plRenderLevel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plTweak.h => Sources/Plasma/CoreLib/plTweak.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plViewTransform.cpp => Sources/Plasma/CoreLib/plViewTransform.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLib/plViewTransform.h => Sources/Plasma/CoreLib/plViewTransform.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLibExe/CMakeLists.txt => Sources/Plasma/CoreLibExe/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLibExe/Intern.h => Sources/Plasma/CoreLibExe/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLibExe/Pch.h => Sources/Plasma/CoreLibExe/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLibExe/hsExeError.cpp => Sources/Plasma/CoreLibExe/hsExeError.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/CoreLibExe/hsExeMalloc.cpp => Sources/Plasma/CoreLibExe/hsExeMalloc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/CMakeLists.txt => Sources/Plasma/FeatureLib/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/inc/pfAllCreatables.h => Sources/Plasma/FeatureLib/inc/pfAllCreatables.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/CMakeLists.txt => Sources/Plasma/FeatureLib/pfAnimation/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/pfAnimationCreatable.h => Sources/Plasma/FeatureLib/pfAnimation/pfAnimationCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/pfObjectFlocker.cpp => Sources/Plasma/FeatureLib/pfAnimation/pfObjectFlocker.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/pfObjectFlocker.h => Sources/Plasma/FeatureLib/pfAnimation/pfObjectFlocker.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plAnimDebugList.cpp => Sources/Plasma/FeatureLib/pfAnimation/plAnimDebugList.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plAnimDebugList.h => Sources/Plasma/FeatureLib/pfAnimation/plAnimDebugList.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plBlower.cpp => Sources/Plasma/FeatureLib/pfAnimation/plBlower.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plBlower.h => Sources/Plasma/FeatureLib/pfAnimation/plBlower.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plFilterCoordInterface.cpp => Sources/Plasma/FeatureLib/pfAnimation/plFilterCoordInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plFilterCoordInterface.h => Sources/Plasma/FeatureLib/pfAnimation/plFilterCoordInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plFollowMod.cpp => Sources/Plasma/FeatureLib/pfAnimation/plFollowMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plFollowMod.h => Sources/Plasma/FeatureLib/pfAnimation/plFollowMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plLightModifier.cpp => Sources/Plasma/FeatureLib/pfAnimation/plLightModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plLightModifier.h => Sources/Plasma/FeatureLib/pfAnimation/plLightModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plLineFollowMod.cpp => Sources/Plasma/FeatureLib/pfAnimation/plLineFollowMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plLineFollowMod.h => Sources/Plasma/FeatureLib/pfAnimation/plLineFollowMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plRandomCommandMod.cpp => Sources/Plasma/FeatureLib/pfAnimation/plRandomCommandMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plRandomCommandMod.h => Sources/Plasma/FeatureLib/pfAnimation/plRandomCommandMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plStereizer.cpp => Sources/Plasma/FeatureLib/pfAnimation/plStereizer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plStereizer.h => Sources/Plasma/FeatureLib/pfAnimation/plStereizer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plViewFaceModifier.cpp => Sources/Plasma/FeatureLib/pfAnimation/plViewFaceModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAnimation/plViewFaceModifier.h => Sources/Plasma/FeatureLib/pfAnimation/plViewFaceModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAudio/CMakeLists.txt => Sources/Plasma/FeatureLib/pfAudio/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAudio/pfAudioCreatable.h => Sources/Plasma/FeatureLib/pfAudio/pfAudioCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAudio/plListener.cpp => Sources/Plasma/FeatureLib/pfAudio/plListener.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAudio/plListener.h => Sources/Plasma/FeatureLib/pfAudio/plListener.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAudio/plRandomSoundMod.cpp => Sources/Plasma/FeatureLib/pfAudio/plRandomSoundMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfAudio/plRandomSoundMod.h => Sources/Plasma/FeatureLib/pfAudio/plRandomSoundMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCCR/CMakeLists.txt => Sources/Plasma/FeatureLib/pfCCR/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCCR/plCCRCreatable.h => Sources/Plasma/FeatureLib/pfCCR/plCCRCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCCR/plCCRMgr.cpp => Sources/Plasma/FeatureLib/pfCCR/plCCRMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCCR/plCCRMgr.h => Sources/Plasma/FeatureLib/pfCCR/plCCRMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCCR/plCCRVault.cpp => Sources/Plasma/FeatureLib/pfCCR/plCCRVault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCCR/plCCRVault.h => Sources/Plasma/FeatureLib/pfCCR/plCCRVault.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/CMakeLists.txt => Sources/Plasma/FeatureLib/pfCamera/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/pfCameraCreatable.h => Sources/Plasma/FeatureLib/pfCamera/pfCameraCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/pfCameraProxy.cpp => Sources/Plasma/FeatureLib/pfCamera/pfCameraProxy.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/pfCameraProxy.h => Sources/Plasma/FeatureLib/pfCamera/pfCameraProxy.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plCameraBrain.cpp => Sources/Plasma/FeatureLib/pfCamera/plCameraBrain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plCameraBrain.h => Sources/Plasma/FeatureLib/pfCamera/plCameraBrain.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plCameraModifier.cpp => Sources/Plasma/FeatureLib/pfCamera/plCameraModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plCameraModifier.h => Sources/Plasma/FeatureLib/pfCamera/plCameraModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plInterestingModifier.cpp => Sources/Plasma/FeatureLib/pfCamera/plInterestingModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plInterestingModifier.h => Sources/Plasma/FeatureLib/pfCamera/plInterestingModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.cpp => Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.h => Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/CMakeLists.txt => Sources/Plasma/FeatureLib/pfCharacter/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/pfCharacterCreatable.h => Sources/Plasma/FeatureLib/pfCharacter/pfCharacterCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/pfMarkerInfo.cpp => Sources/Plasma/FeatureLib/pfCharacter/pfMarkerInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/pfMarkerInfo.h => Sources/Plasma/FeatureLib/pfCharacter/pfMarkerInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/pfMarkerMgr.cpp => Sources/Plasma/FeatureLib/pfCharacter/pfMarkerMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/pfMarkerMgr.h => Sources/Plasma/FeatureLib/pfCharacter/pfMarkerMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/plPlayerModifier.cpp => Sources/Plasma/FeatureLib/pfCharacter/plPlayerModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCharacter/plPlayerModifier.h => Sources/Plasma/FeatureLib/pfCharacter/plPlayerModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/CMakeLists.txt => Sources/Plasma/FeatureLib/pfConditional/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plANDConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plANDConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plANDConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plANDConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plActivatorConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plActivatorConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plActivatorConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plActivatorConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plAnimationEventConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plAnimationEventConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plAnimationEventConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plAnimationEventConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plConditionalObjectCreatable.h => Sources/Plasma/FeatureLib/pfConditional/plConditionalObjectCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plControlEventConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plControlEventConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plControlEventConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plControlEventConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plFacingConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plFacingConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plFacingConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plFacingConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plKeyPressConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plKeyPressConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plKeyPressConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plKeyPressConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerInBoxConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerInBoxConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerInBoxConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerInBoxConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerIntersectPlaneConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerIntersectPlaneConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerIntersectPlaneConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plLocalPlayerIntersectPlaneConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plORConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plORConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plORConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plORConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plObjectInBoxConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plObjectInBoxConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plObjectInBoxConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plObjectInBoxConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plObjectIntersectPlaneConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plObjectIntersectPlaneConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plObjectIntersectPlaneConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plObjectIntersectPlaneConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plPickedConditionalObject.cpp => Sources/Plasma/FeatureLib/pfConditional/plPickedConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConditional/plPickedConditionalObject.h => Sources/Plasma/FeatureLib/pfConditional/plPickedConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/CMakeLists.txt => Sources/Plasma/FeatureLib/pfConsole/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfAvatarConsoleCommands.cpp => Sources/Plasma/FeatureLib/pfConsole/pfAvatarConsoleCommands.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfCCRConsoleCommands.cpp => Sources/Plasma/FeatureLib/pfConsole/pfCCRConsoleCommands.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsole.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsole.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsole.h => Sources/Plasma/FeatureLib/pfConsole/pfConsole.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCmd.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsoleCmd.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCmd.h => Sources/Plasma/FeatureLib/pfConsole/pfConsoleCmd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommands.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommands.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleContext.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsoleContext.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleContext.h => Sources/Plasma/FeatureLib/pfConsole/pfConsoleContext.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCreatable.h => Sources/Plasma/FeatureLib/pfConsole/pfConsoleCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleDirSrc.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsoleDirSrc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleDirSrc.h => Sources/Plasma/FeatureLib/pfConsole/pfConsoleDirSrc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleEngine.cpp => Sources/Plasma/FeatureLib/pfConsole/pfConsoleEngine.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfConsoleEngine.h => Sources/Plasma/FeatureLib/pfConsole/pfConsoleEngine.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfDispatchLog.cpp => Sources/Plasma/FeatureLib/pfConsole/pfDispatchLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfDispatchLog.h => Sources/Plasma/FeatureLib/pfConsole/pfDispatchLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfConsole/pfGameConsoleCommands.cpp => Sources/Plasma/FeatureLib/pfConsole/pfGameConsoleCommands.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/CMakeLists.txt => Sources/Plasma/FeatureLib/pfCsrSrv/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/Pch.h => Sources/Plasma/FeatureLib/pfCsrSrv/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.cpp => Sources/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.h => Sources/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/CMakeLists.txt => Sources/Plasma/FeatureLib/pfGameGUIMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIButtonMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIButtonMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIButtonMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIButtonMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICheckBoxCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICheckBoxCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICheckBoxCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICheckBoxCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIClickMapCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIClickMapCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIClickMapCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIClickMapCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlHandlers.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlHandlers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlHandlers.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlHandlers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIControlMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICtrlGenerator.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICtrlGenerator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICtrlGenerator.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUICtrlGenerator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogHandlers.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogHandlers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDragBarCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDragBarCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDragBarCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDragBarCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDraggableMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDraggableMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDraggableMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDraggableMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDynDisplayCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDynDisplayCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDynDisplayCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDynDisplayCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIKnobCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIKnobCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIKnobCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIKnobCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListBoxMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListBoxMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListBoxMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListBoxMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMenuItem.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMenuItem.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMenuItem.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMenuItem.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMultiLineEditCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMultiLineEditCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMultiLineEditCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIMultiLineEditCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIPopUpMenu.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIPopUpMenu.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIPopUpMenu.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIPopUpMenu.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIProgressCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIProgressCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIProgressCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIProgressCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIRadioGroupCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIRadioGroupCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIRadioGroupCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIRadioGroupCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITagDefs.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITagDefs.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITagDefs.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITagDefs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITextBoxMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITextBoxMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITextBoxMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUITextBoxMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIUpDownPairMod.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIUpDownPairMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIUpDownPairMod.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIUpDownPairMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIValueCtrl.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIValueCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIValueCtrl.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIValueCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgr.cpp => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgr.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgrCreatable.h => Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGameGUIMgrCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/BlueSpiral/pfGmBlueSpiral.cpp => Sources/Plasma/FeatureLib/pfGameMgr/BlueSpiral/pfGmBlueSpiral.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/BlueSpiral/pfGmBlueSpiral.h => Sources/Plasma/FeatureLib/pfGameMgr/BlueSpiral/pfGmBlueSpiral.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/CMakeLists.txt => Sources/Plasma/FeatureLib/pfGameMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/ClimbingWall/pfGmClimbingWall.cpp => Sources/Plasma/FeatureLib/pfGameMgr/ClimbingWall/pfGmClimbingWall.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/ClimbingWall/pfGmClimbingWall.h => Sources/Plasma/FeatureLib/pfGameMgr/ClimbingWall/pfGmClimbingWall.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/Heek/pfGmHeek.cpp => Sources/Plasma/FeatureLib/pfGameMgr/Heek/pfGmHeek.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/Heek/pfGmHeek.h => Sources/Plasma/FeatureLib/pfGameMgr/Heek/pfGmHeek.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/Intern.h => Sources/Plasma/FeatureLib/pfGameMgr/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/Marker/pfGmMarker.cpp => Sources/Plasma/FeatureLib/pfGameMgr/Marker/pfGmMarker.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/Marker/pfGmMarker.h => Sources/Plasma/FeatureLib/pfGameMgr/Marker/pfGmMarker.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/Pch.h => Sources/Plasma/FeatureLib/pfGameMgr/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/TicTacToe/pfGmTicTacToe.cpp => Sources/Plasma/FeatureLib/pfGameMgr/TicTacToe/pfGmTicTacToe.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/TicTacToe/pfGmTicTacToe.h => Sources/Plasma/FeatureLib/pfGameMgr/TicTacToe/pfGmTicTacToe.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/VarSync/pfGmVarSync.cpp => Sources/Plasma/FeatureLib/pfGameMgr/VarSync/pfGmVarSync.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/VarSync/pfGmVarSync.h => Sources/Plasma/FeatureLib/pfGameMgr/VarSync/pfGmVarSync.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/pfGameMgr.cpp => Sources/Plasma/FeatureLib/pfGameMgr/pfGameMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/pfGameMgr.h => Sources/Plasma/FeatureLib/pfGameMgr/pfGameMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameMgr/pfGameMgrCreatables.h => Sources/Plasma/FeatureLib/pfGameMgr/pfGameMgrCreatables.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameScoreMgr/CMakeLists.txt => Sources/Plasma/FeatureLib/pfGameScoreMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameScoreMgr/pfGameScoreMgr.cpp => Sources/Plasma/FeatureLib/pfGameScoreMgr/pfGameScoreMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameScoreMgr/pfGameScoreMgr.h => Sources/Plasma/FeatureLib/pfGameScoreMgr/pfGameScoreMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfJournalBook/CMakeLists.txt => Sources/Plasma/FeatureLib/pfJournalBook/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.cpp => Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.h => Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBookCreatable.h => Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBookCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfKI/pfKI.cpp => Sources/Plasma/FeatureLib/pfKI/pfKI.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfKI/pfKI.h => Sources/Plasma/FeatureLib/pfKI/pfKI.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfKI/pfKICreatable.h => Sources/Plasma/FeatureLib/pfKI/pfKICreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfKI/pfPlayerBookMod.cpp => Sources/Plasma/FeatureLib/pfKI/pfPlayerBookMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfKI/pfPlayerBookMod.h => Sources/Plasma/FeatureLib/pfKI/pfPlayerBookMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/CMakeLists.txt => Sources/Plasma/FeatureLib/pfLocalizationMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationDataMgr.cpp => Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationDataMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationDataMgr.h => Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationDataMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationMgr.cpp => Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationMgr.h => Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizationMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizedString.cpp => Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizedString.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizedString.h => Sources/Plasma/FeatureLib/pfLocalizationMgr/pfLocalizedString.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLoginDialog/CMakeLists.txt => Sources/Plasma/FeatureLib/pfLoginDialog/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLoginDialog/pfLoginDialog.rc => Sources/Plasma/FeatureLib/pfLoginDialog/pfLoginDialog.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLoginDialog/plLoginDialog.cpp => Sources/Plasma/FeatureLib/pfLoginDialog/plLoginDialog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLoginDialog/plLoginDialog.h => Sources/Plasma/FeatureLib/pfLoginDialog/plLoginDialog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfLoginDialog/resource.h => Sources/Plasma/FeatureLib/pfLoginDialog/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/CMakeLists.txt => Sources/Plasma/FeatureLib/pfMessage/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfBackdoorMsg.h => Sources/Plasma/FeatureLib/pfMessage/pfBackdoorMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h => Sources/Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfGameGUIMsg.h => Sources/Plasma/FeatureLib/pfMessage/pfGameGUIMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfKIMsg.cpp => Sources/Plasma/FeatureLib/pfMessage/pfKIMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfKIMsg.h => Sources/Plasma/FeatureLib/pfMessage/pfKIMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfMarkerMsg.cpp => Sources/Plasma/FeatureLib/pfMessage/pfMarkerMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfMarkerMsg.h => Sources/Plasma/FeatureLib/pfMessage/pfMarkerMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfMessageCreatable.h => Sources/Plasma/FeatureLib/pfMessage/pfMessageCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfMovieEventMsg.cpp => Sources/Plasma/FeatureLib/pfMessage/pfMovieEventMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfMovieEventMsg.h => Sources/Plasma/FeatureLib/pfMessage/pfMovieEventMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/plArmatureEffectMsg.cpp => Sources/Plasma/FeatureLib/pfMessage/plArmatureEffectMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/plArmatureEffectMsg.h => Sources/Plasma/FeatureLib/pfMessage/plArmatureEffectMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/plClothingMsg.cpp => Sources/Plasma/FeatureLib/pfMessage/plClothingMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/plClothingMsg.h => Sources/Plasma/FeatureLib/pfMessage/plClothingMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/CMakeLists.txt => Sources/Plasma/FeatureLib/pfPython/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralGame.cpp => Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralGame.h => Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralGameGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralGameGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/BlueSpiral/pyBlueSpiralMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallGame.cpp => Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallGame.h => Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallGameGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallGameGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/ClimbingWall/pyClimbingWallMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekGame.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekGame.h => Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekGameGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekGameGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Heek/pyHeekMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerGame.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerGame.h => Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerGameGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerGameGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/Marker/pyMarkerMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTGame.cpp => Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTGame.h => Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTGameGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTGameGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/TicTacToe/pyTTTMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncGame.cpp => Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncGame.h => Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncGameGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncGameGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/VarSync/pyVarSyncMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameCli.cpp => Sources/Plasma/FeatureLib/pfPython/Games/pyGameCli.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameCli.h => Sources/Plasma/FeatureLib/pfPython/Games/pyGameCli.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/pyGameCliMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameMgrMsg.cpp => Sources/Plasma/FeatureLib/pfPython/Games/pyGameMgrMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameMgrMsg.h => Sources/Plasma/FeatureLib/pfPython/Games/pyGameMgrMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/Games/pyGameMgrMsgGlue.cpp => Sources/Plasma/FeatureLib/pfPython/Games/pyGameMgrMsgGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAccountManagement.cpp => Sources/Plasma/FeatureLib/pfPython/cyAccountManagement.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAccountManagement.h => Sources/Plasma/FeatureLib/pfPython/cyAccountManagement.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAccountManagementGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyAccountManagementGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAnimation.cpp => Sources/Plasma/FeatureLib/pfPython/cyAnimation.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAnimation.h => Sources/Plasma/FeatureLib/pfPython/cyAnimation.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAnimationGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyAnimationGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAvatar.cpp => Sources/Plasma/FeatureLib/pfPython/cyAvatar.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAvatar.h => Sources/Plasma/FeatureLib/pfPython/cyAvatar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyAvatarGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyAvatarGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyCamera.cpp => Sources/Plasma/FeatureLib/pfPython/cyCamera.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyCamera.h => Sources/Plasma/FeatureLib/pfPython/cyCamera.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyCameraGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyCameraGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyDraw.cpp => Sources/Plasma/FeatureLib/pfPython/cyDraw.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyDraw.h => Sources/Plasma/FeatureLib/pfPython/cyDraw.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyDrawGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyDrawGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyInputInterface.cpp => Sources/Plasma/FeatureLib/pfPython/cyInputInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyInputInterface.h => Sources/Plasma/FeatureLib/pfPython/cyInputInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyInputInterfaceGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyInputInterfaceGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp => Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyMisc.h => Sources/Plasma/FeatureLib/pfPython/cyMisc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyMiscGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyMiscGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyMiscGlue2.cpp => Sources/Plasma/FeatureLib/pfPython/cyMiscGlue2.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyMiscGlue3.cpp => Sources/Plasma/FeatureLib/pfPython/cyMiscGlue3.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyMiscGlue4.cpp => Sources/Plasma/FeatureLib/pfPython/cyMiscGlue4.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyParticleSys.cpp => Sources/Plasma/FeatureLib/pfPython/cyParticleSys.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyParticleSys.h => Sources/Plasma/FeatureLib/pfPython/cyParticleSys.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyParticleSysGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyParticleSysGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyPhysics.cpp => Sources/Plasma/FeatureLib/pfPython/cyPhysics.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyPhysics.h => Sources/Plasma/FeatureLib/pfPython/cyPhysics.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyPhysicsGlue.cpp => Sources/Plasma/FeatureLib/pfPython/cyPhysicsGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyPythonInterface.cpp => Sources/Plasma/FeatureLib/pfPython/cyPythonInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/cyPythonInterface.h => Sources/Plasma/FeatureLib/pfPython/cyPythonInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pfPythonCreatable.h => Sources/Plasma/FeatureLib/pfPython/pfPythonCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonFileMod.cpp => Sources/Plasma/FeatureLib/pfPython/plPythonFileMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonFileMod.h => Sources/Plasma/FeatureLib/pfPython/plPythonFileMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonHelpers.h => Sources/Plasma/FeatureLib/pfPython/plPythonHelpers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonPack.cpp => Sources/Plasma/FeatureLib/pfPython/plPythonPack.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonPack.h => Sources/Plasma/FeatureLib/pfPython/plPythonPack.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonParameter.h => Sources/Plasma/FeatureLib/pfPython/plPythonParameter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonSDLModifier.cpp => Sources/Plasma/FeatureLib/pfPython/plPythonSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonSDLModifier.h => Sources/Plasma/FeatureLib/pfPython/plPythonSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/plPythonSDLModifierGlue.cpp => Sources/Plasma/FeatureLib/pfPython/plPythonSDLModifierGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeInfoStruct.cpp => Sources/Plasma/FeatureLib/pfPython/pyAgeInfoStruct.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeInfoStruct.h => Sources/Plasma/FeatureLib/pfPython/pyAgeInfoStruct.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeInfoStructGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyAgeInfoStructGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeLinkStruct.cpp => Sources/Plasma/FeatureLib/pfPython/pyAgeLinkStruct.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeLinkStruct.h => Sources/Plasma/FeatureLib/pfPython/pyAgeLinkStruct.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeLinkStructGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyAgeLinkStructGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeVault.cpp => Sources/Plasma/FeatureLib/pfPython/pyAgeVault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeVault.h => Sources/Plasma/FeatureLib/pfPython/pyAgeVault.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAgeVaultGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyAgeVaultGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAlarm.cpp => Sources/Plasma/FeatureLib/pfPython/pyAlarm.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAlarm.h => Sources/Plasma/FeatureLib/pfPython/pyAlarm.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAudioControl.cpp => Sources/Plasma/FeatureLib/pfPython/pyAudioControl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAudioControl.h => Sources/Plasma/FeatureLib/pfPython/pyAudioControl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyAudioControlGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyAudioControlGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCCRMgr.cpp => Sources/Plasma/FeatureLib/pfPython/pyCCRMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCCRMgr.h => Sources/Plasma/FeatureLib/pfPython/pyCCRMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCCRMgrGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyCCRMgrGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCCRMgrGlue2.cpp => Sources/Plasma/FeatureLib/pfPython/pyCCRMgrGlue2.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCluster.cpp => Sources/Plasma/FeatureLib/pfPython/pyCluster.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCluster.h => Sources/Plasma/FeatureLib/pfPython/pyCluster.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyClusterGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyClusterGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyColor.cpp => Sources/Plasma/FeatureLib/pfPython/pyColor.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyColor.h => Sources/Plasma/FeatureLib/pfPython/pyColor.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyColorGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyColorGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCritterBrain.cpp => Sources/Plasma/FeatureLib/pfPython/pyCritterBrain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCritterBrain.h => Sources/Plasma/FeatureLib/pfPython/pyCritterBrain.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyCritterBrainGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyCritterBrainGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDniCoordinates.cpp => Sources/Plasma/FeatureLib/pfPython/pyDniCoordinates.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDniCoordinates.h => Sources/Plasma/FeatureLib/pfPython/pyDniCoordinates.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDniCoordinatesGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyDniCoordinatesGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDniInfoSource.cpp => Sources/Plasma/FeatureLib/pfPython/pyDniInfoSource.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDniInfoSource.h => Sources/Plasma/FeatureLib/pfPython/pyDniInfoSource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDniInfoSourceGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyDniInfoSourceGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDrawControl.cpp => Sources/Plasma/FeatureLib/pfPython/pyDrawControl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDrawControl.h => Sources/Plasma/FeatureLib/pfPython/pyDrawControl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDrawControlGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyDrawControlGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDynamicText.cpp => Sources/Plasma/FeatureLib/pfPython/pyDynamicText.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDynamicText.h => Sources/Plasma/FeatureLib/pfPython/pyDynamicText.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyDynamicTextGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyDynamicTextGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyEnum.cpp => Sources/Plasma/FeatureLib/pfPython/pyEnum.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyEnum.h => Sources/Plasma/FeatureLib/pfPython/pyEnum.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControl.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControl.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlButton.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlButton.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlButton.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlButton.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlButtonGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlButtonGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlCheckBox.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlCheckBox.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlCheckBox.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlCheckBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlCheckBoxGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlCheckBoxGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlClickMap.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlClickMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlClickMap.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlClickMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlClickMapGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlClickMapGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDragBar.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDragBar.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDragBar.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDragBar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDragBarGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDragBarGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDraggable.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDraggable.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDraggable.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDraggable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDraggableGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDraggableGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDynamicText.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDynamicText.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDynamicText.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDynamicText.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlDynamicTextGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlDynamicTextGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlEditBox.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlEditBox.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlEditBox.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlEditBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlEditBoxGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlEditBoxGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlListBox.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlListBox.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlListBox.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlListBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlListBoxGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlListBoxGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlMultiLineEdit.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlMultiLineEdit.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlMultiLineEdit.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlMultiLineEdit.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlMultiLineEditGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlMultiLineEditGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlRadioGroup.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlRadioGroup.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlRadioGroup.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlRadioGroup.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlRadioGroupGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlRadioGroupGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlTextBox.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlTextBox.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlTextBox.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlTextBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlTextBoxGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlTextBoxGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlValue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlValue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlValue.h => Sources/Plasma/FeatureLib/pfPython/pyGUIControlValue.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIControlValueGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIControlValueGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIDialog.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIDialog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIDialog.h => Sources/Plasma/FeatureLib/pfPython/pyGUIDialog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIDialogGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIDialogGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIPopUpMenu.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIPopUpMenu.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIPopUpMenu.h => Sources/Plasma/FeatureLib/pfPython/pyGUIPopUpMenu.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUIPopUpMenuGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUIPopUpMenuGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUISkin.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUISkin.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUISkin.h => Sources/Plasma/FeatureLib/pfPython/pyGUISkin.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGUISkinGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGUISkinGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGameScore.cpp => Sources/Plasma/FeatureLib/pfPython/pyGameScore.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGameScore.h => Sources/Plasma/FeatureLib/pfPython/pyGameScore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGameScoreGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGameScoreGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGeometry3.cpp => Sources/Plasma/FeatureLib/pfPython/pyGeometry3.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGeometry3.h => Sources/Plasma/FeatureLib/pfPython/pyGeometry3.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGeometry3Glue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGeometry3Glue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGlueHelpers.h => Sources/Plasma/FeatureLib/pfPython/pyGlueHelpers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGrassShader.cpp => Sources/Plasma/FeatureLib/pfPython/pyGrassShader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGrassShader.h => Sources/Plasma/FeatureLib/pfPython/pyGrassShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyGrassShaderGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyGrassShaderGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyImage.cpp => Sources/Plasma/FeatureLib/pfPython/pyImage.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyImage.h => Sources/Plasma/FeatureLib/pfPython/pyImage.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyImageGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyImageGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyJournalBook.cpp => Sources/Plasma/FeatureLib/pfPython/pyJournalBook.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyJournalBook.h => Sources/Plasma/FeatureLib/pfPython/pyJournalBook.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyJournalBookGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyJournalBookGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyKey.cpp => Sources/Plasma/FeatureLib/pfPython/pyKey.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyKey.h => Sources/Plasma/FeatureLib/pfPython/pyKey.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyKeyGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyKeyGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyKeyMap.cpp => Sources/Plasma/FeatureLib/pfPython/pyKeyMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyKeyMap.h => Sources/Plasma/FeatureLib/pfPython/pyKeyMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyKeyMapGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyKeyMapGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMarkerMgr.cpp => Sources/Plasma/FeatureLib/pfPython/pyMarkerMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMarkerMgr.h => Sources/Plasma/FeatureLib/pfPython/pyMarkerMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMarkerMgrGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyMarkerMgrGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMatrix44.cpp => Sources/Plasma/FeatureLib/pfPython/pyMatrix44.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMatrix44.h => Sources/Plasma/FeatureLib/pfPython/pyMatrix44.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMatrix44Glue.cpp => Sources/Plasma/FeatureLib/pfPython/pyMatrix44Glue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMoviePlayer.cpp => Sources/Plasma/FeatureLib/pfPython/pyMoviePlayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMoviePlayer.h => Sources/Plasma/FeatureLib/pfPython/pyMoviePlayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyMoviePlayerGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyMoviePlayerGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.cpp => Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.h => Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgrGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgrGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfo.cpp => Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfo.h => Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfoGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyNetServerSessionInfoGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNotify.cpp => Sources/Plasma/FeatureLib/pfPython/pyNotify.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNotify.h => Sources/Plasma/FeatureLib/pfPython/pyNotify.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyNotifyGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyNotifyGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyPlayer.cpp => Sources/Plasma/FeatureLib/pfPython/pyPlayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyPlayer.h => Sources/Plasma/FeatureLib/pfPython/pyPlayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyPlayerGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyPlayerGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySDL.cpp => Sources/Plasma/FeatureLib/pfPython/pySDL.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySDL.h => Sources/Plasma/FeatureLib/pfPython/pySDL.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySDLGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pySDLGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySceneObject.cpp => Sources/Plasma/FeatureLib/pfPython/pySceneObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySceneObject.h => Sources/Plasma/FeatureLib/pfPython/pySceneObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySceneObjectGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pySceneObjectGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyScoreMgr.cpp => Sources/Plasma/FeatureLib/pfPython/pyScoreMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyScoreMgr.h => Sources/Plasma/FeatureLib/pfPython/pyScoreMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyScoreMgrGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyScoreMgrGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySpawnPointInfo.cpp => Sources/Plasma/FeatureLib/pfPython/pySpawnPointInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySpawnPointInfo.h => Sources/Plasma/FeatureLib/pfPython/pySpawnPointInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySpawnPointInfoGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pySpawnPointInfoGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyStatusLog.cpp => Sources/Plasma/FeatureLib/pfPython/pyStatusLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyStatusLog.h => Sources/Plasma/FeatureLib/pfPython/pyStatusLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyStatusLogGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyStatusLogGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyStream.cpp => Sources/Plasma/FeatureLib/pfPython/pyStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyStream.h => Sources/Plasma/FeatureLib/pfPython/pyStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyStreamGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyStreamGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySwimCurrentInterface.cpp => Sources/Plasma/FeatureLib/pfPython/pySwimCurrentInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySwimCurrentInterface.h => Sources/Plasma/FeatureLib/pfPython/pySwimCurrentInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pySwimCurrentInterfaceGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pySwimCurrentInterfaceGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.cpp => Sources/Plasma/FeatureLib/pfPython/pyVault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVault.h => Sources/Plasma/FeatureLib/pfPython/pyVault.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoListNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoListNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoListNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoListNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoListNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoListNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeInfoNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeLinkNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeLinkNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeLinkNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeLinkNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultAgeLinkNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultAgeLinkNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultChronicleNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultChronicleNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultChronicleNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultChronicleNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultChronicleNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultChronicleNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultFolderNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultFolderNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultFolderNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultFolderNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultFolderNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultFolderNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultImageNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultImageNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultImageNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultImageNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultImageNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultImageNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultMarkerGameNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultMarkerGameNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultMarkerGameNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultMarkerGameNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultMarkerGameNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultMarkerGameNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeRef.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultNodeRef.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeRef.h => Sources/Plasma/FeatureLib/pfPython/pyVaultNodeRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeRefGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultNodeRefGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoListNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoListNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoListNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoListNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoListNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoListNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerInfoNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultPlayerNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultSDLNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultSDLNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultSDLNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultSDLNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultSDLNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultSDLNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultSystemNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultSystemNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultSystemNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultSystemNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultSystemNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultSystemNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultTextNoteNode.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultTextNoteNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultTextNoteNode.h => Sources/Plasma/FeatureLib/pfPython/pyVaultTextNoteNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyVaultTextNoteNodeGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyVaultTextNoteNodeGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyWaveSet.cpp => Sources/Plasma/FeatureLib/pfPython/pyWaveSet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyWaveSet.h => Sources/Plasma/FeatureLib/pfPython/pyWaveSet.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfPython/pyWaveSetGlue.cpp => Sources/Plasma/FeatureLib/pfPython/pyWaveSetGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSecurePreloader/CMakeLists.txt => Sources/Plasma/FeatureLib/pfSecurePreloader/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloader.cpp => Sources/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloader.h => Sources/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloaderCreatable.h => Sources/Plasma/FeatureLib/pfSecurePreloader/pfSecurePreloaderCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/CMakeLists.txt => Sources/Plasma/FeatureLib/pfStackTrace/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfArray.h => Sources/Plasma/FeatureLib/pfStackTrace/pfArray.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfMapFile.cpp => Sources/Plasma/FeatureLib/pfStackTrace/pfMapFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfMapFile.h => Sources/Plasma/FeatureLib/pfStackTrace/pfMapFile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfMapFileEntry.cpp => Sources/Plasma/FeatureLib/pfStackTrace/pfMapFileEntry.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfMapFileEntry.h => Sources/Plasma/FeatureLib/pfStackTrace/pfMapFileEntry.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfPrintStackTrace.cpp => Sources/Plasma/FeatureLib/pfStackTrace/pfPrintStackTrace.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfPrintStackTrace.h => Sources/Plasma/FeatureLib/pfStackTrace/pfPrintStackTrace.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfStackTrace.cpp => Sources/Plasma/FeatureLib/pfStackTrace/pfStackTrace.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfStackTrace.h => Sources/Plasma/FeatureLib/pfStackTrace/pfStackTrace.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfTextFile.cpp => Sources/Plasma/FeatureLib/pfStackTrace/pfTextFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfStackTrace/pfTextFile.h => Sources/Plasma/FeatureLib/pfStackTrace/pfTextFile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/CMakeLists.txt => Sources/Plasma/FeatureLib/pfSurface/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/pfSurfaceCreatable.h => Sources/Plasma/FeatureLib/pfSurface/pfSurfaceCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plDistOpacityMod.cpp => Sources/Plasma/FeatureLib/pfSurface/plDistOpacityMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plDistOpacityMod.h => Sources/Plasma/FeatureLib/pfSurface/plDistOpacityMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityLay.cpp => Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityLay.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityLay.h => Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityLay.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityMod.cpp => Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityMod.h => Sources/Plasma/FeatureLib/pfSurface/plFadeOpacityMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plGrabCubeMap.cpp => Sources/Plasma/FeatureLib/pfSurface/plGrabCubeMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plGrabCubeMap.h => Sources/Plasma/FeatureLib/pfSurface/plGrabCubeMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerAVI.cpp => Sources/Plasma/FeatureLib/pfSurface/plLayerAVI.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerAVI.h => Sources/Plasma/FeatureLib/pfSurface/plLayerAVI.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerMovie.cpp => Sources/Plasma/FeatureLib/pfSurface/plLayerMovie.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerMovie.h => Sources/Plasma/FeatureLib/pfSurface/plLayerMovie.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/CMakeLists.txt => Sources/Plasma/NucleusLib/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/CMakeLists.txt => Sources/Plasma/NucleusLib/inc/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/hsGMatState.h => Sources/Plasma/NucleusLib/inc/hsGMatState.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/hsGMatState.inl => Sources/Plasma/NucleusLib/inc/hsGMatState.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/hsResMgr.h => Sources/Plasma/NucleusLib/inc/hsResMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/hsTimer.h => Sources/Plasma/NucleusLib/inc/hsTimer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plAudible.h => Sources/Plasma/NucleusLib/inc/plAudible.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plCCRMgrBase.h => Sources/Plasma/NucleusLib/inc/plCCRMgrBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plClassIndexMacros.h => Sources/Plasma/NucleusLib/inc/plClassIndexMacros.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plCreatableIndex.h => Sources/Plasma/NucleusLib/inc/plCreatableIndex.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plCreatableStrings.h => Sources/Plasma/NucleusLib/inc/plCreatableStrings.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plDrawable.h => Sources/Plasma/NucleusLib/inc/plDrawable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plNetServerDatabaseStructClassIndexes.h => Sources/Plasma/NucleusLib/inc/plNetServerDatabaseStructClassIndexes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plPhysical.h => Sources/Plasma/NucleusLib/inc/plPhysical.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plPipeResReq.h => Sources/Plasma/NucleusLib/inc/plPipeResReq.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plPipeline.h => Sources/Plasma/NucleusLib/inc/plPipeline.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plProfile.h => Sources/Plasma/NucleusLib/inc/plProfile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plProfileManager.cpp => Sources/Plasma/NucleusLib/inc/plProfileManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plProfileManager.h => Sources/Plasma/NucleusLib/inc/plProfileManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plRefFlags.h => Sources/Plasma/NucleusLib/inc/plRefFlags.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/plgDispatch.h => Sources/Plasma/NucleusLib/inc/plgDispatch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/pnAllCreatables.h => Sources/Plasma/NucleusLib/inc/pnAllCreatables.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/pnNucleusCreatables.h => Sources/Plasma/NucleusLib/inc/pnNucleusCreatables.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/inc/pnSingletons.cpp => Sources/Plasma/NucleusLib/inc/pnSingletons.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAddrInfo/CMakeLists.txt => Sources/Plasma/NucleusLib/pnAddrInfo/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAddrInfo/pnAddrInfo.cpp => Sources/Plasma/NucleusLib/pnAddrInfo/pnAddrInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAddrInfo/pnAddrInfo.h => Sources/Plasma/NucleusLib/pnAddrInfo/pnAddrInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/CMakeLists.txt => Sources/Plasma/NucleusLib/pnAsyncCore/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Pch.h => Sources/Plasma/NucleusLib/pnAsyncCore/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcAllIncludes.h => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcCore.h => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcIo.h => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcIo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcLog.cpp => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcLog.h => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcThread.h => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcThread.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcTimer.h => Sources/Plasma/NucleusLib/pnAsyncCore/Private/pnAcTimer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCore/pnAsyncCore.h => Sources/Plasma/NucleusLib/pnAsyncCore/pnAsyncCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/CMakeLists.txt => Sources/Plasma/NucleusLib/pnAsyncCoreExe/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Pch.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNt.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNt.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNt.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtFile.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtInt.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtInt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtSocket.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtSocket.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtThread.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Nt/pnAceNtThread.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Unix/pnAceUx.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Unix/pnAceUx.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9x.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9x.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9x.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9x.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xFile.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xInt.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xInt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xSocket.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xSocket.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xThread.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/W9x/pnAceW9xThread.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Win32/pnAceW32Dns.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Win32/pnAceW32Dns.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Win32/pnAceW32Thread.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/Win32/pnAceW32Thread.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/pnAceInt.h => Sources/Plasma/NucleusLib/pnAsyncCoreExe/Private/pnAceInt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceCore.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceCore.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceIo.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceIo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceLog.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceThread.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceThread.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceTimer.cpp => Sources/Plasma/NucleusLib/pnAsyncCoreExe/pnAceTimer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrash/CMakeLists.txt => Sources/Plasma/NucleusLib/pnCrash/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrash/Pch.h => Sources/Plasma/NucleusLib/pnCrash/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrash/pnCrash.bat => Sources/Plasma/NucleusLib/pnCrash/pnCrash.bat
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrash/pnCrash.cpp => Sources/Plasma/NucleusLib/pnCrash/pnCrash.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrash/pnCrash.h => Sources/Plasma/NucleusLib/pnCrash/pnCrash.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrash/pnCrash.py => Sources/Plasma/NucleusLib/pnCrash/pnCrash.py
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/CMakeLists.txt => Sources/Plasma/NucleusLib/pnCrashExe/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/Pch.h => Sources/Plasma/NucleusLib/pnCrashExe/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/Win32/W32Int.h => Sources/Plasma/NucleusLib/pnCrashExe/Win32/W32Int.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreError.cpp => Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreError.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreGui.cpp => Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreGui.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreMail.cpp => Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreMail.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreTools.cpp => Sources/Plasma/NucleusLib/pnCrashExe/Win32/pnCreTools.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/CMakeLists.txt => Sources/Plasma/NucleusLib/pnCsrCli/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/Pch.h => Sources/Plasma/NucleusLib/pnCsrCli/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/pnCsrCli.cpp => Sources/Plasma/NucleusLib/pnCsrCli/pnCsrCli.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/pnCsrCli.h => Sources/Plasma/NucleusLib/pnCsrCli/pnCsrCli.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/CMakeLists.txt => Sources/Plasma/NucleusLib/pnCsrNet/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/Pch.h => Sources/Plasma/NucleusLib/pnCsrNet/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/pnCsrNet.cpp => Sources/Plasma/NucleusLib/pnCsrNet/pnCsrNet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/pnCsrNet.h => Sources/Plasma/NucleusLib/pnCsrNet/pnCsrNet.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnDispatch/CMakeLists.txt => Sources/Plasma/NucleusLib/pnDispatch/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnDispatch/plDispatch.cpp => Sources/Plasma/NucleusLib/pnDispatch/plDispatch.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnDispatch/plDispatch.h => Sources/Plasma/NucleusLib/pnDispatch/plDispatch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnDispatch/plDispatchLogBase.cpp => Sources/Plasma/NucleusLib/pnDispatch/plDispatchLogBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnDispatch/plDispatchLogBase.h => Sources/Plasma/NucleusLib/pnDispatch/plDispatchLogBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnDispatch/pnDispatchCreatable.h => Sources/Plasma/NucleusLib/pnDispatch/pnDispatchCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnFactory/CMakeLists.txt => Sources/Plasma/NucleusLib/pnFactory/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnFactory/plCreatable.h => Sources/Plasma/NucleusLib/pnFactory/plCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnFactory/plCreator.h => Sources/Plasma/NucleusLib/pnFactory/plCreator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnFactory/plFactory.cpp => Sources/Plasma/NucleusLib/pnFactory/plFactory.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnFactory/plFactory.h => Sources/Plasma/NucleusLib/pnFactory/plFactory.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/BlueSpiral/pnGmBlueSpiral.cpp => Sources/Plasma/NucleusLib/pnGameMgr/BlueSpiral/pnGmBlueSpiral.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/BlueSpiral/pnGmBlueSpiral.h => Sources/Plasma/NucleusLib/pnGameMgr/BlueSpiral/pnGmBlueSpiral.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/CMakeLists.txt => Sources/Plasma/NucleusLib/pnGameMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/ClimbingWall/pnGmClimbingWall.cpp => Sources/Plasma/NucleusLib/pnGameMgr/ClimbingWall/pnGmClimbingWall.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/ClimbingWall/pnGmClimbingWall.h => Sources/Plasma/NucleusLib/pnGameMgr/ClimbingWall/pnGmClimbingWall.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/Heek/pnGmHeek.cpp => Sources/Plasma/NucleusLib/pnGameMgr/Heek/pnGmHeek.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/Heek/pnGmHeek.h => Sources/Plasma/NucleusLib/pnGameMgr/Heek/pnGmHeek.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/Intern.h => Sources/Plasma/NucleusLib/pnGameMgr/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/Marker/pnGmMarker.cpp => Sources/Plasma/NucleusLib/pnGameMgr/Marker/pnGmMarker.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/Marker/pnGmMarker.h => Sources/Plasma/NucleusLib/pnGameMgr/Marker/pnGmMarker.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/Pch.h => Sources/Plasma/NucleusLib/pnGameMgr/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/TicTacToe/pnGmTicTacToe.cpp => Sources/Plasma/NucleusLib/pnGameMgr/TicTacToe/pnGmTicTacToe.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/TicTacToe/pnGmTicTacToe.h => Sources/Plasma/NucleusLib/pnGameMgr/TicTacToe/pnGmTicTacToe.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/VarSync/pnGmVarSync.cpp => Sources/Plasma/NucleusLib/pnGameMgr/VarSync/pnGmVarSync.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/VarSync/pnGmVarSync.h => Sources/Plasma/NucleusLib/pnGameMgr/VarSync/pnGmVarSync.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/pnGameMgr.cpp => Sources/Plasma/NucleusLib/pnGameMgr/pnGameMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnGameMgr/pnGameMgr.h => Sources/Plasma/NucleusLib/pnGameMgr/pnGameMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/CMakeLists.txt => Sources/Plasma/NucleusLib/pnIni/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Intern.h => Sources/Plasma/NucleusLib/pnIni/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Pch.h => Sources/Plasma/NucleusLib/pnIni/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h => Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h => Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.cpp => Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h => Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.cpp => Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h => Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIni/pnIni.h => Sources/Plasma/NucleusLib/pnIni/pnIni.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIniExe/CMakeLists.txt => Sources/Plasma/NucleusLib/pnIniExe/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIniExe/Pch.h => Sources/Plasma/NucleusLib/pnIniExe/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIniExe/Private/Win32/pnW32IniChange.cpp => Sources/Plasma/NucleusLib/pnIniExe/Private/Win32/pnW32IniChange.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnIniExe/Private/pnIniSrv.cpp => Sources/Plasma/NucleusLib/pnIniExe/Private/pnIniSrv.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/CMakeLists.txt => Sources/Plasma/NucleusLib/pnInputCore/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plControlDefinition.h => Sources/Plasma/NucleusLib/pnInputCore/plControlDefinition.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plControlEventCodes.h => Sources/Plasma/NucleusLib/pnInputCore/plControlEventCodes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plInputMap.cpp => Sources/Plasma/NucleusLib/pnInputCore/plInputMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plInputMap.h => Sources/Plasma/NucleusLib/pnInputCore/plInputMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plKeyDef.h => Sources/Plasma/NucleusLib/pnInputCore/plKeyDef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plKeyMap.h => Sources/Plasma/NucleusLib/pnInputCore/plKeyMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnInputCore/plOSMsg.h => Sources/Plasma/NucleusLib/pnInputCore/plOSMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/CMakeLists.txt => Sources/Plasma/NucleusLib/pnKeyedObject/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/hsKeyedObject.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/hsKeyedObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/hsKeyedObject.h => Sources/Plasma/NucleusLib/pnKeyedObject/hsKeyedObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plFixedKey.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/plFixedKey.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plFixedKey.h => Sources/Plasma/NucleusLib/pnKeyedObject/plFixedKey.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plKey.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/plKey.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plKey.h => Sources/Plasma/NucleusLib/pnKeyedObject/plKey.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plKeyImp.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/plKeyImp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plKeyImp.h => Sources/Plasma/NucleusLib/pnKeyedObject/plKeyImp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plMsgForwarder.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/plMsgForwarder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plMsgForwarder.h => Sources/Plasma/NucleusLib/pnKeyedObject/plMsgForwarder.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plReceiver.h => Sources/Plasma/NucleusLib/pnKeyedObject/plReceiver.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plTempKey.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/plTempKey.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plTempKey.h => Sources/Plasma/NucleusLib/pnKeyedObject/plTempKey.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plUoid.cpp => Sources/Plasma/NucleusLib/pnKeyedObject/plUoid.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/plUoid.h => Sources/Plasma/NucleusLib/pnKeyedObject/plUoid.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnKeyedObject/pnKeyedObjectCreatable.h => Sources/Plasma/NucleusLib/pnKeyedObject/pnKeyedObjectCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMail/CMakeLists.txt => Sources/Plasma/NucleusLib/pnMail/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMail/Pch.h => Sources/Plasma/NucleusLib/pnMail/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMail/pnMail.cpp => Sources/Plasma/NucleusLib/pnMail/pnMail.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMail/pnMail.h => Sources/Plasma/NucleusLib/pnMail/pnMail.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/CMakeLists.txt => Sources/Plasma/NucleusLib/pnMessage/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plAttachMsg.h => Sources/Plasma/NucleusLib/pnMessage/plAttachMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plAudioSysMsg.h => Sources/Plasma/NucleusLib/pnMessage/plAudioSysMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plCameraMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plCameraMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plCameraMsg.h => Sources/Plasma/NucleusLib/pnMessage/plCameraMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plClientMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plClientMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plClientMsg.h => Sources/Plasma/NucleusLib/pnMessage/plClientMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plCmdIfaceModMsg.h => Sources/Plasma/NucleusLib/pnMessage/plCmdIfaceModMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plCollisionMsg.h => Sources/Plasma/NucleusLib/pnMessage/plCollisionMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plCorrectionMsg.h => Sources/Plasma/NucleusLib/pnMessage/plCorrectionMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plCursorChangeMsg.h => Sources/Plasma/NucleusLib/pnMessage/plCursorChangeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plDISpansMsg.h => Sources/Plasma/NucleusLib/pnMessage/plDISpansMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plEnableMsg.h => Sources/Plasma/NucleusLib/pnMessage/plEnableMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plEnvEffectMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plEnvEffectMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plEnvEffectMsg.h => Sources/Plasma/NucleusLib/pnMessage/plEnvEffectMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plEventCallbackMsg.h => Sources/Plasma/NucleusLib/pnMessage/plEventCallbackMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plFakeOutMsg.h => Sources/Plasma/NucleusLib/pnMessage/plFakeOutMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plIntRefMsg.h => Sources/Plasma/NucleusLib/pnMessage/plIntRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plMessage.cpp => Sources/Plasma/NucleusLib/pnMessage/plMessage.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plMessage.h => Sources/Plasma/NucleusLib/pnMessage/plMessage.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plMessageWithCallbacks.cpp => Sources/Plasma/NucleusLib/pnMessage/plMessageWithCallbacks.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plMessageWithCallbacks.h => Sources/Plasma/NucleusLib/pnMessage/plMessageWithCallbacks.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plMultiModMsg.h => Sources/Plasma/NucleusLib/pnMessage/plMultiModMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plNodeChangeMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plNodeChangeMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plNodeChangeMsg.h => Sources/Plasma/NucleusLib/pnMessage/plNodeChangeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plNodeRefMsg.h => Sources/Plasma/NucleusLib/pnMessage/plNodeRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plNotifyMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plNotifyMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plNotifyMsg.h => Sources/Plasma/NucleusLib/pnMessage/plNotifyMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plObjRefMsg.h => Sources/Plasma/NucleusLib/pnMessage/plObjRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plPipeResMakeMsg.h => Sources/Plasma/NucleusLib/pnMessage/plPipeResMakeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plPlayerPageMsg.h => Sources/Plasma/NucleusLib/pnMessage/plPlayerPageMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plProxyDrawMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plProxyDrawMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plProxyDrawMsg.h => Sources/Plasma/NucleusLib/pnMessage/plProxyDrawMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plRefMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plRefMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plRefMsg.h => Sources/Plasma/NucleusLib/pnMessage/plRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plRemoteAvatarInfoMsg.h => Sources/Plasma/NucleusLib/pnMessage/plRemoteAvatarInfoMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSDLModifierMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plSDLModifierMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSDLModifierMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSDLModifierMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSDLNotificationMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSDLNotificationMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSatisfiedMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSatisfiedMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSelfDestructMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSelfDestructMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plServerReplyMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plServerReplyMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plServerReplyMsg.h => Sources/Plasma/NucleusLib/pnMessage/plServerReplyMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSetNetGroupIDMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSetNetGroupIDMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSharedStateMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSharedStateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSimulationMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plSimulationMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSimulationMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSimulationMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSimulationSynchMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSimulationSynchMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSingleModMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSingleModMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSoundMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plSoundMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plSoundMsg.h => Sources/Plasma/NucleusLib/pnMessage/plSoundMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plTimeMsg.cpp => Sources/Plasma/NucleusLib/pnMessage/plTimeMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plTimeMsg.h => Sources/Plasma/NucleusLib/pnMessage/plTimeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/plWarpMsg.h => Sources/Plasma/NucleusLib/pnMessage/plWarpMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnMessage/pnMessageCreatable.h => Sources/Plasma/NucleusLib/pnMessage/pnMessageCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/CMakeLists.txt => Sources/Plasma/NucleusLib/pnModifier/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plConditionalObject.cpp => Sources/Plasma/NucleusLib/pnModifier/plConditionalObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plConditionalObject.h => Sources/Plasma/NucleusLib/pnModifier/plConditionalObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plLogicModBase.cpp => Sources/Plasma/NucleusLib/pnModifier/plLogicModBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plLogicModBase.h => Sources/Plasma/NucleusLib/pnModifier/plLogicModBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plModifier.cpp => Sources/Plasma/NucleusLib/pnModifier/plModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plModifier.h => Sources/Plasma/NucleusLib/pnModifier/plModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plMultiModifier.cpp => Sources/Plasma/NucleusLib/pnModifier/plMultiModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plMultiModifier.h => Sources/Plasma/NucleusLib/pnModifier/plMultiModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plSingleModifier.cpp => Sources/Plasma/NucleusLib/pnModifier/plSingleModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/plSingleModifier.h => Sources/Plasma/NucleusLib/pnModifier/plSingleModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnModifier/pnModifierCreatable.h => Sources/Plasma/NucleusLib/pnModifier/pnModifierCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/CMakeLists.txt => Sources/Plasma/NucleusLib/pnNetBase/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Intern.h => Sources/Plasma/NucleusLib/pnNetBase/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Pch.h => Sources/Plasma/NucleusLib/pnNetBase/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAges.cpp => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAges.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAges.h => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAges.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAllIncludes.h => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbEchoMsgs.h => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbEchoMsgs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbError.cpp => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbError.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbError.h => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbError.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbProtocol.cpp => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbProtocol.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbProtocol.h => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbProtocol.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.h => Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbAuthKey.hpp => Sources/Plasma/NucleusLib/pnNetBase/pnNbAuthKey.hpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConst.h => Sources/Plasma/NucleusLib/pnNetBase/pnNbConst.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbCsrKey.hpp => Sources/Plasma/NucleusLib/pnNetBase/pnNbCsrKey.hpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbGameKey.hpp => Sources/Plasma/NucleusLib/pnNetBase/pnNbGameKey.hpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbGateKeeperKey.hpp => Sources/Plasma/NucleusLib/pnNetBase/pnNbGateKeeperKey.hpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNetBase.h => Sources/Plasma/NucleusLib/pnNetBase/pnNetBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/CMakeLists.txt => Sources/Plasma/NucleusLib/pnNetCli/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/Intern.h => Sources/Plasma/NucleusLib/pnNetCli/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/Pch.h => Sources/Plasma/NucleusLib/pnNetCli/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/pnNcChannel.cpp => Sources/Plasma/NucleusLib/pnNetCli/pnNcChannel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/pnNcCli.cpp => Sources/Plasma/NucleusLib/pnNetCli/pnNcCli.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/pnNcEncrypt.cpp => Sources/Plasma/NucleusLib/pnNetCli/pnNcEncrypt.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/pnNcUtils.cpp => Sources/Plasma/NucleusLib/pnNetCli/pnNcUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCli/pnNetCli.h => Sources/Plasma/NucleusLib/pnNetCli/pnNetCli.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/CMakeLists.txt => Sources/Plasma/NucleusLib/pnNetCommon/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plGenericVar.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plGenericVar.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plGenericVar.h => Sources/Plasma/NucleusLib/pnNetCommon/plGenericVar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetApp.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plNetApp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetApp.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetApp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetCommonStats.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetCommonStats.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetGroup.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plNetGroup.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetGroup.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetGroup.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetResManager.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plNetResManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetResManager.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetResManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetServers.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plNetServers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetServers.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetServers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetSharedState.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plNetSharedState.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plNetSharedState.h => Sources/Plasma/NucleusLib/pnNetCommon/plNetSharedState.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plSDLTypes.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plSDLTypes.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plSDLTypes.h => Sources/Plasma/NucleusLib/pnNetCommon/plSDLTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plSynchedObject.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plSynchedObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plSynchedObject.h => Sources/Plasma/NucleusLib/pnNetCommon/plSynchedObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plSynchedValue.cpp => Sources/Plasma/NucleusLib/pnNetCommon/plSynchedValue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/plSynchedValue.h => Sources/Plasma/NucleusLib/pnNetCommon/plSynchedValue.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.cpp => Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.h => Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommonCreatable.h => Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommonCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/CMakeLists.txt => Sources/Plasma/NucleusLib/pnNetDiag/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/Intern.h => Sources/Plasma/NucleusLib/pnNetDiag/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/Pch.h => Sources/Plasma/NucleusLib/pnNetDiag/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/pnNdDns.cpp => Sources/Plasma/NucleusLib/pnNetDiag/pnNdDns.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/pnNdIcmp.cpp => Sources/Plasma/NucleusLib/pnNetDiag/pnNdIcmp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/pnNdTcp.cpp => Sources/Plasma/NucleusLib/pnNetDiag/pnNdTcp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/pnNetDiag.cpp => Sources/Plasma/NucleusLib/pnNetDiag/pnNetDiag.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/pnNetDiag.h => Sources/Plasma/NucleusLib/pnNetDiag/pnNetDiag.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetDiag/pnNetSys.cpp => Sources/Plasma/NucleusLib/pnNetDiag/pnNetSys.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/Intern.h => Sources/Plasma/NucleusLib/pnNetLog/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/Pch.h => Sources/Plasma/NucleusLib/pnNetLog/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/pnNetLog.h => Sources/Plasma/NucleusLib/pnNetLog/pnNetLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/pnNlApi.cpp => Sources/Plasma/NucleusLib/pnNetLog/pnNlApi.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/pnNlCli.cpp => Sources/Plasma/NucleusLib/pnNetLog/pnNlCli.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/pnNlSrv.cpp => Sources/Plasma/NucleusLib/pnNetLog/pnNlSrv.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/CMakeLists.txt => Sources/Plasma/NucleusLib/pnNetProtocol/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Intern.h => Sources/Plasma/NucleusLib/pnNetProtocol/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Pch.h => Sources/Plasma/NucleusLib/pnNetProtocol/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Auth/pnNpCli2Auth.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Auth/pnNpCli2Auth.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Auth/pnNpCli2Auth.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Auth/pnNpCli2Auth.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2File/pnNpCli2File.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2File/pnNpCli2File.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2File/pnNpCli2File.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2File/pnNpCli2File.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Game/pnNpCli2Game.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Game/pnNpCli2Game.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Game/pnNpCli2Game.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Game/pnNpCli2Game.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2GateKeeper/pnNpCli2GateKeeper.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2GateKeeper/pnNpCli2GateKeeper.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2GateKeeper/pnNpCli2GateKeeper.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2GateKeeper/pnNpCli2GateKeeper.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Db/pnNpSrv2Db.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Db/pnNpSrv2Db.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Db/pnNpSrv2Db.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Db/pnNpSrv2Db.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Log/pnNpSrv2Log.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Log/pnNpSrv2Log.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Log/pnNpSrv2Log.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Log/pnNpSrv2Log.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Mcp/pnNpSrv2Mcp.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Mcp/pnNpSrv2Mcp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Mcp/pnNpSrv2Mcp.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Mcp/pnNpSrv2Mcp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Score/pnNpSrv2Score.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Score/pnNpSrv2Score.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Score/pnNpSrv2Score.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Score/pnNpSrv2Score.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2State/pnNpSrv2State.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2State/pnNpSrv2State.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2State/pnNpSrv2State.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2State/pnNpSrv2State.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Vault/pnNpSrv2Vault.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Vault/pnNpSrv2Vault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Vault/pnNpSrv2Vault.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Srv2Vault/pnNpSrv2Vault.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpAllIncludes.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.cpp => Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.h => Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/pnNetProtocol.h => Sources/Plasma/NucleusLib/pnNetProtocol/pnNetProtocol.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/Intern.h => Sources/Plasma/NucleusLib/pnOraLib/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/Pch.h => Sources/Plasma/NucleusLib/pnOraLib/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp => Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h => Sources/Plasma/NucleusLib/pnOraLib/pnOraLib.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/CMakeLists.txt => Sources/Plasma/NucleusLib/pnProduct/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Pch.h => Sources/Plasma/NucleusLib/pnProduct/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrAllIncludes.h => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBranchId.cpp => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBranchId.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBranchId.h => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBranchId.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildId.cpp => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildId.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildId.h => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildId.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildString.cpp => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildString.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildString.h => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildString.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildType.cpp => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildType.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildType.h => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrBuildType.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrProductId.cpp => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrProductId.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/Private/pnPrProductId.h => Sources/Plasma/NucleusLib/pnProduct/Private/pnPrProductId.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnProduct/pnProduct.h => Sources/Plasma/NucleusLib/pnProduct/pnProduct.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/CMakeLists.txt => Sources/Plasma/NucleusLib/pnSceneObject/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plAudioInterface.cpp => Sources/Plasma/NucleusLib/pnSceneObject/plAudioInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plAudioInterface.h => Sources/Plasma/NucleusLib/pnSceneObject/plAudioInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plCoordinateInterface.cpp => Sources/Plasma/NucleusLib/pnSceneObject/plCoordinateInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plCoordinateInterface.h => Sources/Plasma/NucleusLib/pnSceneObject/plCoordinateInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plDrawInterface.cpp => Sources/Plasma/NucleusLib/pnSceneObject/plDrawInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plDrawInterface.h => Sources/Plasma/NucleusLib/pnSceneObject/plDrawInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plObjInterface.cpp => Sources/Plasma/NucleusLib/pnSceneObject/plObjInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plObjInterface.h => Sources/Plasma/NucleusLib/pnSceneObject/plObjInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plSceneObject.cpp => Sources/Plasma/NucleusLib/pnSceneObject/plSceneObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plSceneObject.h => Sources/Plasma/NucleusLib/pnSceneObject/plSceneObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plSimulationInterface.cpp => Sources/Plasma/NucleusLib/pnSceneObject/plSimulationInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/plSimulationInterface.h => Sources/Plasma/NucleusLib/pnSceneObject/plSimulationInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSceneObject/pnSceneObjectCreatable.h => Sources/Plasma/NucleusLib/pnSceneObject/pnSceneObjectCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSimpleNet/CMakeLists.txt => Sources/Plasma/NucleusLib/pnSimpleNet/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSimpleNet/Pch.h => Sources/Plasma/NucleusLib/pnSimpleNet/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.cpp => Sources/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.h => Sources/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Intern.h => Sources/Plasma/NucleusLib/pnSqlLib/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Pch.h => Sources/Plasma/NucleusLib/pnSqlLib/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlAllIncludes.h => Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlConn.cpp => Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlConn.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlConn.h => Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlConn.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlUtil.cpp => Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlUtil.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlUtil.h => Sources/Plasma/NucleusLib/pnSqlLib/Private/pnSqlUtil.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnSqlLib/pnSqlLib.h => Sources/Plasma/NucleusLib/pnSqlLib/pnSqlLib.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/CMakeLists.txt => Sources/Plasma/NucleusLib/pnTimer/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/hsTimer.cpp => Sources/Plasma/NucleusLib/pnTimer/hsTimer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/plTimedValue.cpp => Sources/Plasma/NucleusLib/pnTimer/plTimedValue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/plTimedValue.h => Sources/Plasma/NucleusLib/pnTimer/plTimedValue.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/plTimerCallbackManager.cpp => Sources/Plasma/NucleusLib/pnTimer/plTimerCallbackManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/plTimerCallbackManager.h => Sources/Plasma/NucleusLib/pnTimer/plTimerCallbackManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/pnBranchDate.cpp => Sources/Plasma/NucleusLib/pnTimer/pnBranchDate.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/pnBuildDates.cpp => Sources/Plasma/NucleusLib/pnTimer/pnBuildDates.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/pnBuildDates.h => Sources/Plasma/NucleusLib/pnTimer/pnBuildDates.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnTimer/pnTimerCreatable.h => Sources/Plasma/NucleusLib/pnTimer/pnTimerCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/CMakeLists.txt => Sources/Plasma/NucleusLib/pnUtils/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Intern.h => Sources/Plasma/NucleusLib/pnUtils/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Pch.h => Sources/Plasma/NucleusLib/pnUtils/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Unix/pnUtUxStr.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Unix/pnUtUxStr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Unix/pnUtUxSync.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Unix/pnUtUxSync.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Unix/pnUtUxUuid.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Unix/pnUtUxUuid.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/W32Int.h => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/W32Int.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Addr.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Addr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Dll.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Dll.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Misc.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Misc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Path.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Path.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Str.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Str.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Sync.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Sync.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Time.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Time.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Uuid.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/Win32/pnUtW32Uuid.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtAddr.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtAddr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtAddr.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtAddr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtAllIncludes.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtArray.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtArray.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtArray.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtArray.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBase64.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBase64.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBase64.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBase64.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBigNum.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBigNum.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBigNum.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtBigNum.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCmd.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCmd.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCmd.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCmd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCoreLib.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCoreLib.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCrypt.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCrypt.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCrypt.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtCrypt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtEndian.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtEndian.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtEndian.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtEndian.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtHash.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtHash.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtHash.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtHash.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtList.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtList.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtList.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtList.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMath.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMath.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMath.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMath.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMisc.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMisc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMisc.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtMisc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPath.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPath.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPath.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPath.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPragma.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPragma.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPriQ.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtPriQ.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtRand.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtRand.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtRand.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtRand.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtRef.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSkipList.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSkipList.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSort.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSort.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSpareList.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSpareList.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSpareList.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSpareList.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtStr.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtStr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtStr.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtStr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSubst.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSubst.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSubst.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSubst.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSync.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtSync.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTime.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTime.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTime.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTime.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTls.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTls.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTls.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTls.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTypes.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtUuid.cpp => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtUuid.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/Private/pnUtUuid.h => Sources/Plasma/NucleusLib/pnUtils/Private/pnUtUuid.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/pnUtils.cpp => Sources/Plasma/NucleusLib/pnUtils/pnUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtils/pnUtils.h => Sources/Plasma/NucleusLib/pnUtils/pnUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/CMakeLists.txt => Sources/Plasma/NucleusLib/pnUtilsExe/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/Intern.h => Sources/Plasma/NucleusLib/pnUtilsExe/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/Pch.h => Sources/Plasma/NucleusLib/pnUtilsExe/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/Private/Unix/pnUteUxTime.cpp => Sources/Plasma/NucleusLib/pnUtilsExe/Private/Unix/pnUteUxTime.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/Private/Win32/pnUteW32Time.cpp => Sources/Plasma/NucleusLib/pnUtilsExe/Private/Win32/pnUteW32Time.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/Private/pnUteTime.cpp => Sources/Plasma/NucleusLib/pnUtilsExe/Private/pnUteTime.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnUtilsExe/Private/pnUteTls.cpp => Sources/Plasma/NucleusLib/pnUtilsExe/Private/pnUteTls.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/CMakeLists.txt => Sources/Plasma/PubUtilLib/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/inc/plAllCreatables.h => Sources/Plasma/PubUtilLib/inc/plAllCreatables.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeDescription/CMakeLists.txt => Sources/Plasma/PubUtilLib/plAgeDescription/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeDescription/plAgeDescription.cpp => Sources/Plasma/PubUtilLib/plAgeDescription/plAgeDescription.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeDescription/plAgeDescription.h => Sources/Plasma/PubUtilLib/plAgeDescription/plAgeDescription.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeDescription/plAgeManifest.cpp => Sources/Plasma/PubUtilLib/plAgeDescription/plAgeManifest.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeDescription/plAgeManifest.h => Sources/Plasma/PubUtilLib/plAgeDescription/plAgeManifest.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/CMakeLists.txt => Sources/Plasma/PubUtilLib/plAgeLoader/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoader.cpp => Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoader.h => Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoaderCreatable.h => Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoaderCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoaderPaging.cpp => Sources/Plasma/PubUtilLib/plAgeLoader/plAgeLoaderPaging.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plBackgroundDownloader.cpp => Sources/Plasma/PubUtilLib/plAgeLoader/plBackgroundDownloader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plBackgroundDownloader.h => Sources/Plasma/PubUtilLib/plAgeLoader/plBackgroundDownloader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plResPatcher.cpp => Sources/Plasma/PubUtilLib/plAgeLoader/plResPatcher.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAgeLoader/plResPatcher.h => Sources/Plasma/PubUtilLib/plAgeLoader/plResPatcher.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/CMakeLists.txt => Sources/Plasma/PubUtilLib/plAudible/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plAudibleCreatable.h => Sources/Plasma/PubUtilLib/plAudible/plAudibleCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plAudibleNull.cpp => Sources/Plasma/PubUtilLib/plAudible/plAudibleNull.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plAudibleNull.h => Sources/Plasma/PubUtilLib/plAudible/plAudibleNull.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plWinAudible.cpp => Sources/Plasma/PubUtilLib/plAudible/plWinAudible.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plWinAudible.h => Sources/Plasma/PubUtilLib/plAudible/plWinAudible.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plWinAudibleProxy.cpp => Sources/Plasma/PubUtilLib/plAudible/plWinAudibleProxy.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudible/plWinAudibleProxy.h => Sources/Plasma/PubUtilLib/plAudible/plWinAudibleProxy.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/CMakeLists.txt => Sources/Plasma/PubUtilLib/plAudio/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plAudioCaps.cpp => Sources/Plasma/PubUtilLib/plAudio/plAudioCaps.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plAudioCaps.h => Sources/Plasma/PubUtilLib/plAudio/plAudioCaps.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plAudioCreatable.h => Sources/Plasma/PubUtilLib/plAudio/plAudioCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plAudioReaderCreatable.h => Sources/Plasma/PubUtilLib/plAudio/plAudioReaderCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plAudioSystem.cpp => Sources/Plasma/PubUtilLib/plAudio/plAudioSystem.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plAudioSystem.h => Sources/Plasma/PubUtilLib/plAudio/plAudioSystem.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp => Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.h => Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plEAXEffects.cpp => Sources/Plasma/PubUtilLib/plAudio/plEAXEffects.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plEAXEffects.h => Sources/Plasma/PubUtilLib/plAudio/plEAXEffects.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plEAXListenerMod.cpp => Sources/Plasma/PubUtilLib/plAudio/plEAXListenerMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plEAXListenerMod.h => Sources/Plasma/PubUtilLib/plAudio/plEAXListenerMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plSound.cpp => Sources/Plasma/PubUtilLib/plAudio/plSound.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plSound.h => Sources/Plasma/PubUtilLib/plAudio/plSound.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plSoundEvent.cpp => Sources/Plasma/PubUtilLib/plAudio/plSoundEvent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plSoundEvent.h => Sources/Plasma/PubUtilLib/plAudio/plSoundEvent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.cpp => Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.h => Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWAVClipBuffer.cpp => Sources/Plasma/PubUtilLib/plAudio/plWAVClipBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWAVClipBuffer.h => Sources/Plasma/PubUtilLib/plAudio/plWAVClipBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32GroupedSound.cpp => Sources/Plasma/PubUtilLib/plAudio/plWin32GroupedSound.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32GroupedSound.h => Sources/Plasma/PubUtilLib/plAudio/plWin32GroupedSound.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp => Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.h => Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp => Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.h => Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp => Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.h => Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWinMicLevel.cpp => Sources/Plasma/PubUtilLib/plAudio/plWinMicLevel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudio/plWinMicLevel.h => Sources/Plasma/PubUtilLib/plAudio/plWinMicLevel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/CMakeLists.txt => Sources/Plasma/PubUtilLib/plAudioCore/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plAudioCore.h => Sources/Plasma/PubUtilLib/plAudioCore/plAudioCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plAudioCoreCreatable.h => Sources/Plasma/PubUtilLib/plAudioCore/plAudioCoreCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plAudioFileReader.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plAudioFileReader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plAudioFileReader.h => Sources/Plasma/PubUtilLib/plAudioCore/plAudioFileReader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plBufferedFileReader.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plBufferedFileReader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plBufferedFileReader.h => Sources/Plasma/PubUtilLib/plAudioCore/plBufferedFileReader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plFastWavReader.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plFastWavReader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plFastWavReader.h => Sources/Plasma/PubUtilLib/plAudioCore/plFastWavReader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plOGGCodec.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plOGGCodec.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plOGGCodec.h => Sources/Plasma/PubUtilLib/plAudioCore/plOGGCodec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.h => Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plSoundDeswizzler.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plSoundDeswizzler.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plSoundDeswizzler.h => Sources/Plasma/PubUtilLib/plAudioCore/plSoundDeswizzler.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plWavFile.cpp => Sources/Plasma/PubUtilLib/plAudioCore/plWavFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAudioCore/plWavFile.h => Sources/Plasma/PubUtilLib/plAudioCore/plWavFile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/CMakeLists.txt => Sources/Plasma/PubUtilLib/plAvatar/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGAnim.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGAnim.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGAnim.h => Sources/Plasma/PubUtilLib/plAvatar/plAGAnim.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGAnimInstance.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGAnimInstance.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGAnimInstance.h => Sources/Plasma/PubUtilLib/plAvatar/plAGAnimInstance.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGApplicator.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGApplicator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGApplicator.h => Sources/Plasma/PubUtilLib/plAvatar/plAGApplicator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGChannel.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGChannel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGChannel.h => Sources/Plasma/PubUtilLib/plAvatar/plAGChannel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGMasterMod.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGMasterMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGMasterMod.h => Sources/Plasma/PubUtilLib/plAvatar/plAGMasterMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGMasterSDLModifier.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGMasterSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGMasterSDLModifier.h => Sources/Plasma/PubUtilLib/plAvatar/plAGMasterSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGModifier.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAGModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAGModifier.h => Sources/Plasma/PubUtilLib/plAvatar/plAGModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAnimStage.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAnimStage.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAnimStage.h => Sources/Plasma/PubUtilLib/plAvatar/plAnimStage.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAntiGravAction.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAntiGravAction.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAntiGravAction.h => Sources/Plasma/PubUtilLib/plAvatar/plAntiGravAction.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plArmatureEffects.cpp => Sources/Plasma/PubUtilLib/plAvatar/plArmatureEffects.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plArmatureEffects.h => Sources/Plasma/PubUtilLib/plAvatar/plArmatureEffects.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp => Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.h => Sources/Plasma/PubUtilLib/plAvatar/plArmatureMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBehaviors.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBehaviors.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBehaviors.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBehaviors.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrain.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrain.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrain.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainClimb.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainClimb.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainClimb.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainClimb.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCoop.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCoop.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCoop.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCoop.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCritter.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCritter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCritter.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainCritter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainDrive.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainDrive.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainDrive.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainDrive.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainGeneric.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainGeneric.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainGeneric.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainGeneric.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainHuman.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainHuman.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainHuman.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainHuman.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainPuppet.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainPuppet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainPuppet.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainPuppet.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainRideAnimatedPhysical.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainRideAnimatedPhysical.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainRideAnimatedPhysical.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainRideAnimatedPhysical.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainStaticNPC.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainStaticNPC.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainSwim.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainSwim.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainSwim.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainSwim.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainUser.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainUser.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvBrainUser.h => Sources/Plasma/PubUtilLib/plAvatar/plAvBrainUser.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvCallbackAction.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvCallbackAction.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvCallbackAction.h => Sources/Plasma/PubUtilLib/plAvatar/plAvCallbackAction.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvDefs.h => Sources/Plasma/PubUtilLib/plAvatar/plAvDefs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvLadderModifier.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvLadderModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvLadderModifier.h => Sources/Plasma/PubUtilLib/plAvatar/plAvLadderModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvMotorHuman.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvMotorHuman.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvMotorHuman.h => Sources/Plasma/PubUtilLib/plAvatar/plAvMotorHuman.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTask.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvTask.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTask.h => Sources/Plasma/PubUtilLib/plAvatar/plAvTask.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTaskBrain.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvTaskBrain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTaskBrain.h => Sources/Plasma/PubUtilLib/plAvatar/plAvTaskBrain.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTaskOrient.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvTaskOrient.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTaskOrient.h => Sources/Plasma/PubUtilLib/plAvatar/plAvTaskOrient.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTaskSeek.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvTaskSeek.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvTaskSeek.h => Sources/Plasma/PubUtilLib/plAvatar/plAvTaskSeek.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarClothing.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvatarClothing.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarClothing.h => Sources/Plasma/PubUtilLib/plAvatar/plAvatarClothing.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarCreatable.h => Sources/Plasma/PubUtilLib/plAvatar/plAvatarCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarMgr.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvatarMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarMgr.h => Sources/Plasma/PubUtilLib/plAvatar/plAvatarMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarSDLModifier.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvatarSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarSDLModifier.h => Sources/Plasma/PubUtilLib/plAvatar/plAvatarSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarTasks.cpp => Sources/Plasma/PubUtilLib/plAvatar/plAvatarTasks.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plAvatarTasks.h => Sources/Plasma/PubUtilLib/plAvatar/plAvatarTasks.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plClothingLayout.h => Sources/Plasma/PubUtilLib/plAvatar/plClothingLayout.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plClothingSDLModifier.cpp => Sources/Plasma/PubUtilLib/plAvatar/plClothingSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plClothingSDLModifier.h => Sources/Plasma/PubUtilLib/plAvatar/plClothingSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plCoopCoordinator.cpp => Sources/Plasma/PubUtilLib/plAvatar/plCoopCoordinator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plCoopCoordinator.h => Sources/Plasma/PubUtilLib/plAvatar/plCoopCoordinator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plCritterCommands.h => Sources/Plasma/PubUtilLib/plAvatar/plCritterCommands.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plMatrixChannel.cpp => Sources/Plasma/PubUtilLib/plAvatar/plMatrixChannel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plMatrixChannel.h => Sources/Plasma/PubUtilLib/plAvatar/plMatrixChannel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plMultistageBehMod.cpp => Sources/Plasma/PubUtilLib/plAvatar/plMultistageBehMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plMultistageBehMod.h => Sources/Plasma/PubUtilLib/plAvatar/plMultistageBehMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plNPCSpawnMod.cpp => Sources/Plasma/PubUtilLib/plAvatar/plNPCSpawnMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plNPCSpawnMod.h => Sources/Plasma/PubUtilLib/plAvatar/plNPCSpawnMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plOneShotMod.cpp => Sources/Plasma/PubUtilLib/plAvatar/plOneShotMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plOneShotMod.h => Sources/Plasma/PubUtilLib/plAvatar/plOneShotMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plPhysicalControllerCore.cpp => Sources/Plasma/PubUtilLib/plAvatar/plPhysicalControllerCore.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plPhysicalControllerCore.h => Sources/Plasma/PubUtilLib/plAvatar/plPhysicalControllerCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plPointChannel.cpp => Sources/Plasma/PubUtilLib/plAvatar/plPointChannel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plPointChannel.h => Sources/Plasma/PubUtilLib/plAvatar/plPointChannel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plPuppetBrainMsg.h => Sources/Plasma/PubUtilLib/plAvatar/plPuppetBrainMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plPuppetCommands.h => Sources/Plasma/PubUtilLib/plAvatar/plPuppetCommands.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plQuatChannel.cpp => Sources/Plasma/PubUtilLib/plAvatar/plQuatChannel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plQuatChannel.h => Sources/Plasma/PubUtilLib/plAvatar/plQuatChannel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plScalarChannel.cpp => Sources/Plasma/PubUtilLib/plAvatar/plScalarChannel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plScalarChannel.h => Sources/Plasma/PubUtilLib/plAvatar/plScalarChannel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plSeekPointMod.cpp => Sources/Plasma/PubUtilLib/plAvatar/plSeekPointMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plSeekPointMod.h => Sources/Plasma/PubUtilLib/plAvatar/plSeekPointMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plSittingModifier.cpp => Sources/Plasma/PubUtilLib/plAvatar/plSittingModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plSittingModifier.h => Sources/Plasma/PubUtilLib/plAvatar/plSittingModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plSwimRegion.cpp => Sources/Plasma/PubUtilLib/plAvatar/plSwimRegion.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plAvatar/plSwimRegion.h => Sources/Plasma/PubUtilLib/plAvatar/plSwimRegion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plCompression/CMakeLists.txt => Sources/Plasma/PubUtilLib/plCompression/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plCompression/plCompress.h => Sources/Plasma/PubUtilLib/plCompression/plCompress.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plCompression/plZlibCompress.cpp => Sources/Plasma/PubUtilLib/plCompression/plZlibCompress.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plCompression/plZlibCompress.h => Sources/Plasma/PubUtilLib/plCompression/plZlibCompress.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plCompression/plZlibStream.cpp => Sources/Plasma/PubUtilLib/plCompression/plZlibStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plCompression/plZlibStream.h => Sources/Plasma/PubUtilLib/plCompression/plZlibStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/CMakeLists.txt => Sources/Plasma/PubUtilLib/plContainer/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/hsStringTable.cpp => Sources/Plasma/PubUtilLib/plContainer/hsStringTable.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/hsStringTable.h => Sources/Plasma/PubUtilLib/plContainer/hsStringTable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/plConfigInfo.cpp => Sources/Plasma/PubUtilLib/plContainer/plConfigInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/plConfigInfo.h => Sources/Plasma/PubUtilLib/plContainer/plConfigInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/plConfigInfoLogging.cpp => Sources/Plasma/PubUtilLib/plContainer/plConfigInfoLogging.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/plContainer.h => Sources/Plasma/PubUtilLib/plContainer/plContainer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/plKeysAndValues.cpp => Sources/Plasma/PubUtilLib/plContainer/plKeysAndValues.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plContainer/plKeysAndValues.h => Sources/Plasma/PubUtilLib/plContainer/plKeysAndValues.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDeviceSelector/plDeviceSelector.cpp => Sources/Plasma/PubUtilLib/plDeviceSelector/plDeviceSelector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDeviceSelector/plDeviceSelector.h => Sources/Plasma/PubUtilLib/plDeviceSelector/plDeviceSelector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/CMakeLists.txt => Sources/Plasma/PubUtilLib/plDrawable/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccMeshSmooth.cpp => Sources/Plasma/PubUtilLib/plDrawable/plAccMeshSmooth.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccMeshSmooth.h => Sources/Plasma/PubUtilLib/plDrawable/plAccMeshSmooth.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessGeometry.cpp => Sources/Plasma/PubUtilLib/plDrawable/plAccessGeometry.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessGeometry.h => Sources/Plasma/PubUtilLib/plDrawable/plAccessGeometry.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessPartySpan.h => Sources/Plasma/PubUtilLib/plDrawable/plAccessPartySpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessSnapShot.cpp => Sources/Plasma/PubUtilLib/plDrawable/plAccessSnapShot.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessSnapShot.h => Sources/Plasma/PubUtilLib/plDrawable/plAccessSnapShot.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessSpan.h => Sources/Plasma/PubUtilLib/plDrawable/plAccessSpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessTriSpan.h => Sources/Plasma/PubUtilLib/plDrawable/plAccessTriSpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAccessVtxSpan.h => Sources/Plasma/PubUtilLib/plDrawable/plAccessVtxSpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plActivePrintShape.cpp => Sources/Plasma/PubUtilLib/plDrawable/plActivePrintShape.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plActivePrintShape.h => Sources/Plasma/PubUtilLib/plDrawable/plActivePrintShape.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAuxSpan.h => Sources/Plasma/PubUtilLib/plDrawable/plAuxSpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAvMeshSmooth.cpp => Sources/Plasma/PubUtilLib/plDrawable/plAvMeshSmooth.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plAvMeshSmooth.h => Sources/Plasma/PubUtilLib/plDrawable/plAvMeshSmooth.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plCluster.cpp => Sources/Plasma/PubUtilLib/plDrawable/plCluster.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plCluster.h => Sources/Plasma/PubUtilLib/plDrawable/plCluster.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plClusterGroup.cpp => Sources/Plasma/PubUtilLib/plDrawable/plClusterGroup.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plClusterGroup.h => Sources/Plasma/PubUtilLib/plDrawable/plClusterGroup.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plCutter.cpp => Sources/Plasma/PubUtilLib/plDrawable/plCutter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plCutter.h => Sources/Plasma/PubUtilLib/plDrawable/plCutter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDrawableCreatable.h => Sources/Plasma/PubUtilLib/plDrawable/plDrawableCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDrawableGenerator.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDrawableGenerator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDrawableGenerator.h => Sources/Plasma/PubUtilLib/plDrawable/plDrawableGenerator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpans.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpans.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpans.h => Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpans.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpansExport.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDrawableSpansExport.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaBulletMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaBulletMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaBulletMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaBulletMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaDecal.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaDecal.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaDecal.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaDecal.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaDecalMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaDecalMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaDecalMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaDecalMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaFootMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaFootMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaFootMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaFootMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaPuddleMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaPuddleMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaPuddleMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaPuddleMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleMgrVS.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleMgrVS.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleVSMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaRippleVSMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoVSMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoVSMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoVSMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaTorpedoVSMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaWakeMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plDynaWakeMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plDynaWakeMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plDynaWakeMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plFixedWaterState7.cpp => Sources/Plasma/PubUtilLib/plDrawable/plFixedWaterState7.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plFixedWaterState7.h => Sources/Plasma/PubUtilLib/plDrawable/plFixedWaterState7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plGeoSpanDice.cpp => Sources/Plasma/PubUtilLib/plDrawable/plGeoSpanDice.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plGeoSpanDice.h => Sources/Plasma/PubUtilLib/plDrawable/plGeoSpanDice.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plGeometrySpan.cpp => Sources/Plasma/PubUtilLib/plDrawable/plGeometrySpan.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plGeometrySpan.h => Sources/Plasma/PubUtilLib/plDrawable/plGeometrySpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plInstanceDrawInterface.cpp => Sources/Plasma/PubUtilLib/plDrawable/plInstanceDrawInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plInstanceDrawInterface.h => Sources/Plasma/PubUtilLib/plDrawable/plInstanceDrawInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plInterMeshSmooth.cpp => Sources/Plasma/PubUtilLib/plDrawable/plInterMeshSmooth.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plInterMeshSmooth.h => Sources/Plasma/PubUtilLib/plDrawable/plInterMeshSmooth.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphArray.cpp => Sources/Plasma/PubUtilLib/plDrawable/plMorphArray.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphArray.h => Sources/Plasma/PubUtilLib/plDrawable/plMorphArray.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphDelta.cpp => Sources/Plasma/PubUtilLib/plDrawable/plMorphDelta.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphDelta.h => Sources/Plasma/PubUtilLib/plDrawable/plMorphDelta.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphSequence.cpp => Sources/Plasma/PubUtilLib/plDrawable/plMorphSequence.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphSequence.h => Sources/Plasma/PubUtilLib/plDrawable/plMorphSequence.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphSequenceSDLMod.cpp => Sources/Plasma/PubUtilLib/plDrawable/plMorphSequenceSDLMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plMorphSequenceSDLMod.h => Sources/Plasma/PubUtilLib/plDrawable/plMorphSequenceSDLMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plParticleFiller.cpp => Sources/Plasma/PubUtilLib/plDrawable/plParticleFiller.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plParticleFiller.h => Sources/Plasma/PubUtilLib/plDrawable/plParticleFiller.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plPrintShape.cpp => Sources/Plasma/PubUtilLib/plDrawable/plPrintShape.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plPrintShape.h => Sources/Plasma/PubUtilLib/plDrawable/plPrintShape.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plProxyGen.cpp => Sources/Plasma/PubUtilLib/plDrawable/plProxyGen.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plProxyGen.h => Sources/Plasma/PubUtilLib/plDrawable/plProxyGen.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plRipVSConsts.h => Sources/Plasma/PubUtilLib/plDrawable/plRipVSConsts.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSharedMesh.cpp => Sources/Plasma/PubUtilLib/plDrawable/plSharedMesh.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSharedMesh.h => Sources/Plasma/PubUtilLib/plDrawable/plSharedMesh.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpaceTree.cpp => Sources/Plasma/PubUtilLib/plDrawable/plSpaceTree.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpaceTree.h => Sources/Plasma/PubUtilLib/plDrawable/plSpaceTree.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpaceTreeMaker.cpp => Sources/Plasma/PubUtilLib/plDrawable/plSpaceTreeMaker.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpaceTreeMaker.h => Sources/Plasma/PubUtilLib/plDrawable/plSpaceTreeMaker.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpanInstance.cpp => Sources/Plasma/PubUtilLib/plDrawable/plSpanInstance.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpanInstance.h => Sources/Plasma/PubUtilLib/plDrawable/plSpanInstance.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpanTemplate.cpp => Sources/Plasma/PubUtilLib/plDrawable/plSpanTemplate.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpanTemplate.h => Sources/Plasma/PubUtilLib/plDrawable/plSpanTemplate.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpanTypes.cpp => Sources/Plasma/PubUtilLib/plDrawable/plSpanTypes.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plSpanTypes.h => Sources/Plasma/PubUtilLib/plDrawable/plSpanTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plTimedInterp.h => Sources/Plasma/PubUtilLib/plDrawable/plTimedInterp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plVisLOSMgr.cpp => Sources/Plasma/PubUtilLib/plDrawable/plVisLOSMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plVisLOSMgr.h => Sources/Plasma/PubUtilLib/plDrawable/plVisLOSMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plWaveSet7.cpp => Sources/Plasma/PubUtilLib/plDrawable/plWaveSet7.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plWaveSet7.h => Sources/Plasma/PubUtilLib/plDrawable/plWaveSet7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plWaveSetBase.cpp => Sources/Plasma/PubUtilLib/plDrawable/plWaveSetBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plWaveSetBase.h => Sources/Plasma/PubUtilLib/plDrawable/plWaveSetBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plDrawable/plWaveSetShaderConsts.h => Sources/Plasma/PubUtilLib/plDrawable/plWaveSetShaderConsts.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plEncryption/CMakeLists.txt => Sources/Plasma/PubUtilLib/plEncryption/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plEncryption/plChecksum.cpp => Sources/Plasma/PubUtilLib/plEncryption/plChecksum.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plEncryption/plChecksum.h => Sources/Plasma/PubUtilLib/plEncryption/plChecksum.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/CMakeLists.txt => Sources/Plasma/PubUtilLib/plFile/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/hsFiles.cpp => Sources/Plasma/PubUtilLib/plFile/hsFiles.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/hsFiles.h => Sources/Plasma/PubUtilLib/plFile/hsFiles.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/hsFiles_Mac.cpp => Sources/Plasma/PubUtilLib/plFile/hsFiles_Mac.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/hsFiles_PS2.cpp => Sources/Plasma/PubUtilLib/plFile/hsFiles_PS2.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/hsFiles_Unix.cpp => Sources/Plasma/PubUtilLib/plFile/hsFiles_Unix.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/hsFiles_Win.cpp => Sources/Plasma/PubUtilLib/plFile/hsFiles_Win.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plBrowseFolder.cpp => Sources/Plasma/PubUtilLib/plFile/plBrowseFolder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plBrowseFolder.h => Sources/Plasma/PubUtilLib/plFile/plBrowseFolder.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plEncryptedStream.cpp => Sources/Plasma/PubUtilLib/plFile/plEncryptedStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plEncryptedStream.h => Sources/Plasma/PubUtilLib/plFile/plEncryptedStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plFileUtils.cpp => Sources/Plasma/PubUtilLib/plFile/plFileUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plFileUtils.h => Sources/Plasma/PubUtilLib/plFile/plFileUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plInitFileReader.cpp => Sources/Plasma/PubUtilLib/plFile/plInitFileReader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plInitFileReader.h => Sources/Plasma/PubUtilLib/plFile/plInitFileReader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plSecureStream.cpp => Sources/Plasma/PubUtilLib/plFile/plSecureStream.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plSecureStream.h => Sources/Plasma/PubUtilLib/plFile/plSecureStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plStreamSource.cpp => Sources/Plasma/PubUtilLib/plFile/plStreamSource.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plFile/plStreamSource.h => Sources/Plasma/PubUtilLib/plFile/plStreamSource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGClip/placeholder.txt => Sources/Plasma/PubUtilLib/plGClip/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/CMakeLists.txt => Sources/Plasma/PubUtilLib/plGImage/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/HS_RECT.inc => Sources/Plasma/PubUtilLib/plGImage/HS_RECT.inc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsCodec.h => Sources/Plasma/PubUtilLib/plGImage/hsCodec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsCodecManager.cpp => Sources/Plasma/PubUtilLib/plGImage/hsCodecManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsCodecManager.h => Sources/Plasma/PubUtilLib/plGImage/hsCodecManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.cpp => Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.h => Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.cpp => Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.h => Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/hsRect.h => Sources/Plasma/PubUtilLib/plGImage/hsRect.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/notes.txt => Sources/Plasma/PubUtilLib/plGImage/notes.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plAVIWriter.cpp => Sources/Plasma/PubUtilLib/plGImage/plAVIWriter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plAVIWriter.h => Sources/Plasma/PubUtilLib/plGImage/plAVIWriter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBitmap.cpp => Sources/Plasma/PubUtilLib/plGImage/plBitmap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBitmap.h => Sources/Plasma/PubUtilLib/plGImage/plBitmap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBumpMapGen.cpp => Sources/Plasma/PubUtilLib/plGImage/plBumpMapGen.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBumpMapGen.h => Sources/Plasma/PubUtilLib/plGImage/plBumpMapGen.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plCubicEnvironmap.cpp => Sources/Plasma/PubUtilLib/plGImage/plCubicEnvironmap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plCubicEnvironmap.h => Sources/Plasma/PubUtilLib/plGImage/plCubicEnvironmap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plDynSurfaceWriter.cpp => Sources/Plasma/PubUtilLib/plGImage/plDynSurfaceWriter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plDynSurfaceWriter.h => Sources/Plasma/PubUtilLib/plGImage/plDynSurfaceWriter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plDynamicTextMap.cpp => Sources/Plasma/PubUtilLib/plGImage/plDynamicTextMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plDynamicTextMap.h => Sources/Plasma/PubUtilLib/plGImage/plDynamicTextMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.cpp => Sources/Plasma/PubUtilLib/plGImage/plFont.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.h => Sources/Plasma/PubUtilLib/plGImage/plFont.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFontCache.cpp => Sources/Plasma/PubUtilLib/plGImage/plFontCache.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFontCache.h => Sources/Plasma/PubUtilLib/plGImage/plFontCache.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plGImageCreatable.h => Sources/Plasma/PubUtilLib/plGImage/plGImageCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plImageConvert.h => Sources/Plasma/PubUtilLib/plGImage/plImageConvert.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plLODMipmap.cpp => Sources/Plasma/PubUtilLib/plGImage/plLODMipmap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plLODMipmap.h => Sources/Plasma/PubUtilLib/plGImage/plLODMipmap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plMipmap.cpp => Sources/Plasma/PubUtilLib/plGImage/plMipmap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plMipmap.h => Sources/Plasma/PubUtilLib/plGImage/plMipmap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.cpp => Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.h => Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plWinFontCache.cpp => Sources/Plasma/PubUtilLib/plGImage/plWinFontCache.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plWinFontCache.h => Sources/Plasma/PubUtilLib/plGImage/plWinFontCache.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/CMakeLists.txt => Sources/Plasma/PubUtilLib/plGLight/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plDirectShadowMaster.cpp => Sources/Plasma/PubUtilLib/plGLight/plDirectShadowMaster.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plDirectShadowMaster.h => Sources/Plasma/PubUtilLib/plGLight/plDirectShadowMaster.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plGLightCreatable.h => Sources/Plasma/PubUtilLib/plGLight/plGLightCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightInfo.cpp => Sources/Plasma/PubUtilLib/plGLight/plLightInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightInfo.h => Sources/Plasma/PubUtilLib/plGLight/plLightInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightKonstants.h => Sources/Plasma/PubUtilLib/plGLight/plLightKonstants.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightProxy.cpp => Sources/Plasma/PubUtilLib/plGLight/plLightProxy.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightProxy.h => Sources/Plasma/PubUtilLib/plGLight/plLightProxy.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightSpace.cpp => Sources/Plasma/PubUtilLib/plGLight/plLightSpace.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plLightSpace.h => Sources/Plasma/PubUtilLib/plGLight/plLightSpace.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plPerspDirSlave.cpp => Sources/Plasma/PubUtilLib/plGLight/plPerspDirSlave.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plPerspDirSlave.h => Sources/Plasma/PubUtilLib/plGLight/plPerspDirSlave.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plPointShadowMaster.cpp => Sources/Plasma/PubUtilLib/plGLight/plPointShadowMaster.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plPointShadowMaster.h => Sources/Plasma/PubUtilLib/plGLight/plPointShadowMaster.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plShadowCaster.cpp => Sources/Plasma/PubUtilLib/plGLight/plShadowCaster.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plShadowCaster.h => Sources/Plasma/PubUtilLib/plGLight/plShadowCaster.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plShadowMaster.cpp => Sources/Plasma/PubUtilLib/plGLight/plShadowMaster.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plShadowMaster.h => Sources/Plasma/PubUtilLib/plGLight/plShadowMaster.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plShadowSlave.cpp => Sources/Plasma/PubUtilLib/plGLight/plShadowSlave.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGLight/plShadowSlave.h => Sources/Plasma/PubUtilLib/plGLight/plShadowSlave.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsGRenderProcs.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsGRenderProcs.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsGRenderProcs.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsGRenderProcs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxAngleFade.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxAngleFade.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxAngleFade.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxAngleFade.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistFade.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistFade.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistFade.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistFade.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistShade.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistShade.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistShade.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxDistShade.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxGlobalShade.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxGlobalShade.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxGlobalShade.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxGlobalShade.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxIntenseAlpha.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxIntenseAlpha.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxIntenseAlpha.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxIntenseAlpha.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistFade.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistFade.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistFade.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistFade.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistShade.cpp => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistShade.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistShade.h => Sources/Plasma/PubUtilLib/plGRenderProcs/hsSfxObjDistShade.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGRenderProcs/plGRenderProcsCreatable.h => Sources/Plasma/PubUtilLib/plGRenderProcs/plGRenderProcsCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGeometry/hsOscillator.cpp => Sources/Plasma/PubUtilLib/plGeometry/hsOscillator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGeometry/hsOscillator.h => Sources/Plasma/PubUtilLib/plGeometry/hsOscillator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGeometry/hsPerterber.cpp => Sources/Plasma/PubUtilLib/plGeometry/hsPerterber.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGeometry/hsPerterber.h => Sources/Plasma/PubUtilLib/plGeometry/hsPerterber.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGeometry/plGeometryCreatable.h => Sources/Plasma/PubUtilLib/plGeometry/plGeometryCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/CMakeLists.txt => Sources/Plasma/PubUtilLib/plInputCore/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plAvatarInputInterface.cpp => Sources/Plasma/PubUtilLib/plInputCore/plAvatarInputInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plAvatarInputInterface.h => Sources/Plasma/PubUtilLib/plInputCore/plAvatarInputInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plDInputDevice.cpp => Sources/Plasma/PubUtilLib/plInputCore/plDInputDevice.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plDInputDevice.h => Sources/Plasma/PubUtilLib/plInputCore/plDInputDevice.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plDebugInputInterface.cpp => Sources/Plasma/PubUtilLib/plInputCore/plDebugInputInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plDebugInputInterface.h => Sources/Plasma/PubUtilLib/plInputCore/plDebugInputInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputCoreCreatable.h => Sources/Plasma/PubUtilLib/plInputCore/plInputCoreCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.cpp => Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h => Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputInterface.cpp => Sources/Plasma/PubUtilLib/plInputCore/plInputInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputInterface.h => Sources/Plasma/PubUtilLib/plInputCore/plInputInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.cpp => Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.h => Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputManager.cpp => Sources/Plasma/PubUtilLib/plInputCore/plInputManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plInputManager.h => Sources/Plasma/PubUtilLib/plInputCore/plInputManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plSceneInputInterface.cpp => Sources/Plasma/PubUtilLib/plInputCore/plSceneInputInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plSceneInputInterface.h => Sources/Plasma/PubUtilLib/plInputCore/plSceneInputInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plTelescopeInputInterface.cpp => Sources/Plasma/PubUtilLib/plInputCore/plTelescopeInputInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInputCore/plTelescopeInputInterface.h => Sources/Plasma/PubUtilLib/plInputCore/plTelescopeInputInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/CMakeLists.txt => Sources/Plasma/PubUtilLib/plInterp/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/hsInterp.cpp => Sources/Plasma/PubUtilLib/plInterp/hsInterp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/hsInterp.h => Sources/Plasma/PubUtilLib/plInterp/hsInterp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/hsKeys.cpp => Sources/Plasma/PubUtilLib/plInterp/hsKeys.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/hsKeys.h => Sources/Plasma/PubUtilLib/plInterp/hsKeys.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/hsTimedValue.h => Sources/Plasma/PubUtilLib/plInterp/hsTimedValue.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plATCEaseCurves.cpp => Sources/Plasma/PubUtilLib/plInterp/plATCEaseCurves.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plAnimEaseTypes.h => Sources/Plasma/PubUtilLib/plInterp/plAnimEaseTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plAnimPath.cpp => Sources/Plasma/PubUtilLib/plInterp/plAnimPath.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plAnimPath.h => Sources/Plasma/PubUtilLib/plInterp/plAnimPath.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plAnimTimeConvert.cpp => Sources/Plasma/PubUtilLib/plInterp/plAnimTimeConvert.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plAnimTimeConvert.h => Sources/Plasma/PubUtilLib/plInterp/plAnimTimeConvert.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plController.cpp => Sources/Plasma/PubUtilLib/plInterp/plController.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plController.h => Sources/Plasma/PubUtilLib/plInterp/plController.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plInterpCreatable.h => Sources/Plasma/PubUtilLib/plInterp/plInterpCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plModulator.cpp => Sources/Plasma/PubUtilLib/plInterp/plModulator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plInterp/plModulator.h => Sources/Plasma/PubUtilLib/plInterp/plModulator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/CMakeLists.txt => Sources/Plasma/PubUtilLib/plIntersect/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/notes.txt => Sources/Plasma/PubUtilLib/plIntersect/notes.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plClosest.cpp => Sources/Plasma/PubUtilLib/plIntersect/plClosest.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plClosest.h => Sources/Plasma/PubUtilLib/plIntersect/plClosest.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plHardRegion.cpp => Sources/Plasma/PubUtilLib/plIntersect/plHardRegion.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plHardRegion.h => Sources/Plasma/PubUtilLib/plIntersect/plHardRegion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plHardRegionPlanes.cpp => Sources/Plasma/PubUtilLib/plIntersect/plHardRegionPlanes.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plHardRegionPlanes.h => Sources/Plasma/PubUtilLib/plIntersect/plHardRegionPlanes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plHardRegionTypes.cpp => Sources/Plasma/PubUtilLib/plIntersect/plHardRegionTypes.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plHardRegionTypes.h => Sources/Plasma/PubUtilLib/plIntersect/plHardRegionTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plIntersectCreatable.h => Sources/Plasma/PubUtilLib/plIntersect/plIntersectCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plRegionBase.h => Sources/Plasma/PubUtilLib/plIntersect/plRegionBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plSoftVolume.cpp => Sources/Plasma/PubUtilLib/plIntersect/plSoftVolume.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plSoftVolume.h => Sources/Plasma/PubUtilLib/plIntersect/plSoftVolume.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plSoftVolumeTypes.cpp => Sources/Plasma/PubUtilLib/plIntersect/plSoftVolumeTypes.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plSoftVolumeTypes.h => Sources/Plasma/PubUtilLib/plIntersect/plSoftVolumeTypes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plVolumeIsect.cpp => Sources/Plasma/PubUtilLib/plIntersect/plVolumeIsect.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/plVolumeIsect.h => Sources/Plasma/PubUtilLib/plIntersect/plVolumeIsect.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plJPEG/CMakeLists.txt => Sources/Plasma/PubUtilLib/plJPEG/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plJPEG/plJPEG.cpp => Sources/Plasma/PubUtilLib/plJPEG/plJPEG.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plJPEG/plJPEG.h => Sources/Plasma/PubUtilLib/plJPEG/plJPEG.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/CMakeLists.txt => Sources/Plasma/PubUtilLib/plMath/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/hsNoiseFunc.cpp => Sources/Plasma/PubUtilLib/plMath/hsNoiseFunc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/hsNoiseFunc.h => Sources/Plasma/PubUtilLib/plMath/hsNoiseFunc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/hsRadixSort.cpp => Sources/Plasma/PubUtilLib/plMath/hsRadixSort.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/hsRadixSort.h => Sources/Plasma/PubUtilLib/plMath/hsRadixSort.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/hsSearchVersion.h => Sources/Plasma/PubUtilLib/plMath/hsSearchVersion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/plAvg.cpp => Sources/Plasma/PubUtilLib/plMath/plAvg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/plAvg.h => Sources/Plasma/PubUtilLib/plMath/plAvg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/plRandom.h => Sources/Plasma/PubUtilLib/plMath/plRandom.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/plTriUtils.cpp => Sources/Plasma/PubUtilLib/plMath/plTriUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMath/plTriUtils.h => Sources/Plasma/PubUtilLib/plMath/plTriUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/CMakeLists.txt => Sources/Plasma/PubUtilLib/plMessage/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAIMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plAIMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAIMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAIMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAccountUpdateMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plAccountUpdateMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAccountUpdateMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAccountUpdateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plActivatorMsg.h => Sources/Plasma/PubUtilLib/plMessage/plActivatorMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAgeLoadedMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAgeLoadedMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAngularVelocityMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAngularVelocityMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAnimCmdMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plAnimCmdMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAnimCmdMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAnimCmdMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAnimationEventCallbackMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAnimationEventCallbackMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plApplyAvatarCustomizationsMsg.h => Sources/Plasma/PubUtilLib/plMessage/plApplyAvatarCustomizationsMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plApplyStoredAvatarSettingsMsg.h => Sources/Plasma/PubUtilLib/plMessage/plApplyStoredAvatarSettingsMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAvCoopMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plAvCoopMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAvCoopMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAvCoopMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAvatarFootMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plAvatarFootMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAvatarFootMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAvatarFootMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAvatarMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plAvatarMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plAvatarMsg.h => Sources/Plasma/PubUtilLib/plMessage/plAvatarMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plBulletMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plBulletMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plBulletMsg.h => Sources/Plasma/PubUtilLib/plMessage/plBulletMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCCRMessageCreatable.h => Sources/Plasma/PubUtilLib/plMessage/plCCRMessageCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCCRMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plCCRMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCCRMsg.h => Sources/Plasma/PubUtilLib/plMessage/plCCRMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCaptureRenderMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plCaptureRenderMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCaptureRenderMsg.h => Sources/Plasma/PubUtilLib/plMessage/plCaptureRenderMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plClimbEventMsg.h => Sources/Plasma/PubUtilLib/plMessage/plClimbEventMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plClimbMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plClimbMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plClimbMsg.h => Sources/Plasma/PubUtilLib/plMessage/plClimbMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCollideMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plCollideMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCollideMsg.h => Sources/Plasma/PubUtilLib/plMessage/plCollideMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plCondRefMsg.h => Sources/Plasma/PubUtilLib/plMessage/plCondRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plConnectedToVaultMsg.h => Sources/Plasma/PubUtilLib/plMessage/plConnectedToVaultMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plConsoleMsg.h => Sources/Plasma/PubUtilLib/plMessage/plConsoleMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDeviceRecreateMsg.h => Sources/Plasma/PubUtilLib/plMessage/plDeviceRecreateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDynaDecalEnableMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plDynaDecalEnableMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDynaDecalEnableMsg.h => Sources/Plasma/PubUtilLib/plMessage/plDynaDecalEnableMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDynamicEnvMapMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plDynamicEnvMapMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDynamicEnvMapMsg.h => Sources/Plasma/PubUtilLib/plMessage/plDynamicEnvMapMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDynamicTextMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plDynamicTextMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plDynamicTextMsg.h => Sources/Plasma/PubUtilLib/plMessage/plDynamicTextMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plElementRefMsg.h => Sources/Plasma/PubUtilLib/plMessage/plElementRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plEnvEffectMsg.h => Sources/Plasma/PubUtilLib/plMessage/plEnvEffectMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plExcludeRegionMsg.h => Sources/Plasma/PubUtilLib/plMessage/plExcludeRegionMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plInputEventMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plInputEventMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plInputEventMsg.h => Sources/Plasma/PubUtilLib/plMessage/plInputEventMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plInputIfaceMgrMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plInputIfaceMgrMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plInputIfaceMgrMsg.h => Sources/Plasma/PubUtilLib/plMessage/plInputIfaceMgrMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plInterestingPing.h => Sources/Plasma/PubUtilLib/plMessage/plInterestingPing.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLOSHitMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLOSHitMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLOSHitMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLOSHitMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLOSRequestMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLOSRequestMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLOSRequestMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLOSRequestMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLayRefMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLayRefMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLayRefMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLayRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLightRefMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLightRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLinearVelocityMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLinearVelocityMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLinkToAgeMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLinkToAgeMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLinkToAgeMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLinkToAgeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plListenerMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plListenerMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plListenerMsg.h => Sources/Plasma/PubUtilLib/plMessage/plListenerMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLoadAgeMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLoadAgeMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLoadAgeMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLoadAgeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLoadAvatarMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLoadAvatarMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLoadAvatarMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLoadAvatarMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLoadCloneMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plLoadCloneMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plLoadCloneMsg.h => Sources/Plasma/PubUtilLib/plMessage/plLoadCloneMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMatRefMsg.h => Sources/Plasma/PubUtilLib/plMessage/plMatRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMatrixUpdateMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plMatrixUpdateMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMatrixUpdateMsg.h => Sources/Plasma/PubUtilLib/plMessage/plMatrixUpdateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMemberUpdateMsg.h => Sources/Plasma/PubUtilLib/plMessage/plMemberUpdateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMeshRefMsg.h => Sources/Plasma/PubUtilLib/plMessage/plMeshRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMessageCreatable.h => Sources/Plasma/PubUtilLib/plMessage/plMessageCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMovieMsg.h => Sources/Plasma/PubUtilLib/plMessage/plMovieMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMultistageMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plMultistageMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plMultistageMsg.h => Sources/Plasma/PubUtilLib/plMessage/plMultistageMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNCAgeJoinerMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plNCAgeJoinerMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNCAgeJoinerMsg.h => Sources/Plasma/PubUtilLib/plMessage/plNCAgeJoinerMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetClientMgrMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plNetClientMgrMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetClientMgrMsg.h => Sources/Plasma/PubUtilLib/plMessage/plNetClientMgrMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetCommMsgs.cpp => Sources/Plasma/PubUtilLib/plMessage/plNetCommMsgs.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetCommMsgs.h => Sources/Plasma/PubUtilLib/plMessage/plNetCommMsgs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetOwnershipMsg.h => Sources/Plasma/PubUtilLib/plMessage/plNetOwnershipMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetVoiceListMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plNetVoiceListMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNetVoiceListMsg.h => Sources/Plasma/PubUtilLib/plMessage/plNetVoiceListMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plNodeCleanupMsg.h => Sources/Plasma/PubUtilLib/plMessage/plNodeCleanupMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plOneShotCallbacks.cpp => Sources/Plasma/PubUtilLib/plMessage/plOneShotCallbacks.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plOneShotCallbacks.h => Sources/Plasma/PubUtilLib/plMessage/plOneShotCallbacks.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plOneShotMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plOneShotMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plOneShotMsg.h => Sources/Plasma/PubUtilLib/plMessage/plOneShotMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plParticleUpdateMsg.h => Sources/Plasma/PubUtilLib/plMessage/plParticleUpdateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plPickedMsg.h => Sources/Plasma/PubUtilLib/plMessage/plPickedMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plPlayerMsg.h => Sources/Plasma/PubUtilLib/plMessage/plPlayerMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plPreloaderMsg.h => Sources/Plasma/PubUtilLib/plMessage/plPreloaderMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRenderMsg.h => Sources/Plasma/PubUtilLib/plMessage/plRenderMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRenderRequestMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plRenderRequestMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRenderRequestMsg.h => Sources/Plasma/PubUtilLib/plMessage/plRenderRequestMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plReplaceGeometryMsg.h => Sources/Plasma/PubUtilLib/plMessage/plReplaceGeometryMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plResMgrHelperMsg.h => Sources/Plasma/PubUtilLib/plMessage/plResMgrHelperMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plResponderMsg.h => Sources/Plasma/PubUtilLib/plMessage/plResponderMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRideAnimatedPhysMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plRideAnimatedPhysMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRideAnimatedPhysMsg.h => Sources/Plasma/PubUtilLib/plMessage/plRideAnimatedPhysMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRippleShapeMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plRippleShapeMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRippleShapeMsg.h => Sources/Plasma/PubUtilLib/plMessage/plRippleShapeMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plRoomLoadNotifyMsg.h => Sources/Plasma/PubUtilLib/plMessage/plRoomLoadNotifyMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plShadowCastMsg.h => Sources/Plasma/PubUtilLib/plMessage/plShadowCastMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSimInfluenceMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plSimInfluenceMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSimInfluenceMsg.h => Sources/Plasma/PubUtilLib/plMessage/plSimInfluenceMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSimStateMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plSimStateMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSimStateMsg.h => Sources/Plasma/PubUtilLib/plMessage/plSimStateMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSpawnModMsg.h => Sources/Plasma/PubUtilLib/plMessage/plSpawnModMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSpawnRequestMsg.h => Sources/Plasma/PubUtilLib/plMessage/plSpawnRequestMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSwimMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plSwimMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSwimMsg.h => Sources/Plasma/PubUtilLib/plMessage/plSwimMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSynchEnableMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plSynchEnableMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plSynchEnableMsg.h => Sources/Plasma/PubUtilLib/plMessage/plSynchEnableMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plTimerCallbackMsg.h => Sources/Plasma/PubUtilLib/plMessage/plTimerCallbackMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plTransitionMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plTransitionMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plTransitionMsg.h => Sources/Plasma/PubUtilLib/plMessage/plTransitionMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plTriggerMsg.h => Sources/Plasma/PubUtilLib/plMessage/plTriggerMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plUniqueIdsMsg.h => Sources/Plasma/PubUtilLib/plMessage/plUniqueIdsMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plVaultNotifyMsg.cpp => Sources/Plasma/PubUtilLib/plMessage/plVaultNotifyMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plMessage/plVaultNotifyMsg.h => Sources/Plasma/PubUtilLib/plMessage/plVaultNotifyMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/CMakeLists.txt => Sources/Plasma/PubUtilLib/plModifier/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plAnimEventModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plAnimEventModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plAnimEventModifier.h => Sources/Plasma/PubUtilLib/plModifier/plAnimEventModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plAnimTimeConvertSDLModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plAnimTimeConvertSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plAnimTimeConvertSDLModifier.h => Sources/Plasma/PubUtilLib/plModifier/plAnimTimeConvertSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plAxisAnimModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plAxisAnimModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plAxisAnimModifier.h => Sources/Plasma/PubUtilLib/plModifier/plAxisAnimModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plCloneSpawnModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plCloneSpawnModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plCloneSpawnModifier.h => Sources/Plasma/PubUtilLib/plModifier/plCloneSpawnModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plDecalEnableMod.cpp => Sources/Plasma/PubUtilLib/plModifier/plDecalEnableMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plDecalEnableMod.h => Sources/Plasma/PubUtilLib/plModifier/plDecalEnableMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plDetectorLog.cpp => Sources/Plasma/PubUtilLib/plModifier/plDetectorLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plDetectorLog.h => Sources/Plasma/PubUtilLib/plModifier/plDetectorLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plExcludeRegionModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plExcludeRegionModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plExcludeRegionModifier.h => Sources/Plasma/PubUtilLib/plModifier/plExcludeRegionModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plGameMarkerModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plGameMarkerModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plGameMarkerModifier.h => Sources/Plasma/PubUtilLib/plModifier/plGameMarkerModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plImageLibMod.cpp => Sources/Plasma/PubUtilLib/plModifier/plImageLibMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plImageLibMod.h => Sources/Plasma/PubUtilLib/plModifier/plImageLibMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plInterfaceInfoModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plInterfaceInfoModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plInterfaceInfoModifier.h => Sources/Plasma/PubUtilLib/plModifier/plInterfaceInfoModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plLayerSDLModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plLayerSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plLayerSDLModifier.h => Sources/Plasma/PubUtilLib/plModifier/plLayerSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plLogicModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plLogicModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plLogicModifier.h => Sources/Plasma/PubUtilLib/plModifier/plLogicModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plMaintainersMarkerModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plMaintainersMarkerModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plMaintainersMarkerModifier.h => Sources/Plasma/PubUtilLib/plModifier/plMaintainersMarkerModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plModifierCreatable.h => Sources/Plasma/PubUtilLib/plModifier/plModifierCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plResponderModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plResponderModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plResponderModifier.h => Sources/Plasma/PubUtilLib/plModifier/plResponderModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plResponderSDLModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plResponderSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plResponderSDLModifier.h => Sources/Plasma/PubUtilLib/plModifier/plResponderSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSDLModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSDLModifier.h => Sources/Plasma/PubUtilLib/plModifier/plSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSimpleModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plSimpleModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSimpleModifier.h => Sources/Plasma/PubUtilLib/plModifier/plSimpleModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSoundSDLModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plSoundSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSoundSDLModifier.h => Sources/Plasma/PubUtilLib/plModifier/plSoundSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSpawnModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plSpawnModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plSpawnModifier.h => Sources/Plasma/PubUtilLib/plModifier/plSpawnModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plTagModifier.cpp => Sources/Plasma/PubUtilLib/plModifier/plTagModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plModifier/plTagModifier.h => Sources/Plasma/PubUtilLib/plModifier/plTagModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetClient/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plLinkEffectsMgr.cpp => Sources/Plasma/PubUtilLib/plNetClient/plLinkEffectsMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plLinkEffectsMgr.h => Sources/Plasma/PubUtilLib/plNetClient/plLinkEffectsMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.h => Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeLeaver.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeLeaver.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeLeaver.h => Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeLeaver.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientCommInterface.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientCommInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientCreatable.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientGroup.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientGroup.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientGroup.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientGroup.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrLoad.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrLoad.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrRecord.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrRecord.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrSend.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrSend.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrShow.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrShow.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrTask.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrTask.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrVault.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrVault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrVoice.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgrVoice.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgHandler.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgHandler.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgHandler.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgHandler.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgScreener.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgScreener.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgScreener.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgScreener.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientStats.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientStats.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientStats.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientStats.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientVNodeMgr.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientVNodeMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientVault.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetClientVault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetClientVault.h => Sources/Plasma/PubUtilLib/plNetClient/plNetClientVault.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.h => Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetObjectDebugger.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetObjectDebugger.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetObjectDebugger.h => Sources/Plasma/PubUtilLib/plNetClient/plNetObjectDebugger.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetVoiceList.cpp => Sources/Plasma/PubUtilLib/plNetClient/plNetVoiceList.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClient/plNetVoiceList.h => Sources/Plasma/PubUtilLib/plNetClient/plNetVoiceList.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientComm/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetClientComm/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp => Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.h => Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientCommCreatable.h => Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientCommCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientCommTask.cpp => Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientCommTask.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientCommTask.h => Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientCommTask.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientRecorder/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetClientRecorder/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientRecorder.cpp => Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientRecorder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientRecorder.h => Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientRecorder.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientStatsRecorder.cpp => Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientStatsRecorder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientStreamRecorder.cpp => Sources/Plasma/PubUtilLib/plNetClientRecorder/plNetClientStreamRecorder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetCommon/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plClientGuid.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plClientGuid.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plClientGuid.h => Sources/Plasma/PubUtilLib/plNetCommon/plClientGuid.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetCommon.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plNetCommon.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetCommon.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetCommon.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonConstants.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonConstants.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonCreatable.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonHelpers.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonHelpers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonHelpers.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetCommonHelpers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetMember.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plNetMember.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetMember.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetMember.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgHandler.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgHandler.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgScreener.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgScreener.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgScreener.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgScreener.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetServerSessionInfo.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plNetServerSessionInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plNetServerSessionInfo.h => Sources/Plasma/PubUtilLib/plNetCommon/plNetServerSessionInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plServerGuid.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plServerGuid.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plServerGuid.h => Sources/Plasma/PubUtilLib/plNetCommon/plServerGuid.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plSpawnPointInfo.cpp => Sources/Plasma/PubUtilLib/plNetCommon/plSpawnPointInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetCommon/plSpawnPointInfo.h => Sources/Plasma/PubUtilLib/plNetCommon/plSpawnPointInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetGameLib/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Intern.h => Sources/Plasma/PubUtilLib/plNetGameLib/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Pch.h => Sources/Plasma/PubUtilLib/plNetGameLib/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAllIncludes.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAllIncludes.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCore.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCore.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCore.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGame.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGame.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.h => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglMisc.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglMisc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglTrans.cpp => Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglTrans.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/plNetGameLib.h => Sources/Plasma/PubUtilLib/plNetGameLib/plNetGameLib.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetMessage/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetCommonMessage.h => Sources/Plasma/PubUtilLib/plNetMessage/plNetCommonMessage.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetMessage.cpp => Sources/Plasma/PubUtilLib/plNetMessage/plNetMessage.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetMessage.h => Sources/Plasma/PubUtilLib/plNetMessage/plNetMessage.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetMessageCreatable.h => Sources/Plasma/PubUtilLib/plNetMessage/plNetMessageCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgHelpers.cpp => Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgHelpers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgHelpers.h => Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgHelpers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgVersion.h => Sources/Plasma/PubUtilLib/plNetMessage/plNetMsgVersion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetTransport/CMakeLists.txt => Sources/Plasma/PubUtilLib/plNetTransport/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetTransport/plNetTransport.cpp => Sources/Plasma/PubUtilLib/plNetTransport/plNetTransport.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetTransport/plNetTransport.h => Sources/Plasma/PubUtilLib/plNetTransport/plNetTransport.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetTransport/plNetTransportMember.cpp => Sources/Plasma/PubUtilLib/plNetTransport/plNetTransportMember.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plNetTransport/plNetTransportMember.h => Sources/Plasma/PubUtilLib/plNetTransport/plNetTransportMember.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/CMakeLists.txt => Sources/Plasma/PubUtilLib/plParticleSystem/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plBoundInterface.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plBoundInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plBoundInterface.h => Sources/Plasma/PubUtilLib/plParticleSystem/plBoundInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plConvexVolume.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plConvexVolume.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plConvexVolume.h => Sources/Plasma/PubUtilLib/plParticleSystem/plConvexVolume.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plEffectTargetInfo.h => Sources/Plasma/PubUtilLib/plParticleSystem/plEffectTargetInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticle.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticle.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleApplicator.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleApplicator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleApplicator.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleApplicator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleCreatable.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEffect.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEffect.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEffect.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEffect.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEmitter.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEmitter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEmitter.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleEmitter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleGenerator.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleGenerator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleGenerator.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleGenerator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSDLMod.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSDLMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSDLMod.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSDLMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSystem.cpp => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSystem.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSystem.h => Sources/Plasma/PubUtilLib/plParticleSystem/plParticleSystem.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/CMakeLists.txt => Sources/Plasma/PubUtilLib/plPhysX/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plLOSDispatch.cpp => Sources/Plasma/PubUtilLib/plPhysX/plLOSDispatch.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plLOSDispatch.h => Sources/Plasma/PubUtilLib/plPhysX/plLOSDispatch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXConvert.cpp => Sources/Plasma/PubUtilLib/plPhysX/plPXConvert.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXConvert.h => Sources/Plasma/PubUtilLib/plPhysX/plPXConvert.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp => Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.h => Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalController.cpp => Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalController.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalController.h => Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalController.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.cpp => Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.h => Sources/Plasma/PubUtilLib/plPhysX/plPXPhysicalControllerCore.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXStream.h => Sources/Plasma/PubUtilLib/plPhysX/plPXStream.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPhysXCreatable.h => Sources/Plasma/PubUtilLib/plPhysX/plPhysXCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.cpp => Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.h => Sources/Plasma/PubUtilLib/plPhysX/plSimulationMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/CMakeLists.txt => Sources/Plasma/PubUtilLib/plPhysical/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.cpp => Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.h => Sources/Plasma/PubUtilLib/plPhysical/plCollisionDetector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plDetectorModifier.h => Sources/Plasma/PubUtilLib/plPhysical/plDetectorModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plEnvEffectDetector.cpp => Sources/Plasma/PubUtilLib/plPhysical/plEnvEffectDetector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plEnvEffectDetector.h => Sources/Plasma/PubUtilLib/plPhysical/plEnvEffectDetector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalCreatable.h => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalProxy.cpp => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalProxy.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalProxy.h => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalProxy.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSDLModifier.cpp => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSDLModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSDLModifier.h => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSDLModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSndGroup.cpp => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSndGroup.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSndGroup.h => Sources/Plasma/PubUtilLib/plPhysical/plPhysicalSndGroup.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicsSoundMgr.cpp => Sources/Plasma/PubUtilLib/plPhysical/plPhysicsSoundMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPhysicsSoundMgr.h => Sources/Plasma/PubUtilLib/plPhysical/plPhysicsSoundMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPickingDetector.cpp => Sources/Plasma/PubUtilLib/plPhysical/plPickingDetector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plPickingDetector.h => Sources/Plasma/PubUtilLib/plPhysical/plPickingDetector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plSimDefs.h => Sources/Plasma/PubUtilLib/plPhysical/plSimDefs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plSittingModifier.cpp => Sources/Plasma/PubUtilLib/plPhysical/plSittingModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysical/plSittingModifier.h => Sources/Plasma/PubUtilLib/plPhysical/plSittingModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/CMakeLists.txt => Sources/Plasma/PubUtilLib/plPipeline/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsFogControl.h => Sources/Plasma/PubUtilLib/plPipeline/hsFogControl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.cpp => Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.h => Sources/Plasma/PubUtilLib/plPipeline/hsG3DDeviceSelector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGColorizer.cpp => Sources/Plasma/PubUtilLib/plPipeline/hsGColorizer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGColorizer.h => Sources/Plasma/PubUtilLib/plPipeline/hsGColorizer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGDDrawDllLoad.cpp => Sources/Plasma/PubUtilLib/plPipeline/hsGDDrawDllLoad.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGDDrawDllLoad.h => Sources/Plasma/PubUtilLib/plPipeline/hsGDDrawDllLoad.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGDeviceRef.h => Sources/Plasma/PubUtilLib/plPipeline/hsGDeviceRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGEnviron.cpp => Sources/Plasma/PubUtilLib/plPipeline/hsGEnviron.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsGEnviron.h => Sources/Plasma/PubUtilLib/plPipeline/hsGEnviron.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/hsWinRef.h => Sources/Plasma/PubUtilLib/plPipeline/hsWinRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCaptureRender.cpp => Sources/Plasma/PubUtilLib/plPipeline/plCaptureRender.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCaptureRender.h => Sources/Plasma/PubUtilLib/plPipeline/plCaptureRender.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCubicRenderTarget.h => Sources/Plasma/PubUtilLib/plPipeline/plCubicRenderTarget.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCubicRenderTargetModifier.cpp => Sources/Plasma/PubUtilLib/plPipeline/plCubicRenderTargetModifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCubicRenderTargetModifier.h => Sources/Plasma/PubUtilLib/plPipeline/plCubicRenderTargetModifier.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCullTree.cpp => Sources/Plasma/PubUtilLib/plPipeline/plCullTree.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCullTree.h => Sources/Plasma/PubUtilLib/plPipeline/plCullTree.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plCuller.h => Sources/Plasma/PubUtilLib/plPipeline/plCuller.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.h => Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXBufferRefs.h => Sources/Plasma/PubUtilLib/plPipeline/plDXBufferRefs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXDeviceRef.h => Sources/Plasma/PubUtilLib/plPipeline/plDXDeviceRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXDeviceRefs.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXDeviceRefs.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXEnumerate.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXEnumerate.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXEnumerate.h => Sources/Plasma/PubUtilLib/plPipeline/plDXEnumerate.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXLightRef.h => Sources/Plasma/PubUtilLib/plPipeline/plDXLightRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXPipeline.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXPipeline.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXPipeline.h => Sources/Plasma/PubUtilLib/plPipeline/plDXPipeline.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXPixelShader.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXPixelShader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXPixelShader.h => Sources/Plasma/PubUtilLib/plPipeline/plDXPixelShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXRenderTargetRef.h => Sources/Plasma/PubUtilLib/plPipeline/plDXRenderTargetRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXSettings.h => Sources/Plasma/PubUtilLib/plPipeline/plDXSettings.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXShader.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXShader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXShader.h => Sources/Plasma/PubUtilLib/plPipeline/plDXShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXTextFont.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXTextFont.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXTextFont.h => Sources/Plasma/PubUtilLib/plPipeline/plDXTextFont.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXTextureRef.h => Sources/Plasma/PubUtilLib/plPipeline/plDXTextureRef.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXVertexShader.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDXVertexShader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDXVertexShader.h => Sources/Plasma/PubUtilLib/plPipeline/plDXVertexShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDebugText.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDebugText.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDebugText.h => Sources/Plasma/PubUtilLib/plPipeline/plDebugText.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDrawPrim.h => Sources/Plasma/PubUtilLib/plPipeline/plDrawPrim.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDynamicEnvMap.cpp => Sources/Plasma/PubUtilLib/plPipeline/plDynamicEnvMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plDynamicEnvMap.h => Sources/Plasma/PubUtilLib/plPipeline/plDynamicEnvMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plFogEnvironment.cpp => Sources/Plasma/PubUtilLib/plPipeline/plFogEnvironment.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plFogEnvironment.h => Sources/Plasma/PubUtilLib/plPipeline/plFogEnvironment.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plGBufferGroup.cpp => Sources/Plasma/PubUtilLib/plPipeline/plGBufferGroup.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plGBufferGroup.h => Sources/Plasma/PubUtilLib/plPipeline/plGBufferGroup.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plPipeDebugFlags.h => Sources/Plasma/PubUtilLib/plPipeline/plPipeDebugFlags.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plPipelineCreatable.h => Sources/Plasma/PubUtilLib/plPipeline/plPipelineCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plPipelineCreate.h => Sources/Plasma/PubUtilLib/plPipeline/plPipelineCreate.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp => Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h => Sources/Plasma/PubUtilLib/plPipeline/plPlates.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plRenderTarget.cpp => Sources/Plasma/PubUtilLib/plPipeline/plRenderTarget.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plRenderTarget.h => Sources/Plasma/PubUtilLib/plPipeline/plRenderTarget.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plStatusLogDrawer.cpp => Sources/Plasma/PubUtilLib/plPipeline/plStatusLogDrawer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plStatusLogDrawer.h => Sources/Plasma/PubUtilLib/plPipeline/plStatusLogDrawer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plStencil.h => Sources/Plasma/PubUtilLib/plPipeline/plStencil.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plTextFont.cpp => Sources/Plasma/PubUtilLib/plPipeline/plTextFont.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plTextFont.h => Sources/Plasma/PubUtilLib/plPipeline/plTextFont.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plTextGenerator.cpp => Sources/Plasma/PubUtilLib/plPipeline/plTextGenerator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plTextGenerator.h => Sources/Plasma/PubUtilLib/plPipeline/plTextGenerator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plTransitionMgr.cpp => Sources/Plasma/PubUtilLib/plPipeline/plTransitionMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plTransitionMgr.h => Sources/Plasma/PubUtilLib/plPipeline/plTransitionMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plVertCoder.cpp => Sources/Plasma/PubUtilLib/plPipeline/plVertCoder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plVertCoder.h => Sources/Plasma/PubUtilLib/plPipeline/plVertCoder.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plProgressMgr/CMakeLists.txt => Sources/Plasma/PubUtilLib/plProgressMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp => Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h => Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/CMakeLists.txt => Sources/Plasma/PubUtilLib/plResMgr/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plBSDiffBuffer.cpp => Sources/Plasma/PubUtilLib/plResMgr/plBSDiffBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plBSDiffBuffer.h => Sources/Plasma/PubUtilLib/plResMgr/plBSDiffBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plDiffBuffer.cpp => Sources/Plasma/PubUtilLib/plResMgr/plDiffBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plDiffBuffer.h => Sources/Plasma/PubUtilLib/plResMgr/plDiffBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plIndexFile.cpp => Sources/Plasma/PubUtilLib/plResMgr/plIndexFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plIndexFile.h => Sources/Plasma/PubUtilLib/plResMgr/plIndexFile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plKeyFinder.cpp => Sources/Plasma/PubUtilLib/plResMgr/plKeyFinder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plKeyFinder.h => Sources/Plasma/PubUtilLib/plResMgr/plKeyFinder.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plLoc.cpp => Sources/Plasma/PubUtilLib/plResMgr/plLoc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plLoc.h => Sources/Plasma/PubUtilLib/plResMgr/plLoc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plLocalization.cpp => Sources/Plasma/PubUtilLib/plResMgr/plLocalization.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plLocalization.h => Sources/Plasma/PubUtilLib/plResMgr/plLocalization.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plPageInfo.cpp => Sources/Plasma/PubUtilLib/plResMgr/plPageInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plPageInfo.h => Sources/Plasma/PubUtilLib/plResMgr/plPageInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plRegistryHelpers.cpp => Sources/Plasma/PubUtilLib/plResMgr/plRegistryHelpers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plRegistryHelpers.h => Sources/Plasma/PubUtilLib/plResMgr/plRegistryHelpers.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plRegistryKeyList.cpp => Sources/Plasma/PubUtilLib/plResMgr/plRegistryKeyList.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plRegistryKeyList.h => Sources/Plasma/PubUtilLib/plResMgr/plRegistryKeyList.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plRegistryNode.cpp => Sources/Plasma/PubUtilLib/plResMgr/plRegistryNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plRegistryNode.h => Sources/Plasma/PubUtilLib/plResMgr/plRegistryNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResManager.cpp => Sources/Plasma/PubUtilLib/plResMgr/plResManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResManager.h => Sources/Plasma/PubUtilLib/plResMgr/plResManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResManagerHelper.cpp => Sources/Plasma/PubUtilLib/plResMgr/plResManagerHelper.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResManagerHelper.h => Sources/Plasma/PubUtilLib/plResMgr/plResManagerHelper.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResMgr.cpp => Sources/Plasma/PubUtilLib/plResMgr/plResMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResMgr.h => Sources/Plasma/PubUtilLib/plResMgr/plResMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResMgrCreatable.h => Sources/Plasma/PubUtilLib/plResMgr/plResMgrCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plResMgrSettings.h => Sources/Plasma/PubUtilLib/plResMgr/plResMgrSettings.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plVersion.cpp => Sources/Plasma/PubUtilLib/plResMgr/plVersion.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plResMgr/plVersion.h => Sources/Plasma/PubUtilLib/plResMgr/plVersion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/CMakeLists.txt => Sources/Plasma/PubUtilLib/plSDL/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/animation.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/animation.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/avatar.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/avatar.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/cloneMessage.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/cloneMessage.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/clothing.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/clothing.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/morph.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/morph.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/particle.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/particle.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/physical.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/physical.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/responder.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/responder.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/sound.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/sound.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/SDL/xregion.sdl => Sources/Plasma/PubUtilLib/plSDL/SDL/xregion.sdl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plSDL.h => Sources/Plasma/PubUtilLib/plSDL/plSDL.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plSDLCreatable.h => Sources/Plasma/PubUtilLib/plSDL/plSDLCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plSDLDescriptor.h => Sources/Plasma/PubUtilLib/plSDL/plSDLDescriptor.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plSDLMgr.cpp => Sources/Plasma/PubUtilLib/plSDL/plSDLMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plSDLParser.cpp => Sources/Plasma/PubUtilLib/plSDL/plSDLParser.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plStateChangeNotifier.cpp => Sources/Plasma/PubUtilLib/plSDL/plStateChangeNotifier.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plStateDataRecord.cpp => Sources/Plasma/PubUtilLib/plSDL/plStateDataRecord.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plStateDescriptor.cpp => Sources/Plasma/PubUtilLib/plSDL/plStateDescriptor.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plStateVariable.cpp => Sources/Plasma/PubUtilLib/plSDL/plStateVariable.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDL/plVarDescriptor.cpp => Sources/Plasma/PubUtilLib/plSDL/plVarDescriptor.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowser.rc => Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowser.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowserDlg.cpp => Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowserDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowserDlg.h => Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowserDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowserDlgHandlers.cpp => Sources/Plasma/PubUtilLib/plSDLBrowser/plSDLBrowserDlgHandlers.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSDLBrowser/resource.h => Sources/Plasma/PubUtilLib/plSDLBrowser/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/CMakeLists.txt => Sources/Plasma/PubUtilLib/plScene/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plCullPoly.cpp => Sources/Plasma/PubUtilLib/plScene/plCullPoly.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plCullPoly.h => Sources/Plasma/PubUtilLib/plScene/plCullPoly.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plOccTree.cpp => Sources/Plasma/PubUtilLib/plScene/plOccTree.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plOccTree.h => Sources/Plasma/PubUtilLib/plScene/plOccTree.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plOccluder.cpp => Sources/Plasma/PubUtilLib/plScene/plOccluder.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plOccluder.h => Sources/Plasma/PubUtilLib/plScene/plOccluder.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plOccluderProxy.cpp => Sources/Plasma/PubUtilLib/plScene/plOccluderProxy.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plOccluderProxy.h => Sources/Plasma/PubUtilLib/plScene/plOccluderProxy.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plPageTreeMgr.cpp => Sources/Plasma/PubUtilLib/plScene/plPageTreeMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plPageTreeMgr.h => Sources/Plasma/PubUtilLib/plScene/plPageTreeMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plPostEffectMod.cpp => Sources/Plasma/PubUtilLib/plScene/plPostEffectMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plPostEffectMod.h => Sources/Plasma/PubUtilLib/plScene/plPostEffectMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plRelevanceMgr.cpp => Sources/Plasma/PubUtilLib/plScene/plRelevanceMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plRelevanceMgr.h => Sources/Plasma/PubUtilLib/plScene/plRelevanceMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plRelevanceRegion.cpp => Sources/Plasma/PubUtilLib/plScene/plRelevanceRegion.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plRelevanceRegion.h => Sources/Plasma/PubUtilLib/plScene/plRelevanceRegion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plRenderRequest.cpp => Sources/Plasma/PubUtilLib/plScene/plRenderRequest.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plRenderRequest.h => Sources/Plasma/PubUtilLib/plScene/plRenderRequest.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plSceneCreatable.h => Sources/Plasma/PubUtilLib/plScene/plSceneCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plSceneNode.cpp => Sources/Plasma/PubUtilLib/plScene/plSceneNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plSceneNode.h => Sources/Plasma/PubUtilLib/plScene/plSceneNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plVisMgr.cpp => Sources/Plasma/PubUtilLib/plScene/plVisMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plVisMgr.h => Sources/Plasma/PubUtilLib/plScene/plVisMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plVisRegion.cpp => Sources/Plasma/PubUtilLib/plScene/plVisRegion.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plScene/plVisRegion.h => Sources/Plasma/PubUtilLib/plScene/plVisRegion.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/CMakeLists.txt => Sources/Plasma/PubUtilLib/plSockets/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketReader.cpp => Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketReader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketReader.h => Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketReader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketWriter.cpp => Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketWriter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketWriter.h => Sources/Plasma/PubUtilLib/plSockets/plBufferedSocketWriter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plFdSet.cpp => Sources/Plasma/PubUtilLib/plSockets/plFdSet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plFdSet.h => Sources/Plasma/PubUtilLib/plSockets/plFdSet.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plMemBuffer.cpp => Sources/Plasma/PubUtilLib/plSockets/plMemBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plMemBuffer.h => Sources/Plasma/PubUtilLib/plSockets/plMemBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plNet.cpp => Sources/Plasma/PubUtilLib/plSockets/plNet.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plNet.h => Sources/Plasma/PubUtilLib/plSockets/plNet.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plOutgoingUdpSocket.cpp => Sources/Plasma/PubUtilLib/plSockets/plOutgoingUdpSocket.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plOutgoingUdpSocket.h => Sources/Plasma/PubUtilLib/plSockets/plOutgoingUdpSocket.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plRingBuffer.cpp => Sources/Plasma/PubUtilLib/plSockets/plRingBuffer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plRingBuffer.h => Sources/Plasma/PubUtilLib/plSockets/plRingBuffer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plSocket.cpp => Sources/Plasma/PubUtilLib/plSockets/plSocket.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plSocket.h => Sources/Plasma/PubUtilLib/plSockets/plSocket.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plTcpListenSocket.cpp => Sources/Plasma/PubUtilLib/plSockets/plTcpListenSocket.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plTcpListenSocket.h => Sources/Plasma/PubUtilLib/plSockets/plTcpListenSocket.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plTcpSocket.cpp => Sources/Plasma/PubUtilLib/plSockets/plTcpSocket.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSockets/plTcpSocket.h => Sources/Plasma/PubUtilLib/plSockets/plTcpSocket.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/CMakeLists.txt => Sources/Plasma/PubUtilLib/plStatGather/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plAutoProfile.cpp => Sources/Plasma/PubUtilLib/plStatGather/plAutoProfile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plAutoProfile.h => Sources/Plasma/PubUtilLib/plStatGather/plAutoProfile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plCalculatedProfiles.cpp => Sources/Plasma/PubUtilLib/plStatGather/plCalculatedProfiles.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plCalculatedProfiles.h => Sources/Plasma/PubUtilLib/plStatGather/plCalculatedProfiles.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plProfileManagerFull.cpp => Sources/Plasma/PubUtilLib/plStatGather/plProfileManagerFull.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plProfileManagerFull.h => Sources/Plasma/PubUtilLib/plStatGather/plProfileManagerFull.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatGather/plStatGatherCreatable.h => Sources/Plasma/PubUtilLib/plStatGather/plStatGatherCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/CMakeLists.txt => Sources/Plasma/PubUtilLib/plStatusLog/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/plEncryptLogLine.cpp => Sources/Plasma/PubUtilLib/plStatusLog/plEncryptLogLine.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/plEncryptLogLine.h => Sources/Plasma/PubUtilLib/plStatusLog/plEncryptLogLine.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/plLoggable.cpp => Sources/Plasma/PubUtilLib/plStatusLog/plLoggable.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/plLoggable.h => Sources/Plasma/PubUtilLib/plStatusLog/plLoggable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.cpp => Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.h => Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStreamLogger/CMakeLists.txt => Sources/Plasma/PubUtilLib/plStreamLogger/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStreamLogger/plStreamLogger.cpp => Sources/Plasma/PubUtilLib/plStreamLogger/plStreamLogger.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStreamLogger/plStreamLogger.h => Sources/Plasma/PubUtilLib/plStreamLogger/plStreamLogger.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plStreamLogger/plStreamLoggerC.h => Sources/Plasma/PubUtilLib/plStreamLogger/plStreamLoggerC.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/CMakeLists.txt => Sources/Plasma/PubUtilLib/plSurface/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/AssShader.zip => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/AssShader.zip
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_BiasNormals.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_BiasNormals.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CaddAadd.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CaddAadd.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CaddAbase.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CaddAbase.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CaddAmult.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CaddAmult.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CalphaAadd.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CalphaAadd.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CalphaAbase.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CalphaAbase.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CalphaAmult.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CalphaAmult.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CbaseAbase.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CbaseAbase.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CmultAadd.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CmultAadd.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CmultAbase.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CmultAbase.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CmultAmult.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CmultAmult.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CompCosines.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_CompCosines.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_GrassShader.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_GrassShader.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_MoreCosines.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_MoreCosines.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_ShoreLeave6.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_ShoreLeave6.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveDecEnv.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveDecEnv.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveFixed.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveFixed.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveGraph.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveGraph.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveGrid.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveGrid.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveRip.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/ps_WaveRip.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_BiasNormals.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_BiasNormals.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_CompCosines.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_CompCosines.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_GrassShader.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_GrassShader.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_ShoreLeave6.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_ShoreLeave6.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_ShoreLeave7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_ShoreLeave7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec1Lay.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec1Lay.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec1Lay_7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec1Lay_7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay11.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay11.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay11_7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay11_7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay12.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay12.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay12_7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDec2Lay12_7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDecEnv.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDecEnv.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDecEnv_7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveDecEnv_7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveFixedFin6.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveFixedFin6.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveFixedFin7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveFixedFin7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveGraph2.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveGraph2.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveGridFin.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveGridFin.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveRip.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveRip.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveRip7.inl => Sources/Plasma/PubUtilLib/plSurface/ShaderSrc/vs_WaveRip7.inl
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/hsGMaterial.cpp => Sources/Plasma/PubUtilLib/plSurface/hsGMaterial.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/hsGMaterial.h => Sources/Plasma/PubUtilLib/plSurface/hsGMaterial.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plGrassShaderMod.cpp => Sources/Plasma/PubUtilLib/plSurface/plGrassShaderMod.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plGrassShaderMod.h => Sources/Plasma/PubUtilLib/plSurface/plGrassShaderMod.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayer.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayer.h => Sources/Plasma/PubUtilLib/plSurface/plLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerAnimation.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerAnimation.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerAnimation.h => Sources/Plasma/PubUtilLib/plSurface/plLayerAnimation.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerDepth.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerDepth.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerDepth.h => Sources/Plasma/PubUtilLib/plSurface/plLayerDepth.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerInterface.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerInterface.h => Sources/Plasma/PubUtilLib/plSurface/plLayerInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerMultiply.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerMultiply.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerMultiply.h => Sources/Plasma/PubUtilLib/plSurface/plLayerMultiply.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerOr.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerOr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerOr.h => Sources/Plasma/PubUtilLib/plSurface/plLayerOr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerShadowBase.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerShadowBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerShadowBase.h => Sources/Plasma/PubUtilLib/plSurface/plLayerShadowBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerWrapper.cpp => Sources/Plasma/PubUtilLib/plSurface/plLayerWrapper.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plLayerWrapper.h => Sources/Plasma/PubUtilLib/plSurface/plLayerWrapper.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plShader.cpp => Sources/Plasma/PubUtilLib/plSurface/plShader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plShader.h => Sources/Plasma/PubUtilLib/plSurface/plShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plShaderTable.cpp => Sources/Plasma/PubUtilLib/plSurface/plShaderTable.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plShaderTable.h => Sources/Plasma/PubUtilLib/plSurface/plShaderTable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/plSurfaceCreatable.h => Sources/Plasma/PubUtilLib/plSurface/plSurfaceCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_BiasNormals.h => Sources/Plasma/PubUtilLib/plSurface/ps_BiasNormals.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CaddAAdd.h => Sources/Plasma/PubUtilLib/plSurface/ps_CaddAAdd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CaddAMult.h => Sources/Plasma/PubUtilLib/plSurface/ps_CaddAMult.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CaddAbase.h => Sources/Plasma/PubUtilLib/plSurface/ps_CaddAbase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CalphaAMult.h => Sources/Plasma/PubUtilLib/plSurface/ps_CalphaAMult.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CalphaAadd.h => Sources/Plasma/PubUtilLib/plSurface/ps_CalphaAadd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CalphaAbase.h => Sources/Plasma/PubUtilLib/plSurface/ps_CalphaAbase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CbaseAbase.h => Sources/Plasma/PubUtilLib/plSurface/ps_CbaseAbase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CmultAAdd.h => Sources/Plasma/PubUtilLib/plSurface/ps_CmultAAdd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CmultAMult.h => Sources/Plasma/PubUtilLib/plSurface/ps_CmultAMult.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CmultAbase.h => Sources/Plasma/PubUtilLib/plSurface/ps_CmultAbase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_CompCosines.h => Sources/Plasma/PubUtilLib/plSurface/ps_CompCosines.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_GrassShader.h => Sources/Plasma/PubUtilLib/plSurface/ps_GrassShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_MoreCosines.h => Sources/Plasma/PubUtilLib/plSurface/ps_MoreCosines.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_ShoreLeave6.h => Sources/Plasma/PubUtilLib/plSurface/ps_ShoreLeave6.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_WaveDecEnv.h => Sources/Plasma/PubUtilLib/plSurface/ps_WaveDecEnv.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_WaveFixed.h => Sources/Plasma/PubUtilLib/plSurface/ps_WaveFixed.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_WaveGraph.h => Sources/Plasma/PubUtilLib/plSurface/ps_WaveGraph.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_WaveGrid.h => Sources/Plasma/PubUtilLib/plSurface/ps_WaveGrid.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/ps_WaveRip.h => Sources/Plasma/PubUtilLib/plSurface/ps_WaveRip.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_BiasNormals.h => Sources/Plasma/PubUtilLib/plSurface/vs_BiasNormals.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_CompCosines.h => Sources/Plasma/PubUtilLib/plSurface/vs_CompCosines.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_GrassShader.h => Sources/Plasma/PubUtilLib/plSurface/vs_GrassShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_ShoreLeave6.h => Sources/Plasma/PubUtilLib/plSurface/vs_ShoreLeave6.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_ShoreLeave7.h => Sources/Plasma/PubUtilLib/plSurface/vs_ShoreLeave7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec1Lay.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec1Lay.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec1Lay_7.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec1Lay_7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay11.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay11.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay11_7.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay11_7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay12.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay12.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay12_7.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDec2Lay12_7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDecEnv.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDecEnv.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveDecEnv_7.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveDecEnv_7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveFixedFin6.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveFixedFin6.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveFixedFin7.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveFixedFin7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveGraph2.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveGraph2.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveGridFin.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveGridFin.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveRip.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveRip.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plSurface/vs_WaveRip7.h => Sources/Plasma/PubUtilLib/plSurface/vs_WaveRip7.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/CMakeLists.txt => Sources/Plasma/PubUtilLib/plTransform/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/hsAffineParts.cpp => Sources/Plasma/PubUtilLib/plTransform/hsAffineParts.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/hsAffineParts.h => Sources/Plasma/PubUtilLib/plTransform/hsAffineParts.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/hsEuler.cpp => Sources/Plasma/PubUtilLib/plTransform/hsEuler.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/hsEuler.h => Sources/Plasma/PubUtilLib/plTransform/hsEuler.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/mat_decomp.cpp => Sources/Plasma/PubUtilLib/plTransform/mat_decomp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/mat_decomp.h => Sources/Plasma/PubUtilLib/plTransform/mat_decomp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plTransform/notes.txt => Sources/Plasma/PubUtilLib/plTransform/notes.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUUID/CMakeLists.txt => Sources/Plasma/PubUtilLib/plUUID/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUUID/plUUID.cpp => Sources/Plasma/PubUtilLib/plUUID/plUUID.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUUID/plUUID.h => Sources/Plasma/PubUtilLib/plUUID/plUUID.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUUID/plUUID_Unix.cpp => Sources/Plasma/PubUtilLib/plUUID/plUUID_Unix.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUUID/plUUID_Win32.cpp => Sources/Plasma/PubUtilLib/plUUID/plUUID_Win32.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/CMakeLists.txt => Sources/Plasma/PubUtilLib/plUnifiedTime/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plClientUnifiedTime.cpp => Sources/Plasma/PubUtilLib/plUnifiedTime/plClientUnifiedTime.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plClientUnifiedTime.h => Sources/Plasma/PubUtilLib/plUnifiedTime/plClientUnifiedTime.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plTimeSpan.cpp => Sources/Plasma/PubUtilLib/plUnifiedTime/plTimeSpan.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plTimeSpan.h => Sources/Plasma/PubUtilLib/plUnifiedTime/plTimeSpan.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTime.cpp => Sources/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTime.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTime.h => Sources/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTime.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTimeCreatable.h => Sources/Plasma/PubUtilLib/plUnifiedTime/plUnifiedTimeCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/CMakeLists.txt => Sources/Plasma/PubUtilLib/plVault/CMakeLists.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/Intern.h => Sources/Plasma/PubUtilLib/plVault/Intern.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/Pch.h => Sources/Plasma/PubUtilLib/plVault/Pch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plAgeInfoSource.h => Sources/Plasma/PubUtilLib/plVault/plAgeInfoSource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plDniCoordinateInfo.cpp => Sources/Plasma/PubUtilLib/plVault/plDniCoordinateInfo.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plDniCoordinateInfo.h => Sources/Plasma/PubUtilLib/plVault/plDniCoordinateInfo.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVault.cpp => Sources/Plasma/PubUtilLib/plVault/plVault.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVault.h => Sources/Plasma/PubUtilLib/plVault/plVault.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp => Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h => Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultConstants.cpp => Sources/Plasma/PubUtilLib/plVault/plVaultConstants.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultConstants.h => Sources/Plasma/PubUtilLib/plVault/plVaultConstants.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultCreatable.h => Sources/Plasma/PubUtilLib/plVault/plVaultCreatable.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultNode.cpp => Sources/Plasma/PubUtilLib/plVault/plVaultNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultNode.h => Sources/Plasma/PubUtilLib/plVault/plVaultNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultNodeAccess.cpp => Sources/Plasma/PubUtilLib/plVault/plVaultNodeAccess.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plVault/plVaultNodeAccess.h => Sources/Plasma/PubUtilLib/plVault/plVaultNodeAccess.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWinStrBlock/strblock.c => Sources/Plasma/PubUtilLib/plWinStrBlock/strblock.c
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWinStrBlock/strblock.h => Sources/Plasma/PubUtilLib/plWinStrBlock/strblock.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/basewnd.cpp => Sources/Plasma/PubUtilLib/plWndCtrls/basewnd.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/basewnd.h => Sources/Plasma/PubUtilLib/plWndCtrls/basewnd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plButton.h => Sources/Plasma/PubUtilLib/plWndCtrls/plButton.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plCheckBox.h => Sources/Plasma/PubUtilLib/plWndCtrls/plCheckBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plComboBox.h => Sources/Plasma/PubUtilLib/plWndCtrls/plComboBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plControl.h => Sources/Plasma/PubUtilLib/plWndCtrls/plControl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plDialog.h => Sources/Plasma/PubUtilLib/plWndCtrls/plDialog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plEdit.h => Sources/Plasma/PubUtilLib/plWndCtrls/plEdit.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plLabel.h => Sources/Plasma/PubUtilLib/plWndCtrls/plLabel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plListBox.h => Sources/Plasma/PubUtilLib/plWndCtrls/plListBox.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plProgressBar.h => Sources/Plasma/PubUtilLib/plWndCtrls/plProgressBar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plRadioButton.h => Sources/Plasma/PubUtilLib/plWndCtrls/plRadioButton.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plStatusBar.h => Sources/Plasma/PubUtilLib/plWndCtrls/plStatusBar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plTrackBar.h => Sources/Plasma/PubUtilLib/plWndCtrls/plTrackBar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plWindow.h => Sources/Plasma/PubUtilLib/plWndCtrls/plWindow.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plWndCtrls.cpp => Sources/Plasma/PubUtilLib/plWndCtrls/plWndCtrls.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/plWndCtrls.h => Sources/Plasma/PubUtilLib/plWndCtrls/plWndCtrls.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/webhost.cpp => Sources/Plasma/PubUtilLib/plWndCtrls/webhost.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plWndCtrls/webhost.h => Sources/Plasma/PubUtilLib/plWndCtrls/webhost.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/Cypython/PC/placeholder.txt => Sources/Plasma/PythonLib/Cypython/PC/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/Cypython/placeholder.txt => Sources/Plasma/PythonLib/Cypython/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyNetClientComm/PythonLib/placeholder.txt => Sources/Plasma/PythonLib/pyNetClientComm/PythonLib/placeholder.txt
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyNetClientComm/pyNetClientComm.cpp => Sources/Plasma/PythonLib/pyNetClientComm/pyNetClientComm.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyNetClientComm/pyNetClientComm.h => Sources/Plasma/PythonLib/pyNetClientComm/pyNetClientComm.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyNetClientComm/pyNetClientCommGlue.cpp => Sources/Plasma/PythonLib/pyNetClientComm/pyNetClientCommGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyNetClientGame/pyNetClientGame.cpp => Sources/Plasma/PythonLib/pyNetClientGame/pyNetClientGame.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyNetClientGame/pyNetClientGame.h => Sources/Plasma/PythonLib/pyNetClientGame/pyNetClientGame.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/creatables.cpp => Sources/Plasma/PythonLib/pyPlasma/creatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/dllmain.cpp => Sources/Plasma/PythonLib/pyPlasma/dllmain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/pyPlasmaTest.py => Sources/Plasma/PythonLib/pyPlasma/pyPlasmaTest.py
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPloticus/dllmain.cpp => Sources/Plasma/PythonLib/pyPloticus/dllmain.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPloticus/pyPloticus.cpp => Sources/Plasma/PythonLib/pyPloticus/pyPloticus.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPloticus/pyPloticus.h => Sources/Plasma/PythonLib/pyPloticus/pyPloticus.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyVault/pyVNodeMgr.cpp => Sources/Plasma/PythonLib/pyVault/pyVNodeMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyVault/pyVNodeMgr.h => Sources/Plasma/PythonLib/pyVault/pyVNodeMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyVault/pyVNodeMgrGlue.cpp => Sources/Plasma/PythonLib/pyVault/pyVNodeMgrGlue.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/CheckFolderVar/CheckFolderVar.cpp => Sources/Tools/CheckFolderVar/CheckFolderVar.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxAss/ValdezInterface.h => Sources/Tools/MaxAss/ValdezInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/BipedKiller.h => Sources/Tools/MaxComponent/BipedKiller.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/ComponentDummies.h => Sources/Tools/MaxComponent/ComponentDummies.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/WavFileStructs.h => Sources/Tools/MaxComponent/WavFileStructs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/icon1.ico => Sources/Tools/MaxComponent/icon1.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/pfGUISkinComp.cpp => Sources/Tools/MaxComponent/pfGUISkinComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/pfGUISkinComp.h => Sources/Tools/MaxComponent/pfGUISkinComp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAGComponents.cpp => Sources/Tools/MaxComponent/plAGComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plActivatorBaseComponent.cpp => Sources/Tools/MaxComponent/plActivatorBaseComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plActivatorBaseComponent.h => Sources/Tools/MaxComponent/plActivatorBaseComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plActivatorComponent.cpp => Sources/Tools/MaxComponent/plActivatorComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plActivatorComponent.h => Sources/Tools/MaxComponent/plActivatorComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimCompProc.cpp => Sources/Tools/MaxComponent/plAnimCompProc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimCompProc.h => Sources/Tools/MaxComponent/plAnimCompProc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimComponent.cpp => Sources/Tools/MaxComponent/plAnimComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimComponent.h => Sources/Tools/MaxComponent/plAnimComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimEventComponent.cpp => Sources/Tools/MaxComponent/plAnimEventComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimEventComponent.h => Sources/Tools/MaxComponent/plAnimEventComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAnimObjInterface.h => Sources/Tools/MaxComponent/plAnimObjInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAudioComponents.cpp => Sources/Tools/MaxComponent/plAudioComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAudioComponents.h => Sources/Tools/MaxComponent/plAudioComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoComponent.cpp => Sources/Tools/MaxComponent/plAutoComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIBase.cpp => Sources/Tools/MaxComponent/plAutoUIBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIBase.h => Sources/Tools/MaxComponent/plAutoUIBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIBlock.cpp => Sources/Tools/MaxComponent/plAutoUIBlock.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIBlock.h => Sources/Tools/MaxComponent/plAutoUIBlock.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIComp.cpp => Sources/Tools/MaxComponent/plAutoUIComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIComp.h => Sources/Tools/MaxComponent/plAutoUIComp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIParams.cpp => Sources/Tools/MaxComponent/plAutoUIParams.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAutoUIParams.h => Sources/Tools/MaxComponent/plAutoUIParams.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAvatarComponent.cpp => Sources/Tools/MaxComponent/plAvatarComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plAvatarComponent.h => Sources/Tools/MaxComponent/plAvatarComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plBehavioralComponents.cpp => Sources/Tools/MaxComponent/plBehavioralComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plBehavioralComponents.h => Sources/Tools/MaxComponent/plBehavioralComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plBipedKiller.cpp => Sources/Tools/MaxComponent/plBipedKiller.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plBlowComponent.cpp => Sources/Tools/MaxComponent/plBlowComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plBlowComponent.h => Sources/Tools/MaxComponent/plBlowComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plCAnimParamBlock.cpp => Sources/Tools/MaxComponent/plCAnimParamBlock.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plCAnimParamBlock.h => Sources/Tools/MaxComponent/plCAnimParamBlock.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plCameraComponent.cpp => Sources/Tools/MaxComponent/plCameraComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plCameraComponent.h => Sources/Tools/MaxComponent/plCameraComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plCameraComponents.cpp => Sources/Tools/MaxComponent/plCameraComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plCameraComponents.h => Sources/Tools/MaxComponent/plCameraComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClickDragComponent.cpp => Sources/Tools/MaxComponent/plClickDragComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClickDragComponent.h => Sources/Tools/MaxComponent/plClickDragComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClickableComponent.cpp => Sources/Tools/MaxComponent/plClickableComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClickableComponent.h => Sources/Tools/MaxComponent/plClickableComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClimbComponent.cpp => Sources/Tools/MaxComponent/plClimbComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClimbComponent.h => Sources/Tools/MaxComponent/plClimbComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClothingComponent.cpp => Sources/Tools/MaxComponent/plClothingComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClothingComponent.h => Sources/Tools/MaxComponent/plClothingComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClusterComponent.cpp => Sources/Tools/MaxComponent/plClusterComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plClusterComponent.h => Sources/Tools/MaxComponent/plClusterComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponent.cpp => Sources/Tools/MaxComponent/plComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponent.h => Sources/Tools/MaxComponent/plComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponent.rc => Sources/Tools/MaxComponent/plComponent.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentBase.cpp => Sources/Tools/MaxComponent/plComponentBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentBase.h => Sources/Tools/MaxComponent/plComponentBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentExt.h => Sources/Tools/MaxComponent/plComponentExt.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentMgr.cpp => Sources/Tools/MaxComponent/plComponentMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentMgr.h => Sources/Tools/MaxComponent/plComponentMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentProcBase.h => Sources/Tools/MaxComponent/plComponentProcBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentReg.h => Sources/Tools/MaxComponent/plComponentReg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentTools.cpp => Sources/Tools/MaxComponent/plComponentTools.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plComponentTools.h => Sources/Tools/MaxComponent/plComponentTools.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plDicer.cpp => Sources/Tools/MaxComponent/plDicer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plDicer.h => Sources/Tools/MaxComponent/plDicer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plDistribComponent.cpp => Sources/Tools/MaxComponent/plDistribComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plDistribComponent.h => Sources/Tools/MaxComponent/plDistribComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plDistribComponent_old.cpp => Sources/Tools/MaxComponent/plDistribComponent_old.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plDistribComponent_old.h => Sources/Tools/MaxComponent/plDistribComponent_old.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plExcludeRegionComponent.cpp => Sources/Tools/MaxComponent/plExcludeRegionComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plExcludeRegionComponent.h => Sources/Tools/MaxComponent/plExcludeRegionComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plFlexibilityComponent.h => Sources/Tools/MaxComponent/plFlexibilityComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plFootPrintComponent.cpp => Sources/Tools/MaxComponent/plFootPrintComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plFootstepComponent.cpp => Sources/Tools/MaxComponent/plFootstepComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plFootstepComponent.h => Sources/Tools/MaxComponent/plFootstepComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plGUICompClassIDs.h => Sources/Tools/MaxComponent/plGUICompClassIDs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plGUIComponents.cpp => Sources/Tools/MaxComponent/plGUIComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plGUIComponents.h => Sources/Tools/MaxComponent/plGUIComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plGrassComponent.cpp => Sources/Tools/MaxComponent/plGrassComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plGrassComponent.h => Sources/Tools/MaxComponent/plGrassComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plIgnoreComponent.cpp => Sources/Tools/MaxComponent/plIgnoreComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plImpactGadgetComponent.cpp => Sources/Tools/MaxComponent/plImpactGadgetComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plImpactGadgetComponent.h => Sources/Tools/MaxComponent/plImpactGadgetComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plInventoryObjComponent.cpp => Sources/Tools/MaxComponent/plInventoryObjComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plInventoryObjComponent.h => Sources/Tools/MaxComponent/plInventoryObjComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLODFadeComponent.cpp => Sources/Tools/MaxComponent/plLODFadeComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLODFadeComponent.h => Sources/Tools/MaxComponent/plLODFadeComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLightGrpComponent.cpp => Sources/Tools/MaxComponent/plLightGrpComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLightGrpComponent.h => Sources/Tools/MaxComponent/plLightGrpComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLightMapComponent.cpp => Sources/Tools/MaxComponent/plLightMapComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLightMapComponent.h => Sources/Tools/MaxComponent/plLightMapComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plLineFollowComp.cpp => Sources/Tools/MaxComponent/plLineFollowComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMaxAnimUtils.cpp => Sources/Tools/MaxComponent/plMaxAnimUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMaxAnimUtils.h => Sources/Tools/MaxComponent/plMaxAnimUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMaxWaveUtils.cpp => Sources/Tools/MaxComponent/plMaxWaveUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMaxWaveUtils.h => Sources/Tools/MaxComponent/plMaxWaveUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMiscComponents.cpp => Sources/Tools/MaxComponent/plMiscComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMiscComponents.h => Sources/Tools/MaxComponent/plMiscComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMorphSeqComp.cpp => Sources/Tools/MaxComponent/plMorphSeqComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMultistageBehComponent.cpp => Sources/Tools/MaxComponent/plMultistageBehComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMultistageBehComponent.h => Sources/Tools/MaxComponent/plMultistageBehComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMultistageStage.cpp => Sources/Tools/MaxComponent/plMultistageStage.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plMultistageStage.h => Sources/Tools/MaxComponent/plMultistageStage.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNPCSpawnComp.cpp => Sources/Tools/MaxComponent/plNPCSpawnComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNPCSpawnComp.h => Sources/Tools/MaxComponent/plNPCSpawnComp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNavigableComponents.cpp => Sources/Tools/MaxComponent/plNavigableComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNavigableComponents.h => Sources/Tools/MaxComponent/plNavigableComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNoteTrackDlgComp.cpp => Sources/Tools/MaxComponent/plNoteTrackDlgComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNoteTrackDlgComp.h => Sources/Tools/MaxComponent/plNoteTrackDlgComp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNotetrackAnim.cpp => Sources/Tools/MaxComponent/plNotetrackAnim.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNotetrackAnim.h => Sources/Tools/MaxComponent/plNotetrackAnim.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNotetrackDlg.cpp => Sources/Tools/MaxComponent/plNotetrackDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plNotetrackDlg.h => Sources/Tools/MaxComponent/plNotetrackDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plObjectFlockerComponent.cpp => Sources/Tools/MaxComponent/plObjectFlockerComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plObjectFlockerComponent.h => Sources/Tools/MaxComponent/plObjectFlockerComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plOneShotComponent.cpp => Sources/Tools/MaxComponent/plOneShotComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plOneShotComponent.h => Sources/Tools/MaxComponent/plOneShotComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plParticleComponents.cpp => Sources/Tools/MaxComponent/plParticleComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plParticleComponents.h => Sources/Tools/MaxComponent/plParticleComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPhysConstraintComponents.cpp => Sources/Tools/MaxComponent/plPhysConstraintComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPhysicalComponents.cpp => Sources/Tools/MaxComponent/plPhysicalComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPhysicalComponents.h => Sources/Tools/MaxComponent/plPhysicalComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPhysicsGroups.h => Sources/Tools/MaxComponent/plPhysicsGroups.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickLocalizationDlg.cpp => Sources/Tools/MaxComponent/plPickLocalizationDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickLocalizationDlg.h => Sources/Tools/MaxComponent/plPickLocalizationDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickMaterialMap.cpp => Sources/Tools/MaxComponent/plPickMaterialMap.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickMaterialMap.h => Sources/Tools/MaxComponent/plPickMaterialMap.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickNode.cpp => Sources/Tools/MaxComponent/plPickNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickNode.h => Sources/Tools/MaxComponent/plPickNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickNodeBase.cpp => Sources/Tools/MaxComponent/plPickNodeBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickNodeBase.h => Sources/Tools/MaxComponent/plPickNodeBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPickNodeComp.cpp => Sources/Tools/MaxComponent/plPickNodeComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPythonFileComponent.cpp => Sources/Tools/MaxComponent/plPythonFileComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plPythonFileComponent.h => Sources/Tools/MaxComponent/plPythonFileComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plRepComponent.cpp => Sources/Tools/MaxComponent/plRepComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderAnim.cpp => Sources/Tools/MaxComponent/plResponderAnim.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderAnim.h => Sources/Tools/MaxComponent/plResponderAnim.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderCmd.h => Sources/Tools/MaxComponent/plResponderCmd.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderComponent.cpp => Sources/Tools/MaxComponent/plResponderComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderComponent.h => Sources/Tools/MaxComponent/plResponderComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderComponentPriv.h => Sources/Tools/MaxComponent/plResponderComponentPriv.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderGetComp.cpp => Sources/Tools/MaxComponent/plResponderGetComp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderGetComp.h => Sources/Tools/MaxComponent/plResponderGetComp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderLink.cpp => Sources/Tools/MaxComponent/plResponderLink.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderLink.h => Sources/Tools/MaxComponent/plResponderLink.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderMtl.cpp => Sources/Tools/MaxComponent/plResponderMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderMtl.h => Sources/Tools/MaxComponent/plResponderMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderWait.cpp => Sources/Tools/MaxComponent/plResponderWait.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plResponderWait.h => Sources/Tools/MaxComponent/plResponderWait.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plSeekPoint.cpp => Sources/Tools/MaxComponent/plSeekPoint.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plShadowComponents.cpp => Sources/Tools/MaxComponent/plShadowComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plShadowComponents.h => Sources/Tools/MaxComponent/plShadowComponents.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plSmoothComponent.cpp => Sources/Tools/MaxComponent/plSmoothComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plSoftVolumeComponent.cpp => Sources/Tools/MaxComponent/plSoftVolumeComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plSoftVolumeComponent.h => Sources/Tools/MaxComponent/plSoftVolumeComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plTemplateComponent.cpp => Sources/Tools/MaxComponent/plTemplateComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plTypesComponents.cpp => Sources/Tools/MaxComponent/plTypesComponents.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plVolumeGadgetComponent.cpp => Sources/Tools/MaxComponent/plVolumeGadgetComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plVolumeGadgetComponent.h => Sources/Tools/MaxComponent/plVolumeGadgetComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plWaterComponent.cpp => Sources/Tools/MaxComponent/plWaterComponent.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plWaterComponent.h => Sources/Tools/MaxComponent/plWaterComponent.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plXImposter.cpp => Sources/Tools/MaxComponent/plXImposter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/plXImposter.h => Sources/Tools/MaxComponent/plXImposter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/resource.h => Sources/Tools/MaxComponent/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxComponent/zoomin1.ico => Sources/Tools/MaxComponent/zoomin1.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/StringTokenizer.cpp => Sources/Tools/MaxConvert/StringTokenizer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/StringTokenizer.h => Sources/Tools/MaxConvert/StringTokenizer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/UserPropMgr.cpp => Sources/Tools/MaxConvert/UserPropMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/UserPropMgr.h => Sources/Tools/MaxConvert/UserPropMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsControlConverter.cpp => Sources/Tools/MaxConvert/hsControlConverter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsControlConverter.h => Sources/Tools/MaxConvert/hsControlConverter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsConverterUtils.cpp => Sources/Tools/MaxConvert/hsConverterUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsConverterUtils.h => Sources/Tools/MaxConvert/hsConverterUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsMaterialConverter.cpp => Sources/Tools/MaxConvert/hsMaterialConverter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsMaterialConverter.h => Sources/Tools/MaxConvert/hsMaterialConverter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsMaxLayerBase.h => Sources/Tools/MaxConvert/hsMaxLayerBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsVertexShader.cpp => Sources/Tools/MaxConvert/hsVertexShader.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/hsVertexShader.h => Sources/Tools/MaxConvert/hsVertexShader.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plBitmapCreator.cpp => Sources/Tools/MaxConvert/plBitmapCreator.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plBitmapCreator.h => Sources/Tools/MaxConvert/plBitmapCreator.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plClusterUtil.cpp => Sources/Tools/MaxConvert/plClusterUtil.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plClusterUtil.h => Sources/Tools/MaxConvert/plClusterUtil.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plConvert.cpp => Sources/Tools/MaxConvert/plConvert.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plConvert.h => Sources/Tools/MaxConvert/plConvert.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plDistTree.cpp => Sources/Tools/MaxConvert/plDistTree.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plDistTree.h => Sources/Tools/MaxConvert/plDistTree.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plDistributor.cpp => Sources/Tools/MaxConvert/plDistributor.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plDistributor.h => Sources/Tools/MaxConvert/plDistributor.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plLayerConverter.cpp => Sources/Tools/MaxConvert/plLayerConverter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plLayerConverter.h => Sources/Tools/MaxConvert/plLayerConverter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plLightMapGen.cpp => Sources/Tools/MaxConvert/plLightMapGen.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plLightMapGen.h => Sources/Tools/MaxConvert/plLightMapGen.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plMaxLightContext.h => Sources/Tools/MaxConvert/plMaxLightContext.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plMeshConverter.cpp => Sources/Tools/MaxConvert/plMeshConverter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plMeshConverter.h => Sources/Tools/MaxConvert/plMeshConverter.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plRenderGlobalContext.cpp => Sources/Tools/MaxConvert/plRenderGlobalContext.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plRenderGlobalContext.h => Sources/Tools/MaxConvert/plRenderGlobalContext.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plRenderInstance.cpp => Sources/Tools/MaxConvert/plRenderInstance.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxConvert/plRenderInstance.h => Sources/Tools/MaxConvert/plRenderInstance.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/SimpleExport.cpp => Sources/Tools/MaxExport/SimpleExport.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/SimpleExport.h => Sources/Tools/MaxExport/SimpleExport.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plErrorMsg.cpp => Sources/Tools/MaxExport/plErrorMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plErrorMsg.h => Sources/Tools/MaxExport/plErrorMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportDlg.cpp => Sources/Tools/MaxExport/plExportDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportDlg.h => Sources/Tools/MaxExport/plExportDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportErrorMsg.cpp => Sources/Tools/MaxExport/plExportErrorMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportErrorMsg.h => Sources/Tools/MaxExport/plExportErrorMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportLogErrorMsg.cpp => Sources/Tools/MaxExport/plExportLogErrorMsg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportLogErrorMsg.h => Sources/Tools/MaxExport/plExportLogErrorMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportProgressBar.cpp => Sources/Tools/MaxExport/plExportProgressBar.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plExportProgressBar.h => Sources/Tools/MaxExport/plExportProgressBar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxExport/plProgressBar.h => Sources/Tools/MaxExport/plProgressBar.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/GlobalUtility.cpp => Sources/Tools/MaxMain/GlobalUtility.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/GlobalUtility.h => Sources/Tools/MaxMain/GlobalUtility.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/MaxAllocDll.cpp => Sources/Tools/MaxMain/MaxAllocDll.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/MaxAllocDll.h => Sources/Tools/MaxMain/MaxAllocDll.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/SimpleExport.rc => Sources/Tools/MaxMain/SimpleExport.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/indexes.cpp => Sources/Tools/MaxMain/indexes.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/main.cpp => Sources/Tools/MaxMain/main.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/main.def => Sources/Tools/MaxMain/main.def
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plActionTableMgr.cpp => Sources/Tools/MaxMain/plActionTableMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plActionTableMgr.h => Sources/Tools/MaxMain/plActionTableMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plAgeDescInterface.cpp => Sources/Tools/MaxMain/plAgeDescInterface.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plAgeDescInterface.h => Sources/Tools/MaxMain/plAgeDescInterface.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plCommonObjLib.cpp => Sources/Tools/MaxMain/plCommonObjLib.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plCommonObjLib.h => Sources/Tools/MaxMain/plCommonObjLib.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plComponentDlg.cpp => Sources/Tools/MaxMain/plComponentDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plComponentDlg.h => Sources/Tools/MaxMain/plComponentDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plComponentPanel.cpp => Sources/Tools/MaxMain/plComponentPanel.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plComponentPanel.h => Sources/Tools/MaxMain/plComponentPanel.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plGetLocationDlg.cpp => Sources/Tools/MaxMain/plGetLocationDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plGetLocationDlg.h => Sources/Tools/MaxMain/plGetLocationDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxAccelerators.cpp => Sources/Tools/MaxMain/plMaxAccelerators.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxAccelerators.h => Sources/Tools/MaxMain/plMaxAccelerators.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxCFGFile.cpp => Sources/Tools/MaxMain/plMaxCFGFile.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxCFGFile.h => Sources/Tools/MaxMain/plMaxCFGFile.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxMenu.cpp => Sources/Tools/MaxMain/plMaxMenu.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxMenu.h => Sources/Tools/MaxMain/plMaxMenu.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxMeshExtractor.cpp => Sources/Tools/MaxMain/plMaxMeshExtractor.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxMeshExtractor.h => Sources/Tools/MaxMain/plMaxMeshExtractor.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxNode.cpp => Sources/Tools/MaxMain/plMaxNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxNode.h => Sources/Tools/MaxMain/plMaxNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxNodeBase.cpp => Sources/Tools/MaxMain/plMaxNodeBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxNodeBase.h => Sources/Tools/MaxMain/plMaxNodeBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxNodeData.h => Sources/Tools/MaxMain/plMaxNodeData.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxUtils.cpp => Sources/Tools/MaxMain/plMaxUtils.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMaxUtils.h => Sources/Tools/MaxMain/plMaxUtils.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMtlCollector.cpp => Sources/Tools/MaxMain/plMtlCollector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plMtlCollector.h => Sources/Tools/MaxMain/plMtlCollector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plNodeLock.cpp => Sources/Tools/MaxMain/plNodeLock.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plNodeLock.h => Sources/Tools/MaxMain/plNodeLock.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPhysXCooking.cpp => Sources/Tools/MaxMain/plPhysXCooking.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPhysXCooking.h => Sources/Tools/MaxMain/plPhysXCooking.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPhysicalProps.cpp => Sources/Tools/MaxMain/plPhysicalProps.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPhysicalProps.h => Sources/Tools/MaxMain/plPhysicalProps.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPlasmaRefMsgs.h => Sources/Tools/MaxMain/plPlasmaRefMsgs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPluginResManager.cpp => Sources/Tools/MaxMain/plPluginResManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPluginResManager.h => Sources/Tools/MaxMain/plPluginResManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPythonMgr.cpp => Sources/Tools/MaxMain/plPythonMgr.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plPythonMgr.h => Sources/Tools/MaxMain/plPythonMgr.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plResCollector.cpp => Sources/Tools/MaxMain/plResCollector.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plResCollector.h => Sources/Tools/MaxMain/plResCollector.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plResetXform.cpp => Sources/Tools/MaxMain/plResetXform.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plResetXform.h => Sources/Tools/MaxMain/plResetXform.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plSaveSelected.cpp => Sources/Tools/MaxMain/plSaveSelected.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plSaveSelected.h => Sources/Tools/MaxMain/plSaveSelected.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plTextureExportLog.cpp => Sources/Tools/MaxMain/plTextureExportLog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plTextureExportLog.h => Sources/Tools/MaxMain/plTextureExportLog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plTextureSearch.cpp => Sources/Tools/MaxMain/plTextureSearch.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/plTextureSearch.h => Sources/Tools/MaxMain/plTextureSearch.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMain/resource.h => Sources/Tools/MaxMain/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/DllEntry.cpp => Sources/Tools/MaxMtlUpdate/DllEntry.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/OldMat/hsMaxLayer.h => Sources/Tools/MaxMtlUpdate/OldMat/hsMaxLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/OldMat/hsMaxLayerBase.h => Sources/Tools/MaxMtlUpdate/OldMat/hsMaxLayerBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/plMaterialUpdate.cpp => Sources/Tools/MaxMtlUpdate/plMaterialUpdate.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/plMaterialUpdate.def => Sources/Tools/MaxMtlUpdate/plMaterialUpdate.def
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/plMaterialUpdate.h => Sources/Tools/MaxMtlUpdate/plMaterialUpdate.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/plMaterialUpdate.rc => Sources/Tools/MaxMtlUpdate/plMaterialUpdate.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxMtlUpdate/resource.h => Sources/Tools/MaxMtlUpdate/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/DLLEntry.cpp => Sources/Tools/MaxPlasmaLights/DLLEntry.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTLightBaseAnimDlgProc.h => Sources/Tools/MaxPlasmaLights/plRTLightBaseAnimDlgProc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTLightBaseAnimPBDec.h => Sources/Tools/MaxPlasmaLights/plRTLightBaseAnimPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTLights.rc => Sources/Tools/MaxPlasmaLights/plRTLights.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTObjLightDesc.h => Sources/Tools/MaxPlasmaLights/plRTObjLightDesc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTPlasmaLights.def => Sources/Tools/MaxPlasmaLights/plRTPlasmaLights.def
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTProjDirLight.cpp => Sources/Tools/MaxPlasmaLights/plRTProjDirLight.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTProjDirLight.h => Sources/Tools/MaxPlasmaLights/plRTProjDirLight.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTProjDirLightClassDesc.h => Sources/Tools/MaxPlasmaLights/plRTProjDirLightClassDesc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRTProjDirLightPBDec.h => Sources/Tools/MaxPlasmaLights/plRTProjDirLightPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.cpp => Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.h => Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRealTimeLights.cpp => Sources/Tools/MaxPlasmaLights/plRealTimeLights.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRealTimeLights.h => Sources/Tools/MaxPlasmaLights/plRealTimeLights.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/plRealTimeLightsPBDec.h => Sources/Tools/MaxPlasmaLights/plRealTimeLightsPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/prim.h => Sources/Tools/MaxPlasmaLights/prim.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/resource.h => Sources/Tools/MaxPlasmaLights/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaLights/target.h => Sources/Tools/MaxPlasmaLights/target.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plAngleAttenLayer.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plAngleAttenLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plAngleAttenLayer.h => Sources/Tools/MaxPlasmaMtls/Layers/plAngleAttenLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plDynamicEnvLayer.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plDynamicEnvLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plDynamicEnvLayer.h => Sources/Tools/MaxPlasmaMtls/Layers/plDynamicEnvLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plDynamicEnvLayerBitmapPB.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plDynamicEnvLayerBitmapPB.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plDynamicTextLayer.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plDynamicTextLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plDynamicTextLayer.h => Sources/Tools/MaxPlasmaMtls/Layers/plDynamicTextLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plDynamicTextLayerBitmapPB.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plDynamicTextLayerBitmapPB.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plLayerTex.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plLayerTex.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plLayerTex.h => Sources/Tools/MaxPlasmaMtls/Layers/plLayerTex.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBasicPB.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBasicPB.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBasicPB.h => Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBasicPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBitmapPB.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBitmapPB.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBitmapPB.h => Sources/Tools/MaxPlasmaMtls/Layers/plLayerTexBitmapPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plMAXCameraLayer.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plMAXCameraLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plMAXCameraLayer.h => Sources/Tools/MaxPlasmaMtls/Layers/plMAXCameraLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plPlasmaMAXLayer.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plPlasmaMAXLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plPlasmaMAXLayer.h => Sources/Tools/MaxPlasmaMtls/Layers/plPlasmaMAXLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayer.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayer.h => Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayerBitmapPB.cpp => Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayerBitmapPB.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayerBitmapPB.h => Sources/Tools/MaxPlasmaMtls/Layers/plStaticEnvLayerBitmapPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plAnimStealthConvert.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plAnimStealthConvert.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plAnimStealthNode.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plAnimStealthNode.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plAnimStealthNode.h => Sources/Tools/MaxPlasmaMtls/Materials/plAnimStealthNode.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlAnimPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlAnimPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlAnimPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlAnimPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlBasicPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlBasicPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlBasicPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plBumpMtlBasicPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plClothingMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plClothingMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plClothingMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plClothingMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plClothingMtlPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plClothingMtlPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlDlg.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlDlg.h => Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plCompositeMtlPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAdvPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAdvPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAdvPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAdvPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAnimPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAnimPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAnimPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlAnimPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlBasicPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlBasicPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlBasicPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlBasicPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlLayersPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlLayersPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlLayersPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plDecalMtlLayersPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlDlg.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlDlg.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlDlg.h => Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlDlg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlPB.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlPB.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plMultipassMtlPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plNoteTrackWatcher.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plNoteTrackWatcher.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plNoteTrackWatcher.h => Sources/Tools/MaxPlasmaMtls/Materials/plNoteTrackWatcher.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plParticleMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plParticleMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plParticleMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plParticleMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plParticleMtlPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plParticleMtlPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassAnimDlgProc.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plPassAnimDlgProc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassAnimDlgProc.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassAnimDlgProc.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassBaseParamIDs.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassBaseParamIDs.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtl.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtl.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAdvPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAdvPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAdvPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAdvPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAnimPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAnimPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAnimPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlAnimPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBase.cpp => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBase.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBase.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBase.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBasicPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBasicPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBasicPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlBasicPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlLayersPB.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlLayersPB.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlLayersPBDec.h => Sources/Tools/MaxPlasmaMtls/Materials/plPassMtlLayersPBDec.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/MaxPlasmaMtls.rc => Sources/Tools/MaxPlasmaMtls/MaxPlasmaMtls.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Shaders.cpp => Sources/Tools/MaxPlasmaMtls/Shaders.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/Shaders.h => Sources/Tools/MaxPlasmaMtls/Shaders.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plBMSampler.cpp => Sources/Tools/MaxPlasmaMtls/plBMSampler.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plBMSampler.h => Sources/Tools/MaxPlasmaMtls/plBMSampler.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plDetailCurveCtrl.cpp => Sources/Tools/MaxPlasmaMtls/plDetailCurveCtrl.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plDetailCurveCtrl.h => Sources/Tools/MaxPlasmaMtls/plDetailCurveCtrl.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plDrawCurve.cpp => Sources/Tools/MaxPlasmaMtls/plDrawCurve.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plMaterialRefMsg.h => Sources/Tools/MaxPlasmaMtls/plMaterialRefMsg.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plMtlImport.cpp => Sources/Tools/MaxPlasmaMtls/plMtlImport.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/plMtlImport.h => Sources/Tools/MaxPlasmaMtls/plMtlImport.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/res/detailBgnd8bit.bmp => Sources/Tools/MaxPlasmaMtls/res/detailBgnd8bit.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/res/dmtlbut.bmp => Sources/Tools/MaxPlasmaMtls/res/dmtlbut.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/res/dmtlmsk.bmp => Sources/Tools/MaxPlasmaMtls/res/dmtlmsk.bmp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxPlasmaMtls/resource.h => Sources/Tools/MaxPlasmaMtls/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/SceneSync.cpp => Sources/Tools/MaxSceneViewer/SceneSync.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/SceneSync.h => Sources/Tools/MaxSceneViewer/SceneSync.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/SceneViewer.cpp => Sources/Tools/MaxSceneViewer/SceneViewer.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/SceneViewer.h => Sources/Tools/MaxSceneViewer/SceneViewer.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/SceneWatcher.cpp => Sources/Tools/MaxSceneViewer/SceneWatcher.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/SceneWatcher.h => Sources/Tools/MaxSceneViewer/SceneWatcher.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plKeyRefSort.cpp => Sources/Tools/MaxSceneViewer/plKeyRefSort.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plKeyRefSort.h => Sources/Tools/MaxSceneViewer/plKeyRefSort.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plMaxFileData.cpp => Sources/Tools/MaxSceneViewer/plMaxFileData.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plMaxFileData.h => Sources/Tools/MaxSceneViewer/plMaxFileData.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plPluginApp.cpp => Sources/Tools/MaxSceneViewer/plPluginApp.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plPluginApp.h => Sources/Tools/MaxSceneViewer/plPluginApp.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plPluginClient.cpp => Sources/Tools/MaxSceneViewer/plPluginClient.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/MaxSceneViewer/plPluginClient.h => Sources/Tools/MaxSceneViewer/plPluginClient.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/Migration.cpp => Sources/Tools/Migration/Migration.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/Migration.h => Sources/Tools/Migration/Migration.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/Migration.ico => Sources/Tools/Migration/Migration.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/Migration.rc => Sources/Tools/Migration/Migration.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/MigrationTask.cpp => Sources/Tools/Migration/MigrationTask.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/MigrationTask.h => Sources/Tools/Migration/MigrationTask.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/OptionalDialog.cpp => Sources/Tools/Migration/OptionalDialog.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/OptionalDialog.h => Sources/Tools/Migration/OptionalDialog.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/resource.h => Sources/Tools/Migration/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/Migration/small.ico => Sources/Tools/Migration/small.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plAllCreatables.cpp => Sources/Tools/plDatMerger/plAllCreatables.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plDatMerger.cpp => Sources/Tools/plDatMerger/plDatMerger.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plRawKeyedObject.cpp => Sources/Tools/plDatMerger/plRawKeyedObject.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plRawKeyedObject.h => Sources/Tools/plDatMerger/plRawKeyedObject.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plRawPageAccessor.cpp => Sources/Tools/plDatMerger/plRawPageAccessor.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plRawPageAccessor.h => Sources/Tools/plDatMerger/plRawPageAccessor.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plRawResManager.cpp => Sources/Tools/plDatMerger/plRawResManager.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plDatMerger/plRawResManager.h => Sources/Tools/plDatMerger/plRawResManager.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/hsCodecManagerStub.cpp => Sources/Tools/plFontConverter/hsCodecManagerStub.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/plFontConverter.cpp => Sources/Tools/plFontConverter/plFontConverter.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/plFontConverterProc.cpp => Sources/Tools/plFontConverter/plFontConverterProc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/plFontFreeType.cpp => Sources/Tools/plFontConverter/plFontFreeType.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/plFontFreeType.h => Sources/Tools/plFontConverter/plFontFreeType.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/res/icon1.ico => Sources/Tools/plFontConverter/res/icon1.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/res/plFontConverter.rc => Sources/Tools/plFontConverter/res/plFontConverter.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plFontConverter/res/resource.h => Sources/Tools/plFontConverter/res/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plResBrowser.cpp => Sources/Tools/plResBrowser/plResBrowser.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plResBrowser.dsp => Sources/Tools/plResBrowser/plResBrowser.dsp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plResBrowser.vcproj => Sources/Tools/plResBrowser/plResBrowser.vcproj
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plResBrowserWndProc.cpp => Sources/Tools/plResBrowser/plResBrowserWndProc.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plResTreeView.cpp => Sources/Tools/plResBrowser/plResTreeView.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plResTreeView.h => Sources/Tools/plResBrowser/plResTreeView.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plWinRegistryTools.cpp => Sources/Tools/plResBrowser/plWinRegistryTools.cpp
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/plWinRegistryTools.h => Sources/Tools/plResBrowser/plWinRegistryTools.h
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/dataicon.ico => Sources/Tools/plResBrowser/res/dataicon.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/icon1.ico => Sources/Tools/plResBrowser/res/icon1.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/icon2.ico => Sources/Tools/plResBrowser/res/icon2.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/indexico.ico => Sources/Tools/plResBrowser/res/indexico.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/mergedda.ico => Sources/Tools/plResBrowser/res/mergedda.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/mergedin.ico => Sources/Tools/plResBrowser/res/mergedin.ico
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/plResBrowser.rc => Sources/Tools/plResBrowser/res/plResBrowser.rc
rename : MOULOpenSourceClientPlugin/Plasma20/Sources/Tools/plResBrowser/res/resource.h => Sources/Tools/plResBrowser/res/resource.h
rename : MOULOpenSourceClientPlugin/Plasma20/cmake/FindBink.cmake => cmake/FindBink.cmake
rename : MOULOpenSourceClientPlugin/Plasma20/cmake/FindDirectX.cmake => cmake/FindDirectX.cmake
rename : MOULOpenSourceClientPlugin/Plasma20/cmake/FindOgg.cmake => cmake/FindOgg.cmake
rename : MOULOpenSourceClientPlugin/Plasma20/cmake/FindPhysX.cmake => cmake/FindPhysX.cmake
rename : MOULOpenSourceClientPlugin/Plasma20/cmake/FindSpeex.cmake => cmake/FindSpeex.cmake
rename : MOULOpenSourceClientPlugin/Plasma20/cmake/FindVorbis.cmake => cmake/FindVorbis.cmake
This commit is contained in:
Branan Purvine-Riley
2011-04-11 15:12:51 -07:00
parent 3ef4c2e3aa
commit c9061c5ea7
4299 changed files with 0 additions and 299140 deletions

View File

@ -0,0 +1,354 @@
include_directories(../../CoreLib)
include_directories(../../FeatureLib)
include_directories(../../NucleusLib)
include_directories(../../NucleusLib/inc)
include_directories(../../PubUtilLib)
include_directories(../../)
include_directories(${PYTHON_INCLUDE_DIR})
include_directories(${OPENAL_INCLUDE_DIR})
include_directories(${OPENSSL_INCLUDE_DIR})
set(pfPython_SOURCES
cyAccountManagement.cpp
cyAnimation.cpp
cyAvatar.cpp
cyCamera.cpp
cyDraw.cpp
cyInputInterface.cpp
cyMisc.cpp
cyParticleSys.cpp
cyPhysics.cpp
cyPythonInterface.cpp
plPythonFileMod.cpp
plPythonPack.cpp
plPythonSDLModifier.cpp
pyAgeInfoStruct.cpp
pyAgeLinkStruct.cpp
pyAgeVault.cpp
pyAlarm.cpp
pyAudioControl.cpp
pyCCRMgr.cpp
pyCluster.cpp
pyColor.cpp
pyCritterBrain.cpp
pyDniCoordinates.cpp
pyDniInfoSource.cpp
pyDrawControl.cpp
pyDynamicText.cpp
pyEnum.cpp
pyGameScore.cpp
pyGeometry3.cpp
pyGrassShader.cpp
pyGUIControl.cpp
pyGUIControlButton.cpp
pyGUIControlCheckBox.cpp
pyGUIControlClickMap.cpp
pyGUIControlDragBar.cpp
pyGUIControlDraggable.cpp
pyGUIControlDynamicText.cpp
pyGUIControlEditBox.cpp
pyGUIControlListBox.cpp
pyGUIControlMultiLineEdit.cpp
pyGUIControlRadioGroup.cpp
pyGUIControlTextBox.cpp
pyGUIControlValue.cpp
pyGUIDialog.cpp
pyGUIPopUpMenu.cpp
pyGUISkin.cpp
pyImage.cpp
pyJournalBook.cpp
pyKey.cpp
pyKeyMap.cpp
pyMarkerMgr.cpp
pyMatrix44.cpp
pyMoviePlayer.cpp
pyNetLinkingMgr.cpp
pyNetServerSessionInfo.cpp
pyNotify.cpp
pyPlayer.cpp
pySceneObject.cpp
pyScoreMgr.cpp
pySDL.cpp
pySpawnPointInfo.cpp
pyStatusLog.cpp
pyStream.cpp
pySwimCurrentInterface.cpp
pyVault.cpp
pyVaultAgeInfoListNode.cpp
pyVaultAgeInfoNode.cpp
pyVaultAgeLinkNode.cpp
pyVaultChronicleNode.cpp
pyVaultFolderNode.cpp
pyVaultImageNode.cpp
pyVaultMarkerGameNode.cpp
pyVaultNode.cpp
pyVaultNodeRef.cpp
pyVaultPlayerInfoListNode.cpp
pyVaultPlayerInfoNode.cpp
pyVaultPlayerNode.cpp
pyVaultSDLNode.cpp
pyVaultSystemNode.cpp
pyVaultTextNoteNode.cpp
pyWaveSet.cpp
)
set(pfPython_HEADERS
cyAccountManagement.h
cyAnimation.h
cyAvatar.h
cyCamera.h
cyDraw.h
cyInputInterface.h
cyMisc.h
cyParticleSys.h
cyPhysics.h
cyPythonInterface.h
pfPythonCreatable.h
plPythonFileMod.h
plPythonHelpers.h
plPythonPack.h
plPythonParameter.h
plPythonSDLModifier.h
pyAgeInfoStruct.h
pyAgeLinkStruct.h
pyAgeVault.h
pyAlarm.h
pyAudioControl.h
pyCCRMgr.h
pyCluster.h
pyColor.h
pyCritterBrain.h
pyDniCoordinates.h
pyDniInfoSource.h
pyDrawControl.h
pyDynamicText.h
pyEnum.h
pyGameScore.h
pyGeometry3.h
pyGrassShader.h
pyGUIControl.h
pyGUIControlButton.h
pyGUIControlCheckBox.h
pyGUIControlClickMap.h
pyGUIControlDragBar.h
pyGUIControlDraggable.h
pyGUIControlDynamicText.h
pyGUIControlEditBox.h
pyGUIControlListBox.h
pyGUIControlMultiLineEdit.h
pyGUIControlRadioGroup.h
pyGUIControlTextBox.h
pyGUIControlValue.h
pyGUIDialog.h
pyGUIPopUpMenu.h
pyGUISkin.h
pyImage.h
pyJournalBook.h
pyKey.h
pyKeyMap.h
pyMarkerMgr.h
pyMatrix44.h
pyMoviePlayer.h
pyNetLinkingMgr.h
pyNetServerSessionInfo.h
pyNotify.h
pyPlayer.h
pySceneObject.h
pyScoreMgr.h
pySDL.h
pySpawnPointInfo.h
pyStatusLog.h
pyStream.h
pySwimCurrentInterface.h
pyVault.h
pyVaultAgeInfoListNode.h
pyVaultAgeInfoNode.h
pyVaultAgeLinkNode.h
pyVaultChronicleNode.h
pyVaultFolderNode.h
pyVaultImageNode.h
pyVaultMarkerGameNode.h
pyVaultNode.h
pyVaultNodeRef.h
pyVaultPlayerInfoListNode.h
pyVaultPlayerInfoNode.h
pyVaultPlayerNode.h
pyVaultSDLNode.h
pyVaultSystemNode.h
pyVaultTextNoteNode.h
pyWaveSet.h
)
set(pfPython_GLUE
cyAccountManagementGlue.cpp
cyAnimationGlue.cpp
cyAvatarGlue.cpp
cyCameraGlue.cpp
cyDrawGlue.cpp
cyInputInterfaceGlue.cpp
cyMiscGlue.cpp
cyMiscGlue2.cpp
cyMiscGlue3.cpp
cyMiscGlue4.cpp
cyParticleSysGlue.cpp
cyPhysicsGlue.cpp
plPythonSDLModifierGlue.cpp
pyAgeInfoStructGlue.cpp
pyAgeLinkStructGlue.cpp
pyAgeVaultGlue.cpp
pyAudioControlGlue.cpp
pyCCRMgrGlue.cpp
pyCCRMgrGlue2.cpp
pyClusterGlue.cpp
pyColorGlue.cpp
pyCritterBrainGlue.cpp
pyDniCoordinatesGlue.cpp
pyDniInfoSourceGlue.cpp
pyDrawControlGlue.cpp
pyDynamicTextGlue.cpp
pyGameScoreGlue.cpp
pyGeometry3Glue.cpp
pyGlueHelpers.h
pyGrassShaderGlue.cpp
pyGUIControlButtonGlue.cpp
pyGUIControlCheckBoxGlue.cpp
pyGUIControlClickMapGlue.cpp
pyGUIControlDragBarGlue.cpp
pyGUIControlDraggableGlue.cpp
pyGUIControlDynamicTextGlue.cpp
pyGUIControlEditBoxGlue.cpp
pyGUIControlGlue.cpp
pyGUIControlListBoxGlue.cpp
pyGUIControlMultiLineEditGlue.cpp
pyGUIControlRadioGroupGlue.cpp
pyGUIControlTextBoxGlue.cpp
pyGUIControlValueGlue.cpp
pyGUIDialogGlue.cpp
pyGUIPopUpMenuGlue.cpp
pyGUISkinGlue.cpp
pyImageGlue.cpp
pyJournalBookGlue.cpp
pyKeyGlue.cpp
pyKeyMapGlue.cpp
pyMarkerMgrGlue.cpp
pyMatrix44Glue.cpp
pyMoviePlayerGlue.cpp
pyNetLinkingMgrGlue.cpp
pyNetServerSessionInfoGlue.cpp
pyNotifyGlue.cpp
pyPlayerGlue.cpp
pySceneObjectGlue.cpp
pyScoreMgrGlue.cpp
pySDLGlue.cpp
pySpawnPointInfoGlue.cpp
pyStatusLogGlue.cpp
pyStreamGlue.cpp
pySwimCurrentInterfaceGlue.cpp
pyVaultAgeInfoListNodeGlue.cpp
pyVaultAgeInfoNodeGlue.cpp
pyVaultAgeLinkNodeGlue.cpp
pyVaultChronicleNodeGlue.cpp
pyVaultFolderNodeGlue.cpp
pyVaultGlue.cpp
pyVaultImageNodeGlue.cpp
pyVaultMarkerGameNodeGlue.cpp
pyVaultNodeGlue.cpp
pyVaultNodeRefGlue.cpp
pyVaultPlayerInfoListNodeGlue.cpp
pyVaultPlayerInfoNodeGlue.cpp
pyVaultPlayerNodeGlue.cpp
pyVaultSDLNodeGlue.cpp
pyVaultSystemNodeGlue.cpp
pyVaultTextNoteNodeGlue.cpp
pyWaveSetGlue.cpp
)
set(pfPython_GAME_GLUE
Games/pyGameCli.cpp
Games/pyGameCli.h
Games/pyGameCliGlue.cpp
Games/pyGameCliMsg.cpp
Games/pyGameCliMsg.h
Games/pyGameCliMsgGlue.cpp
Games/pyGameMgrMsg.cpp
Games/pyGameMgrMsg.h
Games/pyGameMgrMsg.cpp
Games/pyGameMgrMsgGlue.cpp
)
set(pfPython_TTT
Games/TicTacToe/pyTTTGame.cpp
Games/TicTacToe/pyTTTGame.h
Games/TicTacToe/pyTTTGameGlue.cpp
Games/TicTacToe/pyTTTMsg.cpp
Games/TicTacToe/pyTTTMsg.h
Games/TicTacToe/pyTTTMsgGlue.cpp
)
set(pfPython_HEEK
Games/Heek/pyHeekGame.cpp
Games/Heek/pyHeekGame.h
Games/Heek/pyHeekGameGlue.cpp
Games/Heek/pyHeekMsg.cpp
Games/Heek/pyHeekMsg.h
Games/Heek/pyHeekMsgGlue.cpp
)
set(pfPython_MARKER
Games/Marker/pyMarkerGame.cpp
Games/Marker/pyMarkerGame.h
Games/Marker/pyMarkerGameGlue.cpp
Games/Marker/pyMarkerMsg.cpp
Games/Marker/pyMarkerMsg.h
Games/Marker/pyMarkerMsgGlue.cpp
)
set(pfPython_BSPIRAL
Games/BlueSpiral/pyBlueSpiralGame.cpp
Games/BlueSpiral/pyBlueSpiralGame.h
Games/BlueSpiral/pyBlueSpiralGameGlue.cpp
Games/BlueSpiral/pyBlueSpiralMsg.cpp
Games/BlueSpiral/pyBlueSpiralMsg.h
Games/BlueSpiral/pyBlueSpiralMsgGlue.cpp
)
set(pfPython_WALL
Games/ClimbingWall/pyClimbingWallGame.cpp
Games/ClimbingWall/pyClimbingWallGame.h
Games/ClimbingWall/pyClimbingWallGameGlue.cpp
Games/ClimbingWall/pyClimbingWallMsg.cpp
Games/ClimbingWall/pyClimbingWallMsg.h
Games/ClimbingWall/pyClimbingWallMsgGlue.cpp
)
set(pfPython_VSYNC
Games/VarSync/pyVarSyncGame.cpp
Games/VarSync/pyVarSyncGame.h
Games/VarSync/pyVarSyncGameGlue.cpp
Games/VarSync/pyVarSyncMsg.cpp
Games/VarSync/pyVarSyncMsg.h
Games/VarSync/pyVarSyncMsgGlue.cpp
)
set(pfPython_GAMES
${pfPython_TTT}
${pfPython_HEEK}
${pfPython_MARKER}
${pfPython_BSPIRAL}
${pfPython_WALL}
${pfPython_VSYNC}
)
add_library(pfPython STATIC ${pfPython_SOURCES} ${pfPython_HEADERS} ${pfPython_GLUE} ${pfPython_GAME_GLUE} ${pfPython_GAMES})
source_group("Source Files" FILES ${pfPython_SOURCES})
source_group("Header Files" FILES ${pfPython_HEADERS})
source_group("Glue Files" FILES ${pfPython_GLUE})
source_group("Game Glue" FILES ${pfPython_GAME_GLUE})
source_group("Game Glue\\TicTacToe" FILES ${pfPython_TTT})
source_group("Game Glue\\Heek" FILES ${pfPython_HEEK})
source_group("Game Glue\\Marker" FILES ${pfPython_MARKER})
source_group("Game Glue\\BlueSpiral" FILES ${pfPython_BSPIRAL})
source_group("Game Glue\\ClimbingWall" FILES ${pfPython_WALL})
source_group("Game Glue\\VarSync" FILES ${pfPython_VSYNC})

View File

@ -0,0 +1,69 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyBlueSpiralGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base BlueSpiral game client class
//
pyBlueSpiralGame::pyBlueSpiralGame(): pyGameCli() {}
pyBlueSpiralGame::pyBlueSpiralGame(pfGameCli* client): pyGameCli(client)
{
if (client && (client->GetGameTypeId() != kGameTypeId_BlueSpiral))
gameClient = nil; // wrong type, just clear it out
}
bool pyBlueSpiralGame::IsBlueSpiralGame(std::wstring guid)
{
Uuid gameUuid(guid.c_str());
return gameUuid == kGameTypeId_BlueSpiral;
}
void pyBlueSpiralGame::JoinCommonBlueSpiralGame(pyKey& callbackKey, unsigned gameID)
{
BlueSpiral_CreateParam init;
pfGameMgr::GetInstance()->JoinCommonGame(callbackKey.getKey(), kGameTypeId_BlueSpiral, gameID, sizeof(init), &init);
}
void pyBlueSpiralGame::StartGame()
{
if (gameClient)
{
pfGmBlueSpiral* blueSpiral = pfGmBlueSpiral::ConvertNoRef(gameClient);
blueSpiral->StartGame();
}
}
void pyBlueSpiralGame::HitCloth(int clothNum)
{
if (gameClient)
{
pfGmBlueSpiral* blueSpiral = pfGmBlueSpiral::ConvertNoRef(gameClient);
blueSpiral->HitCloth(clothNum);
}
}

View File

@ -0,0 +1,66 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyBlueSpiralGame_h
#define pyBlueSpiralGame_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyBlueSpiralGame
//
// PURPOSE: Class wrapper for the BlueSpiral game client
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCli.h"
#include "../../pyKey.h"
class pyBlueSpiralGame : public pyGameCli
{
protected:
pyBlueSpiralGame();
pyBlueSpiralGame(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralGame);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralGame object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralGame); // converts a PyObject to a pyBlueSpiralGame (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static bool IsBlueSpiralGame(std::wstring guid);
static void JoinCommonBlueSpiralGame(pyKey& callbackKey, unsigned gameID);
void StartGame();
void HitCloth(int clothNum);
};
#endif // pyBlueSpiralGame_h

View File

@ -0,0 +1,142 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyBlueSpiralGame.h"
#include <python.h>
#include "../../pyEnum.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base BlueSpiral game client class
//
PYTHON_CLASS_DEFINITION(ptBlueSpiralGame, pyBlueSpiralGame);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralGame, pyBlueSpiralGame)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralGame)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralGame)
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsBlueSpiralGame, args, "Params: typeID\nReturns true if the specifed typeID (guid as a string) is a BlueSpiral game")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtIsBlueSpiralGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
bool retVal = pyBlueSpiralGame::IsBlueSpiralGame(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = pyBlueSpiralGame::IsBlueSpiralGame(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtIsBlueSpiralGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtJoinCommonBlueSpiralGame, args, "Params: callbackKey, gameID\nJoins a common BlueSpiral game with the specified ID. If one doesn't exist, it creates it")
{
PyObject* callbackObj = NULL;
int gameID = 0;
if (!PyArg_ParseTuple(args, "Oi", &callbackObj, &gameID))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonBlueSpiralGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonBlueSpiralGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyBlueSpiralGame::JoinCommonBlueSpiralGame(*key, gameID);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptBlueSpiralGame, startGame, StartGame)
PYTHON_METHOD_DEFINITION(ptBlueSpiralGame, hitCloth, args)
{
int clothNum = 0;
if (!PyArg_ParseTuple(args, "i", &clothNum))
{
PyErr_SetString(PyExc_TypeError, "hitCloth expects one integer");
PYTHON_RETURN_ERROR;
}
self->fThis->HitCloth(clothNum);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptBlueSpiralGame)
PYTHON_BASIC_METHOD(ptBlueSpiralGame, startGame, "Starts a new game"),
PYTHON_METHOD(ptBlueSpiralGame, hitCloth, "Params: clothNum\nTells the server you hit the specified cloth"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralGame, pyGameCli, "Game client for the BlueSpiral game");
// required functions for PyObject interoperability
PyObject* pyBlueSpiralGame::New(pfGameCli* client)
{
ptBlueSpiralGame *newObj = (ptBlueSpiralGame*)ptBlueSpiralGame_type.tp_new(&ptBlueSpiralGame_type, NULL, NULL);
if (client && (client->GetGameTypeId() == kGameTypeId_BlueSpiral))
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralGame, pyBlueSpiralGame)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralGame, pyBlueSpiralGame)
// Module and method definitions
void pyBlueSpiralGame::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralGame);
PYTHON_CLASS_IMPORT_END(m);
}
void pyBlueSpiralGame::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD(methods, PtIsBlueSpiralGame);
PYTHON_GLOBAL_METHOD(methods, PtJoinCommonBlueSpiralGame);
}

View File

@ -0,0 +1,139 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyBlueSpiralMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base BlueSpiral msg class
//
pyBlueSpiralMsg::pyBlueSpiralMsg(): pyGameCliMsg() {}
pyBlueSpiralMsg::pyBlueSpiralMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->gameCli->GetGameTypeId() != kGameTypeId_BlueSpiral))
message = nil; // wrong type, just clear it out
}
int pyBlueSpiralMsg::GetBlueSpiralMsgType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyBlueSpiralMsg::UpcastToFinalBlueSpiralMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_BlueSpiral_ClothOrder:
return pyBlueSpiralClothOrderMsg::New(message);
case kSrv2Cli_BlueSpiral_SuccessfulHit:
return pyBlueSpiralSuccessfulHitMsg::New(message);
case kSrv2Cli_BlueSpiral_GameWon:
return pyBlueSpiralGameWonMsg::New(message);
case kSrv2Cli_BlueSpiral_GameOver:
return pyBlueSpiralGameOverMsg::New(message);
case kSrv2Cli_BlueSpiral_GameStarted:
return pyBlueSpiralGameStartedMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyBlueSpiralClothOrderMsg::pyBlueSpiralClothOrderMsg(): pyBlueSpiralMsg() {}
pyBlueSpiralClothOrderMsg::pyBlueSpiralClothOrderMsg(pfGameCliMsg* msg): pyBlueSpiralMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_BlueSpiral_ClothOrder))
message = nil; // wrong type, just clear it out
}
std::vector<int> pyBlueSpiralClothOrderMsg::Order()
{
std::vector<int> retVal;
if (message)
{
const Srv2Cli_BlueSpiral_ClothOrder* gmMsg = (const Srv2Cli_BlueSpiral_ClothOrder*)message->netMsg;
for (int i = 0; i < arrsize(gmMsg->order); ++i)
retVal.push_back(gmMsg->order[i]);
}
return retVal;
}
///////////////////////////////////////////////////////////////////////////////
pyBlueSpiralSuccessfulHitMsg::pyBlueSpiralSuccessfulHitMsg(): pyBlueSpiralMsg() {}
pyBlueSpiralSuccessfulHitMsg::pyBlueSpiralSuccessfulHitMsg(pfGameCliMsg* msg): pyBlueSpiralMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_BlueSpiral_SuccessfulHit))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyBlueSpiralGameWonMsg::pyBlueSpiralGameWonMsg(): pyBlueSpiralMsg() {}
pyBlueSpiralGameWonMsg::pyBlueSpiralGameWonMsg(pfGameCliMsg* msg): pyBlueSpiralMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_BlueSpiral_GameWon))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyBlueSpiralGameOverMsg::pyBlueSpiralGameOverMsg(): pyBlueSpiralMsg() {}
pyBlueSpiralGameOverMsg::pyBlueSpiralGameOverMsg(pfGameCliMsg* msg): pyBlueSpiralMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_BlueSpiral_GameOver))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyBlueSpiralGameStartedMsg::pyBlueSpiralGameStartedMsg(): pyBlueSpiralMsg() {}
pyBlueSpiralGameStartedMsg::pyBlueSpiralGameStartedMsg(pfGameCliMsg* msg): pyBlueSpiralMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_BlueSpiral_GameStarted))
message = nil; // wrong type, just clear it out
}
bool pyBlueSpiralGameStartedMsg::StartSpin()
{
if (message)
{
const Srv2Cli_BlueSpiral_GameStarted* gmMsg = (const Srv2Cli_BlueSpiral_GameStarted*)message->netMsg;
return gmMsg->startSpin;
}
return false;
}

View File

@ -0,0 +1,153 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyBlueSpiralMsg_h
#define pyBlueSpiralMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyBlueSpiralMsg
//
// PURPOSE: Class wrapper for BlueSpiral game messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCliMsg.h"
class pyBlueSpiralMsg : public pyGameCliMsg
{
protected:
pyBlueSpiralMsg();
pyBlueSpiralMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralMsg); // converts a PyObject to a pyBlueSpiralMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetBlueSpiralMsgType() const;
PyObject* UpcastToFinalBlueSpiralMsg() const; // returns this message as the blue spiral message it is
};
///////////////////////////////////////////////////////////////////////////////
class pyBlueSpiralClothOrderMsg : public pyBlueSpiralMsg
{
protected:
pyBlueSpiralClothOrderMsg();
pyBlueSpiralClothOrderMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralClothOrderMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralClothOrderMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralClothOrderMsg); // converts a PyObject to a pyBlueSpiralClothOrderMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
std::vector<int> Order();
};
///////////////////////////////////////////////////////////////////////////////
class pyBlueSpiralSuccessfulHitMsg : public pyBlueSpiralMsg
{
protected:
pyBlueSpiralSuccessfulHitMsg();
pyBlueSpiralSuccessfulHitMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralSuccessfulHitMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralSuccessfulHitMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralSuccessfulHitMsg); // converts a PyObject to a pyBlueSpiralSuccessfulHitMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyBlueSpiralGameWonMsg : public pyBlueSpiralMsg
{
protected:
pyBlueSpiralGameWonMsg();
pyBlueSpiralGameWonMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralGameWonMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralGameWonMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralGameWonMsg); // converts a PyObject to a pyBlueSpiralGameWonMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyBlueSpiralGameOverMsg : public pyBlueSpiralMsg
{
protected:
pyBlueSpiralGameOverMsg();
pyBlueSpiralGameOverMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralGameOverMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralGameOverMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralGameOverMsg); // converts a PyObject to a pyBlueSpiralGameOverMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyBlueSpiralGameStartedMsg : public pyBlueSpiralMsg
{
protected:
pyBlueSpiralGameStartedMsg();
pyBlueSpiralGameStartedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptBlueSpiralGameStartedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyBlueSpiralGameStartedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyBlueSpiralGameStartedMsg); // converts a PyObject to a pyBlueSpiralGameStartedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool StartSpin();
};
#endif // pyBlueSpiralMsg_h

View File

@ -0,0 +1,281 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyBlueSpiralMsg.h"
#include "../../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base TTT msg class
//
PYTHON_CLASS_DEFINITION(ptBlueSpiralMsg, pyBlueSpiralMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralMsg, pyBlueSpiralMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralMsg)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptBlueSpiralMsg, getBlueSpiralMsgType)
{
return PyInt_FromLong(self->fThis->GetBlueSpiralMsgType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptBlueSpiralMsg, upcastToFinalBlueSpiralMsg)
{
return self->fThis->UpcastToFinalBlueSpiralMsg();
}
PYTHON_START_METHODS_TABLE(ptBlueSpiralMsg)
PYTHON_METHOD_NOARGS(ptBlueSpiralMsg, getBlueSpiralMsgType, "Returns the type of the BlueSpiral message (see PtBlueSpiralMsgTypes)"),
PYTHON_METHOD_NOARGS(ptBlueSpiralMsg, upcastToFinalBlueSpiralMsg, "Returns this message as the BlueSpiral message it really is"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralMsg, pyGameCliMsg, "Base class for BlueSpiral game messages");
PYTHON_EXPOSE_TYPE_DEFINITION(ptBlueSpiralMsg, pyBlueSpiralMsg);
// required functions for PyObject interoperability
PyObject* pyBlueSpiralMsg::New(pfGameCliMsg* msg)
{
ptBlueSpiralMsg *newObj = (ptBlueSpiralMsg*)ptBlueSpiralMsg_type.tp_new(&ptBlueSpiralMsg_type, NULL, NULL);
if (msg && (msg->gameCli->GetGameTypeId() == kGameTypeId_BlueSpiral))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralMsg, pyBlueSpiralMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralMsg, pyBlueSpiralMsg)
// Module and method definitions
void pyBlueSpiralMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyBlueSpiralMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtBlueSpiralMsgTypes);
PYTHON_ENUM_ELEMENT(PtBlueSpiralMsgTypes, kBlueSpiralClothOrder, kSrv2Cli_BlueSpiral_ClothOrder);
PYTHON_ENUM_ELEMENT(PtBlueSpiralMsgTypes, kBlueSpiralSuccessfulHit, kSrv2Cli_BlueSpiral_SuccessfulHit);
PYTHON_ENUM_ELEMENT(PtBlueSpiralMsgTypes, kBlueSpiralGameWon, kSrv2Cli_BlueSpiral_GameWon);
PYTHON_ENUM_ELEMENT(PtBlueSpiralMsgTypes, kBlueSpiralGameOver, kSrv2Cli_BlueSpiral_GameOver);
PYTHON_ENUM_ELEMENT(PtBlueSpiralMsgTypes, kBlueSpiralGameStarted, kSrv2Cli_BlueSpiral_GameStarted);
PYTHON_ENUM_END(m, PtBlueSpiralMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptBlueSpiralClothOrderMsg, pyBlueSpiralClothOrderMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralClothOrderMsg, pyBlueSpiralClothOrderMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralClothOrderMsg)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralClothOrderMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptBlueSpiralClothOrderMsg, order)
{
std::vector<int> order = self->fThis->Order();
PyObject* retVal = PyList_New(order.size());
for (unsigned i = 0; i < order.size(); ++i)
PyList_SetItem(retVal, i, PyInt_FromLong(order[i]));
return retVal;
}
PYTHON_START_METHODS_TABLE(ptBlueSpiralClothOrderMsg)
PYTHON_METHOD_NOARGS(ptBlueSpiralClothOrderMsg, order, "Returns a list of numbers indicating the correct order to hit the clothes in"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralClothOrderMsg, pyBlueSpiralMsg, "BlueSpiral message received when the game is started and the cloth order is set");
// required functions for PyObject interoperability
PyObject* pyBlueSpiralClothOrderMsg::New(pfGameCliMsg* msg)
{
ptBlueSpiralClothOrderMsg *newObj = (ptBlueSpiralClothOrderMsg*)ptBlueSpiralClothOrderMsg_type.tp_new(&ptBlueSpiralClothOrderMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_BlueSpiral_ClothOrder))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralClothOrderMsg, pyBlueSpiralClothOrderMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralClothOrderMsg, pyBlueSpiralClothOrderMsg)
// Module and method definitions
void pyBlueSpiralClothOrderMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralClothOrderMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptBlueSpiralSuccessfulHitMsg, pyBlueSpiralSuccessfulHitMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralSuccessfulHitMsg, pyBlueSpiralSuccessfulHitMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralSuccessfulHitMsg)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralSuccessfulHitMsg)
PYTHON_START_METHODS_TABLE(ptBlueSpiralSuccessfulHitMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralSuccessfulHitMsg, pyBlueSpiralMsg, "BlueSpiral message received when a cloth is hit in the correct order");
// required functions for PyObject interoperability
PyObject* pyBlueSpiralSuccessfulHitMsg::New(pfGameCliMsg* msg)
{
ptBlueSpiralSuccessfulHitMsg *newObj = (ptBlueSpiralSuccessfulHitMsg*)ptBlueSpiralSuccessfulHitMsg_type.tp_new(&ptBlueSpiralSuccessfulHitMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_BlueSpiral_SuccessfulHit))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralSuccessfulHitMsg, pyBlueSpiralSuccessfulHitMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralSuccessfulHitMsg, pyBlueSpiralSuccessfulHitMsg)
// Module and method definitions
void pyBlueSpiralSuccessfulHitMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralSuccessfulHitMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptBlueSpiralGameWonMsg, pyBlueSpiralGameWonMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralGameWonMsg, pyBlueSpiralGameWonMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralGameWonMsg)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralGameWonMsg)
PYTHON_START_METHODS_TABLE(ptBlueSpiralGameWonMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralGameWonMsg, pyBlueSpiralMsg, "BlueSpiral message received when the last cloth is successfully hit");
// required functions for PyObject interoperability
PyObject* pyBlueSpiralGameWonMsg::New(pfGameCliMsg* msg)
{
ptBlueSpiralGameWonMsg *newObj = (ptBlueSpiralGameWonMsg*)ptBlueSpiralGameWonMsg_type.tp_new(&ptBlueSpiralGameWonMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_BlueSpiral_GameWon))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralGameWonMsg, pyBlueSpiralGameWonMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralGameWonMsg, pyBlueSpiralGameWonMsg)
// Module and method definitions
void pyBlueSpiralGameWonMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralGameWonMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptBlueSpiralGameOverMsg, pyBlueSpiralGameOverMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralGameOverMsg, pyBlueSpiralGameOverMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralGameOverMsg)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralGameOverMsg)
PYTHON_START_METHODS_TABLE(ptBlueSpiralGameOverMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralGameOverMsg, pyBlueSpiralMsg, "BlueSpiral message received when the timer runs out, someone hits the wrong cloth, or the game is restarted (before a game start msg in that last case)");
// required functions for PyObject interoperability
PyObject* pyBlueSpiralGameOverMsg::New(pfGameCliMsg* msg)
{
ptBlueSpiralGameOverMsg *newObj = (ptBlueSpiralGameOverMsg*)ptBlueSpiralGameOverMsg_type.tp_new(&ptBlueSpiralGameOverMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_BlueSpiral_GameOver))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralGameOverMsg, pyBlueSpiralGameOverMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralGameOverMsg, pyBlueSpiralGameOverMsg)
// Module and method definitions
void pyBlueSpiralGameOverMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralGameOverMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptBlueSpiralGameStartedMsg, pyBlueSpiralGameStartedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptBlueSpiralGameStartedMsg, pyBlueSpiralGameStartedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptBlueSpiralGameStartedMsg)
PYTHON_NO_INIT_DEFINITION(ptBlueSpiralGameStartedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptBlueSpiralGameStartedMsg, startSpin)
{
PYTHON_RETURN_BOOL(self->fThis->StartSpin());
}
PYTHON_START_METHODS_TABLE(ptBlueSpiralGameStartedMsg)
PYTHON_METHOD_NOARGS(ptBlueSpiralGameStartedMsg, startSpin, "Returns true if you are supposed to start spinning the door thingy"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptBlueSpiralGameStartedMsg, pyBlueSpiralMsg, "BlueSpiral message received when someone starts the game (or when you join a game that is running)");
// required functions for PyObject interoperability
PyObject* pyBlueSpiralGameStartedMsg::New(pfGameCliMsg* msg)
{
ptBlueSpiralGameStartedMsg *newObj = (ptBlueSpiralGameStartedMsg*)ptBlueSpiralGameStartedMsg_type.tp_new(&ptBlueSpiralGameStartedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_BlueSpiral_GameStarted))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptBlueSpiralGameStartedMsg, pyBlueSpiralGameStartedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptBlueSpiralGameStartedMsg, pyBlueSpiralGameStartedMsg)
// Module and method definitions
void pyBlueSpiralGameStartedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptBlueSpiralGameStartedMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,114 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyClimbingWallGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base climbing wall game client class
//
pyClimbingWallGame::pyClimbingWallGame(): pyGameCli() {}
pyClimbingWallGame::pyClimbingWallGame(pfGameCli* client): pyGameCli(client)
{
if (client && (client->GetGameTypeId() != kGameTypeId_ClimbingWall))
gameClient = nil; // wrong type, just clear it out
}
bool pyClimbingWallGame::IsClimbingWallGame(std::wstring guid)
{
Uuid gameUuid(guid.c_str());
return gameUuid == kGameTypeId_ClimbingWall;
}
void pyClimbingWallGame::JoinCommonClimbingWallGame(pyKey& callbackKey, unsigned gameID)
{
ClimbingWall_CreateParam init;
pfGameMgr::GetInstance()->JoinCommonGame(callbackKey.getKey(), kGameTypeId_ClimbingWall, gameID, sizeof(init), &init);
}
void pyClimbingWallGame::ChangeNumBlockers(int amountToAdjust)
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->ChangeNumBlockers(amountToAdjust);
}
}
void pyClimbingWallGame::Ready(unsigned readyType, unsigned teamNumber)
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->Ready(readyType, teamNumber);
}
}
void pyClimbingWallGame::ChangeBlocker(unsigned teamNumber, unsigned blockerNumber, bool added)
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->ChangeBlocker(teamNumber, blockerNumber, added);
}
}
void pyClimbingWallGame::Reset()
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->Reset();
}
}
void pyClimbingWallGame::PlayerEntered(unsigned teamNumber)
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->PlayerEntered(teamNumber);
}
}
void pyClimbingWallGame::FinishedGame()
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->FinishedGame();
}
}
void pyClimbingWallGame::Panic()
{
if (gameClient)
{
pfGmClimbingWall* climbingWall = pfGmClimbingWall::ConvertNoRef(gameClient);
climbingWall->Panic();
}
}

View File

@ -0,0 +1,72 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyClimbingWallGame_h
#define pyClimbingWallGame_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyClimbingWallGame
//
// PURPOSE: Class wrapper for the climbing wall game client
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCli.h"
#include "../../pyKey.h"
class pyClimbingWallGame : public pyGameCli
{
protected:
pyClimbingWallGame();
pyClimbingWallGame(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallGame);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallGame object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallGame); // converts a PyObject to a pyClimbingWallGame (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static void AddPlasmaConstantsClasses(PyObject* m);
static bool IsClimbingWallGame(std::wstring guid);
static void JoinCommonClimbingWallGame(pyKey& callbackKey, unsigned gameID);
void ChangeNumBlockers(int amountToAdjust);
void Ready(unsigned readyType, unsigned teamNumber);
void ChangeBlocker(unsigned teamNumber, unsigned blockerNumber, bool added);
void Reset();
void PlayerEntered(unsigned teamNumber);
void FinishedGame();
void Panic();
};
#endif // pyClimbingWallGame_h

View File

@ -0,0 +1,196 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyClimbingWallGame.h"
#include <python.h>
#include "../../pyEnum.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base climbing wall game client class
//
PYTHON_CLASS_DEFINITION(ptClimbingWallGame, pyClimbingWallGame);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallGame, pyClimbingWallGame)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallGame)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallGame)
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsClimbingWallGame, args, "Params: typeID\nReturns true if the specifed typeID (guid as a string) is a ClimbingWall game")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtIsClimbingWallGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
bool retVal = pyClimbingWallGame::IsClimbingWallGame(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = pyClimbingWallGame::IsClimbingWallGame(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtIsClimbingWallGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtJoinCommonClimbingWallGame, args, "Params: callbackKey, gameID\nJoins a common ClimbingWall game with the specified ID. If one doesn't exist, it creates it")
{
PyObject* callbackObj = NULL;
int gameID = 0;
if (!PyArg_ParseTuple(args, "Oii", &callbackObj, &gameID))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonClimbingWallGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonClimbingWallGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyClimbingWallGame::JoinCommonClimbingWallGame(*key, gameID);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptClimbingWallGame, changeNumBlockers, args)
{
int amountToAdjust;
if (!PyArg_ParseTuple(args, "i", &amountToAdjust))
{
PyErr_SetString(PyExc_TypeError, "changeNumBlockers expects an integer");
PYTHON_RETURN_ERROR;
}
self->fThis->ChangeNumBlockers(amountToAdjust);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptClimbingWallGame, ready, args)
{
int readyType, teamNumber;
if (!PyArg_ParseTuple(args, "ii", &readyType, &teamNumber))
{
PyErr_SetString(PyExc_TypeError, "ready expects two integers");
PYTHON_RETURN_ERROR;
}
self->fThis->Ready((unsigned)readyType, (unsigned)teamNumber);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptClimbingWallGame, changeBlocker, args)
{
int teamNumber, blockerNumber;
char added;
if (!PyArg_ParseTuple(args, "iib", &teamNumber, &blockerNumber, &added))
{
PyErr_SetString(PyExc_TypeError, "changeBlocker expects two integers and a boolean");
PYTHON_RETURN_ERROR;
}
self->fThis->ChangeBlocker(teamNumber, blockerNumber, added != 0);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptClimbingWallGame, reset, Reset)
PYTHON_METHOD_DEFINITION(ptClimbingWallGame, playerEntered, args)
{
int teamNumber;
if (!PyArg_ParseTuple(args, "i", &teamNumber))
{
PyErr_SetString(PyExc_TypeError, "playerEntered expects an integer");
PYTHON_RETURN_ERROR;
}
self->fThis->PlayerEntered(teamNumber);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptClimbingWallGame, finishedGame, FinishedGame)
PYTHON_BASIC_METHOD_DEFINITION(ptClimbingWallGame, panic, Panic)
PYTHON_START_METHODS_TABLE(ptClimbingWallGame)
PYTHON_METHOD(ptClimbingWallGame, changeNumBlockers, "Params: amountToAdjust\nAdjusts the number of blockers we are playing with"),
PYTHON_METHOD(ptClimbingWallGame, ready, "Params: readyType, teamNumber\nMarks the specified team as ready for the specified type (See PtClimbingWallReadyTypes)"),
PYTHON_METHOD(ptClimbingWallGame, changeBlocker, "Params: teamNumber, blockerNumber, added\nChanges the specified marker's state for the specified team"),
PYTHON_BASIC_METHOD(ptClimbingWallGame, reset, "Attempts to reset the game's control panel"),
PYTHON_METHOD(ptClimbingWallGame, playerEntered, "Params: teamNumber\nTells the server that you are trying to play the game for the specified team"),
PYTHON_BASIC_METHOD(ptClimbingWallGame, finishedGame, "Tells the server you reached the top of the wall"),
PYTHON_BASIC_METHOD(ptClimbingWallGame, panic, "Tells the server you are panicking and want your blockers reset"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallGame, pyGameCli, "Game client for the ClimbingWall game");
// required functions for PyObject interoperability
PyObject* pyClimbingWallGame::New(pfGameCli* client)
{
ptClimbingWallGame *newObj = (ptClimbingWallGame*)ptClimbingWallGame_type.tp_new(&ptClimbingWallGame_type, NULL, NULL);
if (client && (client->GetGameTypeId() == kGameTypeId_ClimbingWall))
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallGame, pyClimbingWallGame)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallGame, pyClimbingWallGame)
// Module and method definitions
void pyClimbingWallGame::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallGame);
PYTHON_CLASS_IMPORT_END(m);
}
void pyClimbingWallGame::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD(methods, PtIsClimbingWallGame);
PYTHON_GLOBAL_METHOD(methods, PtJoinCommonClimbingWallGame);
}
void pyClimbingWallGame::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtClimbingWallReadyTypes);
PYTHON_ENUM_ELEMENT(PtClimbingWallReadyTypes, kClimbingWallReadyNumBlockers, kClimbingWallReadyNumBlockers);
PYTHON_ENUM_ELEMENT(PtClimbingWallReadyTypes, kClimbingWallReadyBlockers, kClimbingWallReadyBlockers);
PYTHON_ENUM_END(m, PtClimbingWallReadyTypes);
}

View File

@ -0,0 +1,308 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyClimbingWallMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base climbing wall msg class
//
pyClimbingWallMsg::pyClimbingWallMsg(): pyGameCliMsg() {}
pyClimbingWallMsg::pyClimbingWallMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->gameCli->GetGameTypeId() != kGameTypeId_ClimbingWall))
message = nil; // wrong type, just clear it out
}
int pyClimbingWallMsg::GetClimbingWallMsgType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyClimbingWallMsg::UpcastToFinalClimbingWallMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_ClimbingWall_NumBlockersChanged:
return pyClimbingWallNumBlockersChangedMsg::New(message);
case kSrv2Cli_ClimbingWall_Ready:
return pyClimbingWallReadyMsg::New(message);
case kSrv2Cli_ClimbingWall_BlockersChanged:
return pyClimbingWallBlockersChangedMsg::New(message);
case kSrv2Cli_ClimbingWall_PlayerEntered:
return pyClimbingWallPlayerEnteredMsg::New(message);
case kSrv2Cli_ClimbingWall_SuitMachineLocked:
return pyClimbingWallSuitMachineLockedMsg::New(message);
case kSrv2Cli_ClimbingWall_GameOver:
return pyClimbingWallGameOverMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyClimbingWallNumBlockersChangedMsg::pyClimbingWallNumBlockersChangedMsg(): pyClimbingWallMsg() {}
pyClimbingWallNumBlockersChangedMsg::pyClimbingWallNumBlockersChangedMsg(pfGameCliMsg* msg): pyClimbingWallMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_ClimbingWall_NumBlockersChanged))
message = nil; // wrong type, just clear it out
}
int pyClimbingWallNumBlockersChangedMsg::NewBlockerCount() const
{
if (message)
{
const Srv2Cli_ClimbingWall_NumBlockersChanged* gmMsg = (const Srv2Cli_ClimbingWall_NumBlockersChanged*)message->netMsg;
return gmMsg->newBlockerCount;
}
return 0;
}
bool pyClimbingWallNumBlockersChangedMsg::LocalOnly() const
{
if (message)
{
const Srv2Cli_ClimbingWall_Ready* gmMsg = (const Srv2Cli_ClimbingWall_Ready*)message->netMsg;
return gmMsg->localOnly;
}
return true; // safe-guard so we don't screw up other's state if the python does something stupid
}
///////////////////////////////////////////////////////////////////////////////
pyClimbingWallReadyMsg::pyClimbingWallReadyMsg(): pyClimbingWallMsg() {}
pyClimbingWallReadyMsg::pyClimbingWallReadyMsg(pfGameCliMsg* msg): pyClimbingWallMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_ClimbingWall_Ready))
message = nil; // wrong type, just clear it out
}
int pyClimbingWallReadyMsg::ReadyType() const
{
if (message)
{
const Srv2Cli_ClimbingWall_Ready* gmMsg = (const Srv2Cli_ClimbingWall_Ready*)message->netMsg;
return gmMsg->readyType;
}
return 0;
}
bool pyClimbingWallReadyMsg::Team1Ready() const
{
if (message)
{
const Srv2Cli_ClimbingWall_Ready* gmMsg = (const Srv2Cli_ClimbingWall_Ready*)message->netMsg;
return gmMsg->team1Ready;
}
return false;
}
bool pyClimbingWallReadyMsg::Team2Ready() const
{
if (message)
{
const Srv2Cli_ClimbingWall_Ready* gmMsg = (const Srv2Cli_ClimbingWall_Ready*)message->netMsg;
return gmMsg->team2Ready;
}
return false;
}
bool pyClimbingWallReadyMsg::LocalOnly() const
{
if (message)
{
const Srv2Cli_ClimbingWall_Ready* gmMsg = (const Srv2Cli_ClimbingWall_Ready*)message->netMsg;
return gmMsg->localOnly;
}
return true; // safe-guard so we don't screw up other's state if the python does something stupid
}
///////////////////////////////////////////////////////////////////////////////
pyClimbingWallBlockersChangedMsg::pyClimbingWallBlockersChangedMsg(): pyClimbingWallMsg() {}
pyClimbingWallBlockersChangedMsg::pyClimbingWallBlockersChangedMsg(pfGameCliMsg* msg): pyClimbingWallMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_ClimbingWall_BlockersChanged))
message = nil; // wrong type, just clear it out
}
int pyClimbingWallBlockersChangedMsg::TeamNumber() const
{
if (message)
{
const Srv2Cli_ClimbingWall_BlockersChanged* gmMsg = (const Srv2Cli_ClimbingWall_BlockersChanged*)message->netMsg;
return gmMsg->teamNumber;
}
return 0;
}
std::vector<int> pyClimbingWallBlockersChangedMsg::BlockersSet() const
{
std::vector<int> retVal;
if (message)
{
const Srv2Cli_ClimbingWall_BlockersChanged* gmMsg = (const Srv2Cli_ClimbingWall_BlockersChanged*)message->netMsg;
for (unsigned i = 0; i < kClimbingWallMaxBlockers; ++i)
{
if (gmMsg->blockersSet[i] != kClimbingWallNoBlocker)
retVal.push_back(gmMsg->blockersSet[i]);
}
}
return retVal;
}
bool pyClimbingWallBlockersChangedMsg::LocalOnly() const
{
if (message)
{
const Srv2Cli_ClimbingWall_BlockersChanged* gmMsg = (const Srv2Cli_ClimbingWall_BlockersChanged*)message->netMsg;
return gmMsg->localOnly;
}
return true; // safe-guard so we don't screw up other's state if the python does something stupid
}
///////////////////////////////////////////////////////////////////////////////
pyClimbingWallPlayerEnteredMsg::pyClimbingWallPlayerEnteredMsg(): pyClimbingWallMsg() {}
pyClimbingWallPlayerEnteredMsg::pyClimbingWallPlayerEnteredMsg(pfGameCliMsg* msg): pyClimbingWallMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_ClimbingWall_PlayerEntered))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyClimbingWallSuitMachineLockedMsg::pyClimbingWallSuitMachineLockedMsg(): pyClimbingWallMsg() {}
pyClimbingWallSuitMachineLockedMsg::pyClimbingWallSuitMachineLockedMsg(pfGameCliMsg* msg): pyClimbingWallMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_ClimbingWall_SuitMachineLocked))
message = nil; // wrong type, just clear it out
}
bool pyClimbingWallSuitMachineLockedMsg::Team1MachineLocked() const
{
if (message)
{
const Srv2Cli_ClimbingWall_SuitMachineLocked* gmMsg = (const Srv2Cli_ClimbingWall_SuitMachineLocked*)message->netMsg;
return gmMsg->team1MachineLocked;
}
return true; // err on the side of caution
}
bool pyClimbingWallSuitMachineLockedMsg::Team2MachineLocked() const
{
if (message)
{
const Srv2Cli_ClimbingWall_SuitMachineLocked* gmMsg = (const Srv2Cli_ClimbingWall_SuitMachineLocked*)message->netMsg;
return gmMsg->team2MachineLocked;
}
return true; // err on the side of caution
}
bool pyClimbingWallSuitMachineLockedMsg::LocalOnly() const
{
if (message)
{
const Srv2Cli_ClimbingWall_SuitMachineLocked* gmMsg = (const Srv2Cli_ClimbingWall_SuitMachineLocked*)message->netMsg;
return gmMsg->localOnly;
}
return true; // safe-guard so we don't screw up other's state if the python does something stupid
}
///////////////////////////////////////////////////////////////////////////////
pyClimbingWallGameOverMsg::pyClimbingWallGameOverMsg(): pyClimbingWallMsg() {}
pyClimbingWallGameOverMsg::pyClimbingWallGameOverMsg(pfGameCliMsg* msg): pyClimbingWallMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_ClimbingWall_GameOver))
message = nil; // wrong type, just clear it out
}
int pyClimbingWallGameOverMsg::TeamWon() const
{
if (message)
{
const Srv2Cli_ClimbingWall_GameOver* gmMsg = (const Srv2Cli_ClimbingWall_GameOver*)message->netMsg;
return gmMsg->teamWon;
}
return 0;
}
std::vector<int> pyClimbingWallGameOverMsg::Team1Blockers() const
{
std::vector<int> retVal;
if (message)
{
const Srv2Cli_ClimbingWall_GameOver* gmMsg = (const Srv2Cli_ClimbingWall_GameOver*)message->netMsg;
for (unsigned i = 0; i < kClimbingWallMaxBlockers; ++i)
{
if (gmMsg->team1Blockers[i] != kClimbingWallNoBlocker)
retVal.push_back(gmMsg->team1Blockers[i]);
}
}
return retVal;
}
std::vector<int> pyClimbingWallGameOverMsg::Team2Blockers() const
{
std::vector<int> retVal;
if (message)
{
const Srv2Cli_ClimbingWall_GameOver* gmMsg = (const Srv2Cli_ClimbingWall_GameOver*)message->netMsg;
for (unsigned i = 0; i < kClimbingWallMaxBlockers; ++i)
{
if (gmMsg->team2Blockers[i] != kClimbingWallNoBlocker)
retVal.push_back(gmMsg->team2Blockers[i]);
}
}
return retVal;
}
bool pyClimbingWallGameOverMsg::LocalOnly() const
{
if (message)
{
const Srv2Cli_ClimbingWall_GameOver* gmMsg = (const Srv2Cli_ClimbingWall_GameOver*)message->netMsg;
return gmMsg->localOnly;
}
return true; // safe-guard so we don't screw up other's state if the python does something stupid
}

View File

@ -0,0 +1,187 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyClimbingWallMsg_h
#define pyClimbingWallMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyClimbingWallMsg
//
// PURPOSE: Class wrapper for ClimbingWall game messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCliMsg.h"
class pyClimbingWallMsg : public pyGameCliMsg
{
protected:
pyClimbingWallMsg();
pyClimbingWallMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallMsg); // converts a PyObject to a pyClimbingWallMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetClimbingWallMsgType() const;
PyObject* UpcastToFinalClimbingWallMsg() const; // returns the climbing wall message that this really is
};
///////////////////////////////////////////////////////////////////////////////
class pyClimbingWallNumBlockersChangedMsg : public pyClimbingWallMsg
{
protected:
pyClimbingWallNumBlockersChangedMsg();
pyClimbingWallNumBlockersChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallNumBlockersChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallNumBlockersChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallNumBlockersChangedMsg); // converts a PyObject to a pyClimbingWallNumBlockersChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int NewBlockerCount() const;
bool LocalOnly() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyClimbingWallReadyMsg : public pyClimbingWallMsg
{
protected:
pyClimbingWallReadyMsg();
pyClimbingWallReadyMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallReadyMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallReadyMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallReadyMsg); // converts a PyObject to a pyClimbingWallReadyMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int ReadyType() const;
bool Team1Ready() const;
bool Team2Ready() const;
bool LocalOnly() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyClimbingWallBlockersChangedMsg : public pyClimbingWallMsg
{
protected:
pyClimbingWallBlockersChangedMsg();
pyClimbingWallBlockersChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallBlockersChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallBlockersChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallBlockersChangedMsg); // converts a PyObject to a pyClimbingWallBlockersChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int TeamNumber() const;
std::vector<int> BlockersSet() const;
bool LocalOnly() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyClimbingWallPlayerEnteredMsg : public pyClimbingWallMsg
{
protected:
pyClimbingWallPlayerEnteredMsg();
pyClimbingWallPlayerEnteredMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallPlayerEnteredMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallPlayerEnteredMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallPlayerEnteredMsg); // converts a PyObject to a pyClimbingWallPlayerEnteredMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyClimbingWallSuitMachineLockedMsg : public pyClimbingWallMsg
{
protected:
pyClimbingWallSuitMachineLockedMsg();
pyClimbingWallSuitMachineLockedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallSuitMachineLockedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallSuitMachineLockedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallSuitMachineLockedMsg); // converts a PyObject to a pyClimbingWallSuitMachineLockedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool Team1MachineLocked() const;
bool Team2MachineLocked() const;
bool LocalOnly() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyClimbingWallGameOverMsg : public pyClimbingWallMsg
{
protected:
pyClimbingWallGameOverMsg();
pyClimbingWallGameOverMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptClimbingWallGameOverMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyClimbingWallGameOverMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyClimbingWallGameOverMsg); // converts a PyObject to a pyClimbingWallGameOverMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int TeamWon() const;
std::vector<int> Team1Blockers() const;
std::vector<int> Team2Blockers() const;
bool LocalOnly() const;
};
#endif // pyClimbingWallMsg_h

View File

@ -0,0 +1,413 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyClimbingWallMsg.h"
#include "../../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base climbing wall msg class
//
PYTHON_CLASS_DEFINITION(ptClimbingWallMsg, pyClimbingWallMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallMsg, pyClimbingWallMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallMsg, getClimbingWallMsgType)
{
return PyInt_FromLong(self->fThis->GetClimbingWallMsgType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallMsg, upcastToFinalClimbingWallMsg)
{
return self->fThis->UpcastToFinalClimbingWallMsg();
}
PYTHON_START_METHODS_TABLE(ptClimbingWallMsg)
PYTHON_METHOD_NOARGS(ptClimbingWallMsg, getClimbingWallMsgType, "Returns the type of the ClimbingWall message (see PtClimbingWallMsgTypes)"),
PYTHON_METHOD_NOARGS(ptClimbingWallMsg, upcastToFinalClimbingWallMsg, "Returns this message as the ClimbingWall msg it is"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallMsg, pyGameCliMsg, "Base class for ClimbingWall game messages");
PYTHON_EXPOSE_TYPE_DEFINITION(ptClimbingWallMsg, pyClimbingWallMsg);
// required functions for PyObject interoperability
PyObject* pyClimbingWallMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallMsg *newObj = (ptClimbingWallMsg*)ptClimbingWallMsg_type.tp_new(&ptClimbingWallMsg_type, NULL, NULL);
if (msg && (msg->gameCli->GetGameTypeId() == kGameTypeId_ClimbingWall))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallMsg, pyClimbingWallMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallMsg, pyClimbingWallMsg)
// Module and method definitions
void pyClimbingWallMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyClimbingWallMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtClimbingWallMsgTypes);
PYTHON_ENUM_ELEMENT(PtClimbingWallMsgTypes, kClimbingWallNumBlockersChanged, kSrv2Cli_ClimbingWall_NumBlockersChanged);
PYTHON_ENUM_ELEMENT(PtClimbingWallMsgTypes, kClimbingWallReadyMsg, kSrv2Cli_ClimbingWall_Ready);
PYTHON_ENUM_ELEMENT(PtClimbingWallMsgTypes, kClimbingWallBlockersChanged, kSrv2Cli_ClimbingWall_BlockersChanged);
PYTHON_ENUM_ELEMENT(PtClimbingWallMsgTypes, kClimbingWallPlayerEntered, kSrv2Cli_ClimbingWall_PlayerEntered);
PYTHON_ENUM_ELEMENT(PtClimbingWallMsgTypes, kClimbingWallSuitMachineLocked, kSrv2Cli_ClimbingWall_SuitMachineLocked);
PYTHON_ENUM_ELEMENT(PtClimbingWallMsgTypes, kClimbingWallGameOver, kSrv2Cli_ClimbingWall_GameOver);
PYTHON_ENUM_END(m, PtClimbingWallMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptClimbingWallNumBlockersChangedMsg, pyClimbingWallNumBlockersChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallNumBlockersChangedMsg, pyClimbingWallNumBlockersChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallNumBlockersChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallNumBlockersChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallNumBlockersChangedMsg, newBlockerCount)
{
return PyInt_FromLong((long)self->fThis->NewBlockerCount());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallNumBlockersChangedMsg, localOnly)
{
PYTHON_RETURN_BOOL(self->fThis->LocalOnly());
}
PYTHON_START_METHODS_TABLE(ptClimbingWallNumBlockersChangedMsg)
PYTHON_METHOD_NOARGS(ptClimbingWallNumBlockersChangedMsg, newBlockerCount, "Returns the number of blockers this game is current running with"),
PYTHON_METHOD_NOARGS(ptClimbingWallNumBlockersChangedMsg, localOnly, "Returns true if we are only supposed to adjust our stuff locally, and not net-prop it"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallNumBlockersChangedMsg, pyClimbingWallMsg, "ClimbingWall message received when the number of blockers is changed");
// required functions for PyObject interoperability
PyObject* pyClimbingWallNumBlockersChangedMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallNumBlockersChangedMsg *newObj = (ptClimbingWallNumBlockersChangedMsg*)ptClimbingWallNumBlockersChangedMsg_type.tp_new(&ptClimbingWallNumBlockersChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_ClimbingWall_NumBlockersChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallNumBlockersChangedMsg, pyClimbingWallNumBlockersChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallNumBlockersChangedMsg, pyClimbingWallNumBlockersChangedMsg)
// Module and method definitions
void pyClimbingWallNumBlockersChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallNumBlockersChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptClimbingWallReadyMsg, pyClimbingWallReadyMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallReadyMsg, pyClimbingWallReadyMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallReadyMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallReadyMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallReadyMsg, readyType)
{
return PyInt_FromLong((long)self->fThis->ReadyType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallReadyMsg, team1Ready)
{
PYTHON_RETURN_BOOL(self->fThis->Team1Ready());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallReadyMsg, team2Ready)
{
PYTHON_RETURN_BOOL(self->fThis->Team2Ready());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallReadyMsg, localOnly)
{
PYTHON_RETURN_BOOL(self->fThis->LocalOnly());
}
PYTHON_START_METHODS_TABLE(ptClimbingWallReadyMsg)
PYTHON_METHOD_NOARGS(ptClimbingWallReadyMsg, readyType, "The type of ready message this represents (see PtClimbingWallReadyTypes)"),
PYTHON_METHOD_NOARGS(ptClimbingWallReadyMsg, team1Ready, "Whether team 1 is ready or not"),
PYTHON_METHOD_NOARGS(ptClimbingWallReadyMsg, team2Ready, "Whether team 2 is ready or not"),
PYTHON_METHOD_NOARGS(ptClimbingWallReadyMsg, localOnly, "Returns true if we are only supposed to adjust our stuff locally, and not net-prop it"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallReadyMsg, pyClimbingWallMsg, "ClimbingWall message received when the ready state of the teams is changed");
// required functions for PyObject interoperability
PyObject* pyClimbingWallReadyMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallReadyMsg *newObj = (ptClimbingWallReadyMsg*)ptClimbingWallReadyMsg_type.tp_new(&ptClimbingWallReadyMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_ClimbingWall_Ready))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallReadyMsg, pyClimbingWallReadyMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallReadyMsg, pyClimbingWallReadyMsg)
// Module and method definitions
void pyClimbingWallReadyMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallReadyMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptClimbingWallBlockersChangedMsg, pyClimbingWallBlockersChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallBlockersChangedMsg, pyClimbingWallBlockersChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallBlockersChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallBlockersChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallBlockersChangedMsg, teamNumber)
{
return PyInt_FromLong((long)self->fThis->TeamNumber());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallBlockersChangedMsg, blockersSet)
{
std::vector<int> blockers = self->fThis->BlockersSet();
PyObject* retVal = PyList_New(blockers.size());
for (unsigned i = 0; i < blockers.size(); ++i)
PyList_SetItem(retVal, i, PyInt_FromLong(blockers[i])); // steals the ref
return retVal;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallBlockersChangedMsg, localOnly)
{
PYTHON_RETURN_BOOL(self->fThis->LocalOnly());
}
PYTHON_START_METHODS_TABLE(ptClimbingWallBlockersChangedMsg)
PYTHON_METHOD_NOARGS(ptClimbingWallBlockersChangedMsg, teamNumber, "The team that this message is for"),
PYTHON_METHOD_NOARGS(ptClimbingWallBlockersChangedMsg, blockersSet, "Returns an array of blocker indicies denoting which blockers are set"),
PYTHON_METHOD_NOARGS(ptClimbingWallBlockersChangedMsg, localOnly, "Returns true if we are only supposed to adjust our stuff locally, and not net-prop it"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallBlockersChangedMsg, pyClimbingWallMsg, "ClimbingWall message received when the blocker state changes");
// required functions for PyObject interoperability
PyObject* pyClimbingWallBlockersChangedMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallBlockersChangedMsg *newObj = (ptClimbingWallBlockersChangedMsg*)ptClimbingWallBlockersChangedMsg_type.tp_new(&ptClimbingWallBlockersChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_ClimbingWall_BlockersChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallBlockersChangedMsg, pyClimbingWallBlockersChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallBlockersChangedMsg, pyClimbingWallBlockersChangedMsg)
// Module and method definitions
void pyClimbingWallBlockersChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallBlockersChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptClimbingWallPlayerEnteredMsg, pyClimbingWallPlayerEnteredMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallPlayerEnteredMsg, pyClimbingWallPlayerEnteredMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallPlayerEnteredMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallPlayerEnteredMsg)
PYTHON_START_METHODS_TABLE(ptClimbingWallPlayerEnteredMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallPlayerEnteredMsg, pyClimbingWallMsg, "ClimbingWall message received when you successfully enter the suit machine");
// required functions for PyObject interoperability
PyObject* pyClimbingWallPlayerEnteredMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallPlayerEnteredMsg *newObj = (ptClimbingWallPlayerEnteredMsg*)ptClimbingWallPlayerEnteredMsg_type.tp_new(&ptClimbingWallPlayerEnteredMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_ClimbingWall_PlayerEntered))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallPlayerEnteredMsg, pyClimbingWallPlayerEnteredMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallPlayerEnteredMsg, pyClimbingWallPlayerEnteredMsg)
// Module and method definitions
void pyClimbingWallPlayerEnteredMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallPlayerEnteredMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptClimbingWallSuitMachineLockedMsg, pyClimbingWallSuitMachineLockedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallSuitMachineLockedMsg, pyClimbingWallSuitMachineLockedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallSuitMachineLockedMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallSuitMachineLockedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallSuitMachineLockedMsg, team1MachineLocked)
{
PYTHON_RETURN_BOOL(self->fThis->Team1MachineLocked());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallSuitMachineLockedMsg, team2MachineLocked)
{
PYTHON_RETURN_BOOL(self->fThis->Team2MachineLocked());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallSuitMachineLockedMsg, localOnly)
{
PYTHON_RETURN_BOOL(self->fThis->LocalOnly());
}
PYTHON_START_METHODS_TABLE(ptClimbingWallSuitMachineLockedMsg)
PYTHON_METHOD_NOARGS(ptClimbingWallSuitMachineLockedMsg, team1MachineLocked, "Whether team 1's suit machine is locked or not"),
PYTHON_METHOD_NOARGS(ptClimbingWallSuitMachineLockedMsg, team2MachineLocked, "Whether team 2's suit machine is locked or not"),
PYTHON_METHOD_NOARGS(ptClimbingWallSuitMachineLockedMsg, localOnly, "Returns true if we are only supposed to adjust our stuff locally, and not net-prop it"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallSuitMachineLockedMsg, pyClimbingWallMsg, "ClimbingWall message received when the locked state of the suit machines is changed");
// required functions for PyObject interoperability
PyObject* pyClimbingWallSuitMachineLockedMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallSuitMachineLockedMsg *newObj = (ptClimbingWallSuitMachineLockedMsg*)ptClimbingWallSuitMachineLockedMsg_type.tp_new(&ptClimbingWallSuitMachineLockedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_ClimbingWall_SuitMachineLocked))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallSuitMachineLockedMsg, pyClimbingWallSuitMachineLockedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallSuitMachineLockedMsg, pyClimbingWallSuitMachineLockedMsg)
// Module and method definitions
void pyClimbingWallSuitMachineLockedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallSuitMachineLockedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptClimbingWallGameOverMsg, pyClimbingWallGameOverMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptClimbingWallGameOverMsg, pyClimbingWallGameOverMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptClimbingWallGameOverMsg)
PYTHON_NO_INIT_DEFINITION(ptClimbingWallGameOverMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallGameOverMsg, teamWon)
{
return PyInt_FromLong((long)self->fThis->TeamWon());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallGameOverMsg, team1Blockers)
{
std::vector<int> blockers = self->fThis->Team1Blockers();
PyObject* retVal = PyList_New(blockers.size());
for (unsigned i = 0; i < blockers.size(); ++i)
PyList_SetItem(retVal, i, PyInt_FromLong(blockers[i])); // steals the ref
return retVal;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallGameOverMsg, team2Blockers)
{
std::vector<int> blockers = self->fThis->Team2Blockers();
PyObject* retVal = PyList_New(blockers.size());
for (unsigned i = 0; i < blockers.size(); ++i)
PyList_SetItem(retVal, i, PyInt_FromLong(blockers[i])); // steals the ref
return retVal;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptClimbingWallGameOverMsg, localOnly)
{
PYTHON_RETURN_BOOL(self->fThis->LocalOnly());
}
PYTHON_START_METHODS_TABLE(ptClimbingWallGameOverMsg)
PYTHON_METHOD_NOARGS(ptClimbingWallGameOverMsg, teamWon, "The team that won the game"),
PYTHON_METHOD_NOARGS(ptClimbingWallGameOverMsg, team1Blockers, "Returns an array of blocker indicies denoting which blockers team 1 set"),
PYTHON_METHOD_NOARGS(ptClimbingWallGameOverMsg, team2Blockers, "Returns an array of blocker indicies denoting which blockers team 2 set"),
PYTHON_METHOD_NOARGS(ptClimbingWallGameOverMsg, localOnly, "Returns true if we are only supposed to adjust our stuff locally, and not net-prop it"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptClimbingWallGameOverMsg, pyClimbingWallMsg, "ClimbingWall message received when the game is over");
// required functions for PyObject interoperability
PyObject* pyClimbingWallGameOverMsg::New(pfGameCliMsg* msg)
{
ptClimbingWallGameOverMsg *newObj = (ptClimbingWallGameOverMsg*)ptClimbingWallGameOverMsg_type.tp_new(&ptClimbingWallGameOverMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_ClimbingWall_GameOver))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptClimbingWallGameOverMsg, pyClimbingWallGameOverMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptClimbingWallGameOverMsg, pyClimbingWallGameOverMsg)
// Module and method definitions
void pyClimbingWallGameOverMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptClimbingWallGameOverMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,86 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyHeekGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base Heek game client class
//
pyHeekGame::pyHeekGame(): pyGameCli() {}
pyHeekGame::pyHeekGame(pfGameCli* client): pyGameCli(client)
{
if (client && (client->GetGameTypeId() != kGameTypeId_Heek))
gameClient = nil; // wrong type, just clear it out
}
bool pyHeekGame::IsHeekGame(std::wstring guid)
{
Uuid gameUuid(guid.c_str());
return gameUuid == kGameTypeId_Heek;
}
void pyHeekGame::JoinCommonHeekGame(pyKey& callbackKey, unsigned gameID)
{
pfGameMgr::GetInstance()->JoinCommonGame(callbackKey.getKey(), kGameTypeId_Heek, gameID, 0, NULL);
}
void pyHeekGame::PlayGame(int position, UInt32 points, std::wstring name)
{
if (gameClient)
{
pfGmHeek* heek = pfGmHeek::ConvertNoRef(gameClient);
heek->PlayGame((unsigned)position, (dword)points, name.c_str());
}
}
void pyHeekGame::LeaveGame()
{
if (gameClient)
{
pfGmHeek* heek = pfGmHeek::ConvertNoRef(gameClient);
heek->LeaveGame();
}
}
void pyHeekGame::Choose(int choice)
{
if (gameClient)
{
pfGmHeek* heek = pfGmHeek::ConvertNoRef(gameClient);
heek->Choose((EHeekChoice)choice);
}
}
void pyHeekGame::SequenceFinished(int seq)
{
if (gameClient)
{
pfGmHeek* heek = pfGmHeek::ConvertNoRef(gameClient);
heek->SequenceFinished((EHeekSeqFinished)seq);
}
}

View File

@ -0,0 +1,69 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyHeekGame_h
#define pyHeekGame_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyHeekGame
//
// PURPOSE: Class wrapper for the Heek game client
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCli.h"
#include "../../pyKey.h"
class pyHeekGame : public pyGameCli
{
protected:
pyHeekGame();
pyHeekGame(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekGame);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekGame object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekGame); // converts a PyObject to a pyHeekGame (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static bool IsHeekGame(std::wstring guid);
static void JoinCommonHeekGame(pyKey& callbackKey, unsigned gameID);
void PlayGame(int position, UInt32 points, std::wstring name);
void LeaveGame();
void Choose(int choice);
void SequenceFinished(int seq);
};
#endif // pyHeekGame_h

View File

@ -0,0 +1,207 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyHeekGame.h"
#include <python.h>
#include "../../pyEnum.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base Heek game client class
//
PYTHON_CLASS_DEFINITION(ptHeekGame, pyHeekGame);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekGame, pyHeekGame)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekGame)
PYTHON_NO_INIT_DEFINITION(ptHeekGame)
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsHeekGame, args, "Params: typeID\nReturns true if the specifed typeID (guid as a string) is a Heek game")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtIsHeekGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
bool retVal = pyHeekGame::IsHeekGame(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = pyHeekGame::IsHeekGame(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtIsHeekGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtJoinCommonHeekGame, args, "Params: callbackKey, gameID\nJoins a common Heek game with the specified ID. If one doesn't exist, it creates it")
{
PyObject* callbackObj = NULL;
int gameID = 0;
if (!PyArg_ParseTuple(args, "Oi", &callbackObj, &gameID))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonHeekGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonHeekGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyHeekGame::JoinCommonHeekGame(*key, gameID);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptHeekGame, playGame, args)
{
int position = 0;
long points = 0;
PyObject* textObj = NULL;
if (!PyArg_ParseTuple(args,"ilO", &position, &points, &textObj))
{
PyErr_SetString(PyExc_TypeError, "playGame expects an int, a long, and a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* temp = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, temp, strLen);
temp[strLen] = L'\0';
self->fThis->PlayGame(position, points, temp);
delete [] temp;
PYTHON_RETURN_NONE;
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* temp = PyString_AsString(textObj);
wchar_t* wTemp = hsStringToWString(temp);
self->fThis->PlayGame(position, points, wTemp);
delete [] wTemp;
PYTHON_RETURN_NONE;
}
else
{
PyErr_SetString(PyExc_TypeError, "playGame expects an int, a long, and a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_BASIC_METHOD_DEFINITION(ptHeekGame, leaveGame, LeaveGame)
PYTHON_METHOD_DEFINITION(ptHeekGame, choose, args)
{
int choice = 0;
if (!PyArg_ParseTuple(args, "i", &choice))
{
PyErr_SetString(PyExc_TypeError, "choose expects an int");
PYTHON_RETURN_ERROR;
}
self->fThis->Choose(choice);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptHeekGame, sequenceFinished, args)
{
int seq = 0;
if (!PyArg_ParseTuple(args, "i", &seq))
{
PyErr_SetString(PyExc_TypeError, "sequenceFinished expects an int");
PYTHON_RETURN_ERROR;
}
self->fThis->SequenceFinished(seq);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptHeekGame)
PYTHON_METHOD(ptHeekGame, playGame, "Params: position, points, name\nRequests to start playing the game in the specified position"),
PYTHON_BASIC_METHOD(ptHeekGame, leaveGame, "Leaves this game (puts us into \"observer\" mode"),
PYTHON_METHOD(ptHeekGame, choose, "Params: choice\nMakes the specified move (see PtHeekGameChoice)"),
PYTHON_METHOD(ptHeekGame, sequenceFinished, "Params: sequence\nTells the server that the specified animation finished (see PtHeekGameSeq)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekGame, pyGameCli, "Game client for the Heek game");
// required functions for PyObject interoperability
PyObject* pyHeekGame::New(pfGameCli* client)
{
ptHeekGame *newObj = (ptHeekGame*)ptHeekGame_type.tp_new(&ptHeekGame_type, NULL, NULL);
if (client && (client->GetGameTypeId() == kGameTypeId_Heek))
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekGame, pyHeekGame)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekGame, pyHeekGame)
// Module and method definitions
void pyHeekGame::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekGame);
PYTHON_CLASS_IMPORT_END(m);
}
void pyHeekGame::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtHeekGameChoice);
PYTHON_ENUM_ELEMENT(PtHeekGameChoice, kHeekGameChoiceRock, kHeekRock);
PYTHON_ENUM_ELEMENT(PtHeekGameChoice, kHeekGameChoicePaper, kHeekPaper);
PYTHON_ENUM_ELEMENT(PtHeekGameChoice, kHeekGameChoiceScissors, kHeekScissors);
PYTHON_ENUM_END(m, PtHeekGameChoice);
PYTHON_ENUM_START(PtHeekGameSeq);
PYTHON_ENUM_ELEMENT(PtHeekGameSeq, kHeekGameSeqCountdown, kHeekCountdownSeq);
PYTHON_ENUM_ELEMENT(PtHeekGameSeq, kHeekGameSeqChoiceAnim, kHeekChoiceAnimSeq);
PYTHON_ENUM_ELEMENT(PtHeekGameSeq, kHeekGameSeqGameWinAnim, kHeekGameWinAnimSeq);
PYTHON_ENUM_END(m, PtHeekGameSeq);
}
void pyHeekGame::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD(methods, PtIsHeekGame);
PYTHON_GLOBAL_METHOD(methods, PtJoinCommonHeekGame);
}

View File

@ -0,0 +1,386 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyHeekMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base Heek msg class
//
pyHeekMsg::pyHeekMsg(): pyGameCliMsg() {}
pyHeekMsg::pyHeekMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->gameCli->GetGameTypeId() != kGameTypeId_Heek))
message = nil; // wrong type, just clear it out
}
int pyHeekMsg::GetHeekMsgType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyHeekMsg::UpcastToFinalHeekMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_Heek_PlayGame:
return pyHeekPlayGameMsg::New(message);
case kSrv2Cli_Heek_Goodbye:
return pyHeekGoodbyeMsg::New(message);
case kSrv2Cli_Heek_Welcome:
return pyHeekWelcomeMsg::New(message);
case kSrv2Cli_Heek_Drop:
return pyHeekDropMsg::New(message);
case kSrv2Cli_Heek_Setup:
return pyHeekSetupMsg::New(message);
case kSrv2Cli_Heek_LightState:
return pyHeekLightStateMsg::New(message);
case kSrv2Cli_Heek_InterfaceState:
return pyHeekInterfaceStateMsg::New(message);
case kSrv2Cli_Heek_CountdownState:
return pyHeekCountdownStateMsg::New(message);
case kSrv2Cli_Heek_WinLose:
return pyHeekWinLoseMsg::New(message);
case kSrv2Cli_Heek_GameWin:
return pyHeekGameWinMsg::New(message);
case kSrv2Cli_Heek_PointUpdate:
return pyHeekPointUpdateMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyHeekPlayGameMsg::pyHeekPlayGameMsg(): pyHeekMsg() {}
pyHeekPlayGameMsg::pyHeekPlayGameMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_PlayGame))
message = nil; // wrong type, just clear it out
}
bool pyHeekPlayGameMsg::IsPlaying() const
{
if (message)
{
const Srv2Cli_Heek_PlayGame* gmMsg = (const Srv2Cli_Heek_PlayGame*)message->netMsg;
return gmMsg->isPlaying;
}
return false;
}
bool pyHeekPlayGameMsg::IsSinglePlayer() const
{
if (message)
{
const Srv2Cli_Heek_PlayGame* gmMsg = (const Srv2Cli_Heek_PlayGame*)message->netMsg;
return gmMsg->isSinglePlayer;
}
return false;
}
bool pyHeekPlayGameMsg::EnableButtons() const
{
if (message)
{
const Srv2Cli_Heek_PlayGame* gmMsg = (const Srv2Cli_Heek_PlayGame*)message->netMsg;
return gmMsg->enableButtons;
}
return false;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekGoodbyeMsg::pyHeekGoodbyeMsg(): pyHeekMsg() {}
pyHeekGoodbyeMsg::pyHeekGoodbyeMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_Goodbye))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyHeekWelcomeMsg::pyHeekWelcomeMsg(): pyHeekMsg() {}
pyHeekWelcomeMsg::pyHeekWelcomeMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_Welcome))
message = nil; // wrong type, just clear it out
}
unsigned long pyHeekWelcomeMsg::Points() const
{
if (message)
{
const Srv2Cli_Heek_Welcome* gmMsg = (const Srv2Cli_Heek_Welcome*)message->netMsg;
return gmMsg->points;
}
return 0;
}
unsigned long pyHeekWelcomeMsg::Rank() const
{
if (message)
{
const Srv2Cli_Heek_Welcome* gmMsg = (const Srv2Cli_Heek_Welcome*)message->netMsg;
return gmMsg->rank;
}
return 0;
}
std::wstring pyHeekWelcomeMsg::Name() const
{
if (message)
{
const Srv2Cli_Heek_Welcome* gmMsg = (const Srv2Cli_Heek_Welcome*)message->netMsg;
return gmMsg->name;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyHeekDropMsg::pyHeekDropMsg(): pyHeekMsg() {}
pyHeekDropMsg::pyHeekDropMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_Drop))
message = nil; // wrong type, just clear it out
}
int pyHeekDropMsg::Position() const
{
if (message)
{
const Srv2Cli_Heek_Drop* gmMsg = (const Srv2Cli_Heek_Drop*)message->netMsg;
return gmMsg->position;
}
return -1;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekSetupMsg::pyHeekSetupMsg(): pyHeekMsg() {}
pyHeekSetupMsg::pyHeekSetupMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_Welcome))
message = nil; // wrong type, just clear it out
}
int pyHeekSetupMsg::Position() const
{
if (message)
{
const Srv2Cli_Heek_Setup* gmMsg = (const Srv2Cli_Heek_Setup*)message->netMsg;
return gmMsg->position;
}
return -1;
}
bool pyHeekSetupMsg::ButtonState() const
{
if (message)
{
const Srv2Cli_Heek_Setup* gmMsg = (const Srv2Cli_Heek_Setup*)message->netMsg;
return gmMsg->buttonState;
}
return false;
}
std::vector<bool> pyHeekSetupMsg::LightOn() const
{
std::vector<bool> retVal;
if (message)
{
const Srv2Cli_Heek_Setup* gmMsg = (const Srv2Cli_Heek_Setup*)message->netMsg;
int numLights = arrsize(gmMsg->lightOn);
for (int i = 0; i < numLights; ++i)
retVal.push_back(gmMsg->lightOn[i]);
return retVal;
}
return retVal;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekLightStateMsg::pyHeekLightStateMsg(): pyHeekMsg() {}
pyHeekLightStateMsg::pyHeekLightStateMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_LightState))
message = nil; // wrong type, just clear it out
}
int pyHeekLightStateMsg::LightNum() const
{
if (message)
{
const Srv2Cli_Heek_LightState* gmMsg = (const Srv2Cli_Heek_LightState*)message->netMsg;
return gmMsg->lightNum;
}
return -1;
}
int pyHeekLightStateMsg::State() const
{
if (message)
{
const Srv2Cli_Heek_LightState* gmMsg = (const Srv2Cli_Heek_LightState*)message->netMsg;
return gmMsg->state;
}
return -1;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekInterfaceStateMsg::pyHeekInterfaceStateMsg(): pyHeekMsg() {}
pyHeekInterfaceStateMsg::pyHeekInterfaceStateMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_InterfaceState))
message = nil; // wrong type, just clear it out
}
bool pyHeekInterfaceStateMsg::ButtonsEnabled() const
{
if (message)
{
const Srv2Cli_Heek_InterfaceState* gmMsg = (const Srv2Cli_Heek_InterfaceState*)message->netMsg;
return gmMsg->buttonsEnabled;
}
return false;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekCountdownStateMsg::pyHeekCountdownStateMsg(): pyHeekMsg() {}
pyHeekCountdownStateMsg::pyHeekCountdownStateMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_CountdownState))
message = nil; // wrong type, just clear it out
}
int pyHeekCountdownStateMsg::State() const
{
if (message)
{
const Srv2Cli_Heek_CountdownState* gmMsg = (const Srv2Cli_Heek_CountdownState*)message->netMsg;
return gmMsg->state;
}
return false;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekWinLoseMsg::pyHeekWinLoseMsg(): pyHeekMsg() {}
pyHeekWinLoseMsg::pyHeekWinLoseMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_WinLose))
message = nil; // wrong type, just clear it out
}
bool pyHeekWinLoseMsg::Win() const
{
if (message)
{
const Srv2Cli_Heek_WinLose* gmMsg = (const Srv2Cli_Heek_WinLose*)message->netMsg;
return gmMsg->win;
}
return false;
}
int pyHeekWinLoseMsg::Choice() const
{
if (message)
{
const Srv2Cli_Heek_WinLose* gmMsg = (const Srv2Cli_Heek_WinLose*)message->netMsg;
return gmMsg->choice;
}
return -1;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekGameWinMsg::pyHeekGameWinMsg(): pyHeekMsg() {}
pyHeekGameWinMsg::pyHeekGameWinMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_GameWin))
message = nil; // wrong type, just clear it out
}
int pyHeekGameWinMsg::Choice() const
{
if (message)
{
const Srv2Cli_Heek_GameWin* gmMsg = (const Srv2Cli_Heek_GameWin*)message->netMsg;
return gmMsg->choice;
}
return -1;
}
///////////////////////////////////////////////////////////////////////////////
pyHeekPointUpdateMsg::pyHeekPointUpdateMsg(): pyHeekMsg() {}
pyHeekPointUpdateMsg::pyHeekPointUpdateMsg(pfGameCliMsg* msg): pyHeekMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Heek_PointUpdate))
message = nil; // wrong type, just clear it out
}
bool pyHeekPointUpdateMsg::DisplayUpdate() const
{
if (message)
{
const Srv2Cli_Heek_PointUpdate* gmMsg = (const Srv2Cli_Heek_PointUpdate*)message->netMsg;
return gmMsg->displayUpdate;
}
return false;
}
unsigned long pyHeekPointUpdateMsg::Points() const
{
if (message)
{
const Srv2Cli_Heek_PointUpdate* gmMsg = (const Srv2Cli_Heek_PointUpdate*)message->netMsg;
return gmMsg->points;
}
return 0;
}
unsigned long pyHeekPointUpdateMsg::Rank() const
{
if (message)
{
const Srv2Cli_Heek_PointUpdate* gmMsg = (const Srv2Cli_Heek_PointUpdate*)message->netMsg;
return gmMsg->rank;
}
return 0;
}

View File

@ -0,0 +1,283 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyHeekMsg_h
#define pyHeekMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyHeekMsg
//
// PURPOSE: Class wrapper for Heek game messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCliMsg.h"
class pyHeekMsg : public pyGameCliMsg
{
protected:
pyHeekMsg();
pyHeekMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptHeekMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekMsg); // converts a PyObject to a pyHeekMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetHeekMsgType() const;
PyObject* UpcastToFinalHeekMsg() const; // returns the heek message this really is
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekPlayGameMsg : public pyHeekMsg
{
protected:
pyHeekPlayGameMsg();
pyHeekPlayGameMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekPlayGameMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekPlayGameMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekPlayGameMsg); // converts a PyObject to a pyHeekPlayGameMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool IsPlaying() const;
bool IsSinglePlayer() const;
bool EnableButtons() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekGoodbyeMsg : public pyHeekMsg
{
protected:
pyHeekGoodbyeMsg();
pyHeekGoodbyeMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekGoodbyeMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekGoodbyeMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekGoodbyeMsg); // converts a PyObject to a pyHeekGoodbyeMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekWelcomeMsg : public pyHeekMsg
{
protected:
pyHeekWelcomeMsg();
pyHeekWelcomeMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekWelcomeMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekWelcomeMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekWelcomeMsg); // converts a PyObject to a pyHeekWelcomeMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long Points() const;
unsigned long Rank() const;
std::wstring Name() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekDropMsg : public pyHeekMsg
{
protected:
pyHeekDropMsg();
pyHeekDropMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekDropMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekDropMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekDropMsg); // converts a PyObject to a pyHeekDropMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int Position() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekSetupMsg : public pyHeekMsg
{
protected:
pyHeekSetupMsg();
pyHeekSetupMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekSetupMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekSetupMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekSetupMsg); // converts a PyObject to a pyHeekSetupMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int Position() const;
bool ButtonState() const;
std::vector<bool> LightOn() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekLightStateMsg : public pyHeekMsg
{
protected:
pyHeekLightStateMsg();
pyHeekLightStateMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekLightStateMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekLightStateMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekLightStateMsg); // converts a PyObject to a pyHeekLightStateMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int LightNum() const;
int State() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekInterfaceStateMsg : public pyHeekMsg
{
protected:
pyHeekInterfaceStateMsg();
pyHeekInterfaceStateMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekInterfaceStateMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekInterfaceStateMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekInterfaceStateMsg); // converts a PyObject to a pyHeekInterfaceStateMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool ButtonsEnabled() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekCountdownStateMsg : public pyHeekMsg
{
protected:
pyHeekCountdownStateMsg();
pyHeekCountdownStateMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekCountdownStateMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekCountdownStateMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekCountdownStateMsg); // converts a PyObject to a pyHeekCountdownStateMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int State() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekWinLoseMsg : public pyHeekMsg
{
protected:
pyHeekWinLoseMsg();
pyHeekWinLoseMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekWinLoseMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekWinLoseMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekWinLoseMsg); // converts a PyObject to a pyHeekWinLoseMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool Win() const;
int Choice() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekGameWinMsg : public pyHeekMsg
{
protected:
pyHeekGameWinMsg();
pyHeekGameWinMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekGameWinMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekGameWinMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekGameWinMsg); // converts a PyObject to a pyHeekGameWinMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int Choice() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyHeekPointUpdateMsg : public pyHeekMsg
{
protected:
pyHeekPointUpdateMsg();
pyHeekPointUpdateMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptHeekPointUpdateMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyHeekPointUpdateMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyHeekPointUpdateMsg); // converts a PyObject to a pyHeekPointUpdateMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool DisplayUpdate() const;
unsigned long Points() const;
unsigned long Rank() const;
};
#endif // pyHeekMsg_h

View File

@ -0,0 +1,618 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyHeekMsg.h"
#include "../../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base Heek msg class
//
PYTHON_CLASS_DEFINITION(ptHeekMsg, pyHeekMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekMsg, pyHeekMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekMsg, getHeekMsgType)
{
return PyInt_FromLong(self->fThis->GetHeekMsgType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekMsg, upcastToFinalHeekMsg)
{
return self->fThis->UpcastToFinalHeekMsg();
}
PYTHON_START_METHODS_TABLE(ptHeekMsg)
PYTHON_METHOD_NOARGS(ptHeekMsg, getHeekMsgType, "Returns the type of the Heek message (see PtHeekMsgTypes)"),
PYTHON_METHOD_NOARGS(ptHeekMsg, upcastToFinalHeekMsg, "Returns this message as the Heek message it is"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekMsg, pyGameCliMsg, "Base class for Heek game messages");
PYTHON_EXPOSE_TYPE_DEFINITION(ptHeekMsg, pyHeekMsg);
// required functions for PyObject interoperability
PyObject* pyHeekMsg::New(pfGameCliMsg* msg)
{
ptHeekMsg *newObj = (ptHeekMsg*)ptHeekMsg_type.tp_new(&ptHeekMsg_type, NULL, NULL);
if (msg && (msg->gameCli->GetGameTypeId() == kGameTypeId_Heek))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekMsg, pyHeekMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekMsg, pyHeekMsg)
// Module and method definitions
void pyHeekMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyHeekMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtHeekMsgTypes);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekPlayGame, kSrv2Cli_Heek_PlayGame);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekGoodbye, kSrv2Cli_Heek_Goodbye);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekWelcome, kSrv2Cli_Heek_Welcome);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekDrop, kSrv2Cli_Heek_Drop);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekSetup, kSrv2Cli_Heek_Setup);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekLightState, kSrv2Cli_Heek_LightState);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekInterfaceState, kSrv2Cli_Heek_InterfaceState);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekCountdownState, kSrv2Cli_Heek_CountdownState);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekWinLose, kSrv2Cli_Heek_WinLose);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekGameWin, kSrv2Cli_Heek_GameWin);
PYTHON_ENUM_ELEMENT(PtHeekMsgTypes, kHeekPointUpdate, kSrv2Cli_Heek_PointUpdate);
PYTHON_ENUM_END(m, PtHeekMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptHeekPlayGameMsg, pyHeekPlayGameMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekPlayGameMsg, pyHeekPlayGameMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekPlayGameMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekPlayGameMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekPlayGameMsg, isPlaying)
{
PYTHON_RETURN_BOOL(self->fThis->IsPlaying());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekPlayGameMsg, isSinglePlayer)
{
PYTHON_RETURN_BOOL(self->fThis->IsSinglePlayer());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekPlayGameMsg, enableButtons)
{
PYTHON_RETURN_BOOL(self->fThis->EnableButtons())
}
PYTHON_START_METHODS_TABLE(ptHeekPlayGameMsg)
PYTHON_METHOD_NOARGS(ptHeekPlayGameMsg, isPlaying, "Returns true if the server accepted the play game request"),
PYTHON_METHOD_NOARGS(ptHeekPlayGameMsg, isSinglePlayer, "Returns true if you are the only player at the table"),
PYTHON_METHOD_NOARGS(ptHeekPlayGameMsg, enableButtons, "Returns true if we should enable the buttons at the place we sat down"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekPlayGameMsg, pyHeekMsg, "Heek message received when the server processes your play game request");
// required functions for PyObject interoperability
PyObject* pyHeekPlayGameMsg::New(pfGameCliMsg* msg)
{
ptHeekPlayGameMsg *newObj = (ptHeekPlayGameMsg*)ptHeekPlayGameMsg_type.tp_new(&ptHeekPlayGameMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_PlayGame))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekPlayGameMsg, pyHeekPlayGameMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekPlayGameMsg, pyHeekPlayGameMsg)
// Module and method definitions
void pyHeekPlayGameMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekPlayGameMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekGoodbyeMsg, pyHeekGoodbyeMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekGoodbyeMsg, pyHeekGoodbyeMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekGoodbyeMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekGoodbyeMsg)
PYTHON_START_METHODS_TABLE(ptHeekGoodbyeMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekGoodbyeMsg, pyHeekMsg, "Heek message received when the server processes leave request");
// required functions for PyObject interoperability
PyObject* pyHeekGoodbyeMsg::New(pfGameCliMsg* msg)
{
ptHeekGoodbyeMsg *newObj = (ptHeekGoodbyeMsg*)ptHeekGoodbyeMsg_type.tp_new(&ptHeekGoodbyeMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_Goodbye))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekGoodbyeMsg, pyHeekGoodbyeMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekGoodbyeMsg, pyHeekGoodbyeMsg)
// Module and method definitions
void pyHeekGoodbyeMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekGoodbyeMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekWelcomeMsg, pyHeekWelcomeMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekWelcomeMsg, pyHeekWelcomeMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekWelcomeMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekWelcomeMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekWelcomeMsg, points)
{
return PyLong_FromUnsignedLong(self->fThis->Points());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekWelcomeMsg, rank)
{
return PyLong_FromUnsignedLong(self->fThis->Rank());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekWelcomeMsg, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_START_METHODS_TABLE(ptHeekWelcomeMsg)
PYTHON_METHOD_NOARGS(ptHeekWelcomeMsg, points, "Returns the new player's points"),
PYTHON_METHOD_NOARGS(ptHeekWelcomeMsg, rank, "Returns the new player's rank"),
PYTHON_METHOD_NOARGS(ptHeekWelcomeMsg, name, "Returns the new player's name"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekWelcomeMsg, pyHeekMsg, "Heek message received when a new player sits down");
// required functions for PyObject interoperability
PyObject* pyHeekWelcomeMsg::New(pfGameCliMsg* msg)
{
ptHeekWelcomeMsg *newObj = (ptHeekWelcomeMsg*)ptHeekWelcomeMsg_type.tp_new(&ptHeekWelcomeMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_Welcome))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekWelcomeMsg, pyHeekWelcomeMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekWelcomeMsg, pyHeekWelcomeMsg)
// Module and method definitions
void pyHeekWelcomeMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekWelcomeMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekDropMsg, pyHeekDropMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekDropMsg, pyHeekDropMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekDropMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekDropMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekDropMsg, position)
{
return PyLong_FromUnsignedLong(self->fThis->Position());
}
PYTHON_START_METHODS_TABLE(ptHeekDropMsg)
PYTHON_METHOD_NOARGS(ptHeekDropMsg, position, "Returns player position to cleanup and dump"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekDropMsg, pyHeekMsg, "Heek message received when another player's position needs to be reset/modified");
// required functions for PyObject interoperability
PyObject* pyHeekDropMsg::New(pfGameCliMsg* msg)
{
ptHeekDropMsg *newObj = (ptHeekDropMsg*)ptHeekDropMsg_type.tp_new(&ptHeekDropMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_Drop))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekDropMsg, pyHeekDropMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekDropMsg, pyHeekDropMsg)
// Module and method definitions
void pyHeekDropMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekDropMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekSetupMsg, pyHeekSetupMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekSetupMsg, pyHeekSetupMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekSetupMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekSetupMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekSetupMsg, position)
{
return PyInt_FromLong(self->fThis->Position());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekSetupMsg, buttonState)
{
PYTHON_RETURN_BOOL(self->fThis->ButtonState());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekSetupMsg, lightOn)
{
std::vector<bool> lights = self->fThis->LightOn();
PyObject* retVal = PyList_New(lights.size());
for (unsigned i = 0; i < lights.size(); ++i)
PyList_SetItem(retVal, i, PyInt_FromLong(lights[i] ? 1 : 0));
return retVal;
}
PYTHON_START_METHODS_TABLE(ptHeekSetupMsg)
PYTHON_METHOD_NOARGS(ptHeekSetupMsg, position, "Returns the position this message is for"),
PYTHON_METHOD_NOARGS(ptHeekSetupMsg, buttonState, "Returns whether the buttons are enabled or not"),
PYTHON_METHOD_NOARGS(ptHeekSetupMsg, lightOn, "Returns a list of bools representing lights on or off"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekSetupMsg, pyHeekMsg, "Heek message for setting up each position's state");
// required functions for PyObject interoperability
PyObject* pyHeekSetupMsg::New(pfGameCliMsg* msg)
{
ptHeekSetupMsg *newObj = (ptHeekSetupMsg*)ptHeekSetupMsg_type.tp_new(&ptHeekSetupMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_Setup))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekSetupMsg, pyHeekSetupMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekSetupMsg, pyHeekSetupMsg)
// Module and method definitions
void pyHeekSetupMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekSetupMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekLightStateMsg, pyHeekLightStateMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekLightStateMsg, pyHeekLightStateMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekLightStateMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekLightStateMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekLightStateMsg, lightNum)
{
return PyInt_FromLong(self->fThis->LightNum());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekLightStateMsg, state)
{
return PyInt_FromLong(self->fThis->State());
}
PYTHON_START_METHODS_TABLE(ptHeekLightStateMsg)
PYTHON_METHOD_NOARGS(ptHeekLightStateMsg, lightNum, "Returns the index of the light this refers to"),
PYTHON_METHOD_NOARGS(ptHeekLightStateMsg, state, "Returns state the light should be switched to (see PtHeekLightStates)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekLightStateMsg, pyHeekMsg, "Heek message received when one of your local lights needs to change state");
// required functions for PyObject interoperability
PyObject* pyHeekLightStateMsg::New(pfGameCliMsg* msg)
{
ptHeekLightStateMsg *newObj = (ptHeekLightStateMsg*)ptHeekLightStateMsg_type.tp_new(&ptHeekLightStateMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_LightState))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekLightStateMsg, pyHeekLightStateMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekLightStateMsg, pyHeekLightStateMsg)
// Module and method definitions
void pyHeekLightStateMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekLightStateMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyHeekLightStateMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtHeekLightStates);
PYTHON_ENUM_ELEMENT(PtHeekLightStates, kHeekLightOn, kHeekLightOn);
PYTHON_ENUM_ELEMENT(PtHeekLightStates, kHeekLightOff, kHeekLightOff);
PYTHON_ENUM_ELEMENT(PtHeekLightStates, kHeekLightFlash, kHeekLightFlash);
PYTHON_ENUM_END(m, PtHeekLightStates);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekInterfaceStateMsg, pyHeekInterfaceStateMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekInterfaceStateMsg, pyHeekInterfaceStateMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekInterfaceStateMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekInterfaceStateMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekInterfaceStateMsg, buttonsEnabled)
{
PYTHON_RETURN_BOOL(self->fThis->ButtonsEnabled());
}
PYTHON_START_METHODS_TABLE(ptHeekInterfaceStateMsg)
PYTHON_METHOD_NOARGS(ptHeekInterfaceStateMsg, buttonsEnabled, "Returns whether your buttons should be enabled"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekInterfaceStateMsg, pyHeekMsg, "Heek message received when your interface buttons need to enable or disable");
// required functions for PyObject interoperability
PyObject* pyHeekInterfaceStateMsg::New(pfGameCliMsg* msg)
{
ptHeekInterfaceStateMsg *newObj = (ptHeekInterfaceStateMsg*)ptHeekInterfaceStateMsg_type.tp_new(&ptHeekInterfaceStateMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_InterfaceState))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekInterfaceStateMsg, pyHeekInterfaceStateMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekInterfaceStateMsg, pyHeekInterfaceStateMsg)
// Module and method definitions
void pyHeekInterfaceStateMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekInterfaceStateMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekCountdownStateMsg, pyHeekCountdownStateMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekCountdownStateMsg, pyHeekCountdownStateMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekCountdownStateMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekCountdownStateMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekCountdownStateMsg, state)
{
return PyInt_FromLong(self->fThis->State());
}
PYTHON_START_METHODS_TABLE(ptHeekCountdownStateMsg)
PYTHON_METHOD_NOARGS(ptHeekCountdownStateMsg, state, "Returns state the countdown should be switched to (see PtHeekCountdownStates)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekCountdownStateMsg, pyHeekMsg, "Heek message received by game admin when the countdown state needs to change");
// required functions for PyObject interoperability
PyObject* pyHeekCountdownStateMsg::New(pfGameCliMsg* msg)
{
ptHeekCountdownStateMsg *newObj = (ptHeekCountdownStateMsg*)ptHeekCountdownStateMsg_type.tp_new(&ptHeekCountdownStateMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_CountdownState))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekCountdownStateMsg, pyHeekCountdownStateMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekCountdownStateMsg, pyHeekCountdownStateMsg)
// Module and method definitions
void pyHeekCountdownStateMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekCountdownStateMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyHeekCountdownStateMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtHeekCountdownStates);
PYTHON_ENUM_ELEMENT(PtHeekCountdownStates, kHeekCountdownStart, kHeekCountdownStart);
PYTHON_ENUM_ELEMENT(PtHeekCountdownStates, kHeekCountdownStop, kHeekCountdownStop);
PYTHON_ENUM_ELEMENT(PtHeekCountdownStates, kHeekCountdownIdle, kHeekCountdownIdle);
PYTHON_ENUM_END(m, PtHeekCountdownStates);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekWinLoseMsg, pyHeekWinLoseMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekWinLoseMsg, pyHeekWinLoseMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekWinLoseMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekWinLoseMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekWinLoseMsg, win)
{
PYTHON_RETURN_BOOL(self->fThis->Win());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekWinLoseMsg, choice)
{
return PyInt_FromLong(self->fThis->Choice());
}
PYTHON_START_METHODS_TABLE(ptHeekWinLoseMsg)
PYTHON_METHOD_NOARGS(ptHeekWinLoseMsg, win, "Returns true if you won"),
PYTHON_METHOD_NOARGS(ptHeekWinLoseMsg, choice, "Returns the choice that won or lost (see PtHeekGameChoice)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekWinLoseMsg, pyHeekMsg, "Heek message received when the round is over and you won or lost");
// required functions for PyObject interoperability
PyObject* pyHeekWinLoseMsg::New(pfGameCliMsg* msg)
{
ptHeekWinLoseMsg *newObj = (ptHeekWinLoseMsg*)ptHeekWinLoseMsg_type.tp_new(&ptHeekWinLoseMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_WinLose))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekWinLoseMsg, pyHeekWinLoseMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekWinLoseMsg, pyHeekWinLoseMsg)
// Module and method definitions
void pyHeekWinLoseMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekWinLoseMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekGameWinMsg, pyHeekGameWinMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekGameWinMsg, pyHeekGameWinMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekGameWinMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekGameWinMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekGameWinMsg, choice)
{
return PyInt_FromLong(self->fThis->Choice());
}
PYTHON_START_METHODS_TABLE(ptHeekGameWinMsg)
PYTHON_METHOD_NOARGS(ptHeekGameWinMsg, choice, "Returns the choice that won (see PtHeekGameChoice)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekGameWinMsg, pyHeekMsg, "Heek message received by game admin when a game is won");
// required functions for PyObject interoperability
PyObject* pyHeekGameWinMsg::New(pfGameCliMsg* msg)
{
ptHeekGameWinMsg *newObj = (ptHeekGameWinMsg*)ptHeekGameWinMsg_type.tp_new(&ptHeekGameWinMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_GameWin))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekGameWinMsg, pyHeekGameWinMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekGameWinMsg, pyHeekGameWinMsg)
// Module and method definitions
void pyHeekGameWinMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekGameWinMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptHeekPointUpdateMsg, pyHeekPointUpdateMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptHeekPointUpdateMsg, pyHeekPointUpdateMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptHeekPointUpdateMsg)
PYTHON_NO_INIT_DEFINITION(ptHeekPointUpdateMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekPointUpdateMsg, displayUpdate)
{
PYTHON_RETURN_BOOL(self->fThis->DisplayUpdate());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekPointUpdateMsg, points)
{
return PyLong_FromUnsignedLong(self->fThis->Points());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptHeekPointUpdateMsg, rank)
{
return PyLong_FromUnsignedLong(self->fThis->Rank());
}
PYTHON_START_METHODS_TABLE(ptHeekPointUpdateMsg)
PYTHON_METHOD_NOARGS(ptHeekPointUpdateMsg, displayUpdate, "Returns whether you should display a message to the user"),
PYTHON_METHOD_NOARGS(ptHeekPointUpdateMsg, points, "Returns your new amount of points"),
PYTHON_METHOD_NOARGS(ptHeekPointUpdateMsg, rank, "Returns your new rank"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptHeekPointUpdateMsg, pyHeekMsg, "Heek message received when the number of points you have needs to be changed");
// required functions for PyObject interoperability
PyObject* pyHeekPointUpdateMsg::New(pfGameCliMsg* msg)
{
ptHeekPointUpdateMsg *newObj = (ptHeekPointUpdateMsg*)ptHeekPointUpdateMsg_type.tp_new(&ptHeekPointUpdateMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Heek_PointUpdate))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptHeekPointUpdateMsg, pyHeekPointUpdateMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptHeekPointUpdateMsg, pyHeekPointUpdateMsg)
// Module and method definitions
void pyHeekPointUpdateMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptHeekPointUpdateMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,145 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyMarkerGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base Marker game client class
//
pyMarkerGame::pyMarkerGame(): pyGameCli() {}
pyMarkerGame::pyMarkerGame(pfGameCli* client): pyGameCli(client)
{
if (client && (client->GetGameTypeId() != kGameTypeId_Marker))
gameClient = nil; // wrong type, just clear it out
}
bool pyMarkerGame::IsMarkerGame(std::wstring guid)
{
Uuid gameUuid(guid.c_str());
return gameUuid == kGameTypeId_Marker;
}
void pyMarkerGame::CreateMarkerGame(pyKey& callbackKey, unsigned gameType, std::wstring gameName, unsigned long timeLimit, std::wstring templateId)
{
Marker_CreateParam init;
init.gameType = gameType;
StrCopy(init.gameName, gameName.c_str(), arrsize(init.gameName));
init.timeLimit = timeLimit;
StrCopy(init.templateID, templateId.c_str(), arrsize(init.templateID));
pfGameMgr::GetInstance()->CreateGame(callbackKey.getKey(), kGameTypeId_Marker, 0, sizeof(init), &init);
}
void pyMarkerGame::StartGame()
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->StartGame();
}
}
void pyMarkerGame::PauseGame()
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->PauseGame();
}
}
void pyMarkerGame::ResetGame()
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->ResetGame();
}
}
void pyMarkerGame::ChangeGameName(std::wstring newName)
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->ChangeGameName(newName.c_str());
}
}
void pyMarkerGame::ChangeTimeLimit(unsigned long timeLimit)
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->ChangeTimeLimit(timeLimit);
}
}
void pyMarkerGame::DeleteGame()
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->DeleteGame();
}
}
void pyMarkerGame::AddMarker(double x, double y, double z, std::wstring name, std::wstring age)
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->AddMarker(x, y, z, name.c_str(), age.c_str());
}
}
void pyMarkerGame::DeleteMarker(unsigned long markerId)
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->DeleteMarker(markerId);
}
}
void pyMarkerGame::ChangeMarkerName(unsigned long markerId, std::wstring newName)
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->ChangeMarkerName(markerId, newName.c_str());
}
}
void pyMarkerGame::CaptureMarker(unsigned long markerId)
{
if (gameClient)
{
pfGmMarker* marker = pfGmMarker::ConvertNoRef(gameClient);
marker->CaptureMarker(markerId);
}
}

View File

@ -0,0 +1,75 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyMarkerGame_h
#define pyMarkerGame_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyMarkerGame
//
// PURPOSE: Class wrapper for the Marker game client
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCli.h"
#include "../../pyKey.h"
class pyMarkerGame : public pyGameCli
{
protected:
pyMarkerGame();
pyMarkerGame(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGame);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a ptMarkerGame object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGame); // converts a PyObject to a pyMarkerGame (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static bool IsMarkerGame(std::wstring guid);
static void CreateMarkerGame(pyKey& callbackKey, unsigned gameType, std::wstring gameName, unsigned long timeLimit, std::wstring templateId);
void StartGame();
void PauseGame();
void ResetGame();
void ChangeGameName(std::wstring newName);
void ChangeTimeLimit(unsigned long timeLimit);
void DeleteGame();
void AddMarker(double x, double y, double z, std::wstring name, std::wstring age);
void DeleteMarker(unsigned long markerId);
void ChangeMarkerName(unsigned long markerId, std::wstring newName);
void CaptureMarker(unsigned long markerId);
};
#endif // pyMarkerGame_h

View File

@ -0,0 +1,381 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyMarkerGame.h"
#include <python.h>
#include "../../pyEnum.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base TTT game client class
//
PYTHON_CLASS_DEFINITION(ptMarkerGame, pyMarkerGame);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGame, pyMarkerGame)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGame)
PYTHON_NO_INIT_DEFINITION(ptMarkerGame)
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsMarkerGame, args, "Params: typeID\nReturns true if the specifed typeID (guid as a string) is a Marker game")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtIsMarkerGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
bool retVal = pyMarkerGame::IsMarkerGame(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = pyMarkerGame::IsMarkerGame(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtIsMarkerGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION_WKEY(PtCreateMarkerGame, args, keywords, "Params: callbackKey, gameType, gameName = \"\", timeLimit = 0, templateId = \"\"\n"
"Creates a new Marker game with the specified callback key, game type (from PtMarkerGameTypes), time limit (in ms), and template id (guid string)")
{
char *kwlist[] = {"callbackKey", "gameType", "gameName", "timeLimit", "templateId", NULL};
PyObject* callbackObj = NULL;
unsigned int gameType = 0;
PyObject* gameNameObj = NULL;
unsigned long timeLimit = 0;
PyObject* templateIdObj = NULL;
if (!PyArg_ParseTupleAndKeywords(args, keywords, "OI|OkO", kwlist, &callbackObj, &gameType, &gameNameObj, &timeLimit, &templateIdObj))
{
PyErr_SetString(PyExc_TypeError, "PtCreateMarkerGame expects a ptKey, unsigned int, and optionally a string, an unsigned long, and another string");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtCreateMarkerGame expects a ptKey, unsigned int, and optionally a string, an unsigned long, and another string");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
std::wstring name = L"";
std::wstring templateId = L"";
if (gameNameObj != NULL)
{
if (PyUnicode_Check(gameNameObj))
{
int strLen = PyUnicode_GetSize(gameNameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)gameNameObj, text, strLen);
text[strLen] = L'\0';
name = text;
delete [] text;
}
else if (PyString_Check(gameNameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(gameNameObj);
wchar_t* wText = hsStringToWString(text);
name = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtCreateMarkerGame expects a ptKey, unsigned int, and optionally a string, an unsigned long, and another string");
PYTHON_RETURN_ERROR;
}
}
if (templateIdObj != NULL)
{
if (PyUnicode_Check(templateIdObj))
{
int strLen = PyUnicode_GetSize(templateIdObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)templateIdObj, text, strLen);
text[strLen] = L'\0';
templateId = text;
delete [] text;
}
else if (PyString_Check(templateIdObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(templateIdObj);
wchar_t* wText = hsStringToWString(text);
templateId = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtCreateMarkerGame expects a ptKey, unsigned int, and optionally a string, an unsigned long, and another string");
PYTHON_RETURN_ERROR;
}
}
pyMarkerGame::CreateMarkerGame(*key, gameType, name, timeLimit, templateId);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptMarkerGame, startGame, StartGame)
PYTHON_BASIC_METHOD_DEFINITION(ptMarkerGame, pauseGame, PauseGame)
PYTHON_BASIC_METHOD_DEFINITION(ptMarkerGame, resetGame, ResetGame)
PYTHON_METHOD_DEFINITION(ptMarkerGame, changeGameName, args)
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "changeGameName expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
self->fThis->ChangeGameName(text);
delete [] text;
PYTHON_RETURN_NONE;
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
self->fThis->ChangeGameName(wText);
delete [] wText;
PYTHON_RETURN_NONE;
}
else
{
PyErr_SetString(PyExc_TypeError, "changeGameName expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_METHOD_DEFINITION(ptMarkerGame, changeTimeLimit, args)
{
unsigned long timeLimit;
if (!PyArg_ParseTuple(args, "k", &timeLimit))
{
PyErr_SetString(PyExc_TypeError, "changeTimeLimit expects an unsigned long");
PYTHON_RETURN_ERROR;
}
self->fThis->ChangeTimeLimit(timeLimit);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptMarkerGame, deleteGame, DeleteGame)
PYTHON_METHOD_DEFINITION_WKEY(ptMarkerGame, addMarker, args, keywords)
{
char *kwlist[] = {"x", "y", "z", "name", "age", NULL};
double x, y, z;
PyObject* nameObj = NULL;
PyObject* ageObj = NULL;
if (!PyArg_ParseTupleAndKeywords(args, keywords, "ddd|OO", kwlist, &x, &y, &z, &nameObj, &ageObj))
{
PyErr_SetString(PyExc_TypeError, "addMarker expects three doubles, and optionally two strings");
PYTHON_RETURN_ERROR;
}
std::wstring name = L"";
std::wstring age = L"";
if (nameObj != NULL)
{
if (PyUnicode_Check(nameObj))
{
int strLen = PyUnicode_GetSize(nameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)nameObj, text, strLen);
text[strLen] = L'\0';
name = text;
delete [] text;
}
else if (PyString_Check(nameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(nameObj);
wchar_t* wText = hsStringToWString(text);
name = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "addMarker expects three doubles, and optionally two strings");
PYTHON_RETURN_ERROR;
}
}
if (ageObj != NULL)
{
if (PyUnicode_Check(ageObj))
{
int strLen = PyUnicode_GetSize(ageObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)ageObj, text, strLen);
text[strLen] = L'\0';
age = text;
delete [] text;
}
else if (PyString_Check(ageObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(ageObj);
wchar_t* wText = hsStringToWString(text);
age = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "addMarker expects three doubles, and optionally two strings");
PYTHON_RETURN_ERROR;
}
}
self->fThis->AddMarker(x, y, z, name, age);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptMarkerGame, deleteMarker, args)
{
unsigned long markerId;
if (!PyArg_ParseTuple(args, "k", &markerId))
{
PyErr_SetString(PyExc_TypeError, "deleteMarker expects an unsigned long");
PYTHON_RETURN_ERROR;
}
self->fThis->DeleteMarker(markerId);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptMarkerGame, changeMarkerName, args)
{
unsigned long markerId;
PyObject* nameObj = NULL;
if (!PyArg_ParseTuple(args, "kO", &markerId, &nameObj))
{
PyErr_SetString(PyExc_TypeError, "changeMarkerName expects an unsigned long and a string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(nameObj))
{
int strLen = PyUnicode_GetSize(nameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)nameObj, text, strLen);
text[strLen] = L'\0';
self->fThis->ChangeMarkerName(markerId, text);
delete [] text;
PYTHON_RETURN_NONE;
}
else if (PyString_Check(nameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(nameObj);
wchar_t* wText = hsStringToWString(text);
self->fThis->ChangeMarkerName(markerId, wText);
delete [] wText;
PYTHON_RETURN_NONE;
}
else
{
PyErr_SetString(PyExc_TypeError, "changeMarkerName expects an unsigned long and a string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_METHOD_DEFINITION(ptMarkerGame, captureMarker, args)
{
unsigned long markerId;
if (!PyArg_ParseTuple(args, "k", &markerId))
{
PyErr_SetString(PyExc_TypeError, "captureMarker expects an unsigned long");
PYTHON_RETURN_ERROR;
}
self->fThis->CaptureMarker(markerId);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptMarkerGame)
PYTHON_BASIC_METHOD(ptMarkerGame, startGame, "Starts the game. Won't work on MP games if you're not the owner/creator"),
PYTHON_BASIC_METHOD(ptMarkerGame, pauseGame, "Pauses the game. Won't work on MP games if you're not the owner/creator"),
PYTHON_BASIC_METHOD(ptMarkerGame, resetGame, "Resets the game. Won't work on MP games if you're not the owner/creator"),
PYTHON_METHOD(ptMarkerGame, changeGameName, "Params: newName\nChanges the name of the game. Won't work if you're not the game owner/creator"),
PYTHON_METHOD(ptMarkerGame, changeTimeLimit, "Params: newTimeLimit\nChanges the time limit on the game (in ms). Won't work if you're not the game owner/creator, or if it's a quest game"),
PYTHON_BASIC_METHOD(ptMarkerGame, deleteGame, "Tells the server to delete the game. Won't work if you're not the game owner/creator"),
PYTHON_METHOD_WKEY(ptMarkerGame, addMarker, "Params: x, y, z, name = \"\", age = \"\"\nAdds a marker to the game. Age is ignored in a non-quest game. Won't work if you're not the owner/creator"),
PYTHON_METHOD(ptMarkerGame, deleteMarker, "Params: markerId\nDeletes the specified marker from the game. Won't work if you're not the game owner/creator"),
PYTHON_METHOD(ptMarkerGame, changeMarkerName, "Params: markerId, newName\nChanges the name of the specified marker. Won't work if you're not the game owner/creator"),
PYTHON_METHOD(ptMarkerGame, captureMarker, "Params: markerId\nCaptures the specified marker"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGame, pyGameCli, "Game client for the Marker game");
// required functions for PyObject interoperability
PyObject* pyMarkerGame::New(pfGameCli* client)
{
ptMarkerGame *newObj = (ptMarkerGame*)ptMarkerGame_type.tp_new(&ptMarkerGame_type, NULL, NULL);
if (client && (client->GetGameTypeId() == kGameTypeId_Marker))
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGame, pyMarkerGame)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGame, pyMarkerGame)
// Module and method definitions
void pyMarkerGame::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGame);
PYTHON_CLASS_IMPORT_END(m);
}
void pyMarkerGame::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtMarkerGameTypes);
PYTHON_ENUM_ELEMENT(PtMarkerGameTypes, kMarkerGameQuest, kMarkerGameQuest);
PYTHON_ENUM_ELEMENT(PtMarkerGameTypes, kMarkerGameCGZ, kMarkerGameCGZ);
PYTHON_ENUM_ELEMENT(PtMarkerGameTypes, kMarkerGameCapture, kMarkerGameCapture);
PYTHON_ENUM_ELEMENT(PtMarkerGameTypes, kMarkerGameCaptureAndHold, kMarkerGameCaptureAndHold);
PYTHON_ENUM_END(m, PtMarkerGameTypes);
}
void pyMarkerGame::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD(methods, PtIsMarkerGame);
PYTHON_GLOBAL_METHOD_WKEY(methods, PtCreateMarkerGame);
}

View File

@ -0,0 +1,408 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyMarkerMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base Marker msg class
//
pyMarkerMsg::pyMarkerMsg(): pyGameCliMsg() {}
pyMarkerMsg::pyMarkerMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->gameCli->GetGameTypeId() != kGameTypeId_Marker))
message = nil; // wrong type, just clear it out
}
int pyMarkerMsg::GetMarkerMsgType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyMarkerMsg::UpcastToFinalMarkerMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_Marker_TemplateCreated:
return pyMarkerTemplateCreatedMsg::New(message);
case kSrv2Cli_Marker_TeamAssigned:
return pyMarkerTeamAssignedMsg::New(message);
case kSrv2Cli_Marker_GameType:
return pyMarkerGameTypeMsg::New(message);
case kSrv2Cli_Marker_GameStarted:
return pyMarkerGameStartedMsg::New(message);
case kSrv2Cli_Marker_GamePaused:
return pyMarkerGamePausedMsg::New(message);
case kSrv2Cli_Marker_GameReset:
return pyMarkerGameResetMsg::New(message);
case kSrv2Cli_Marker_GameOver:
return pyMarkerGameOverMsg::New(message);
case kSrv2Cli_Marker_GameNameChanged:
return pyMarkerGameNameChangedMsg::New(message);
case kSrv2Cli_Marker_TimeLimitChanged:
return pyMarkerTimeLimitChangedMsg::New(message);
case kSrv2Cli_Marker_GameDeleted:
return pyMarkerGameDeletedMsg::New(message);
case kSrv2Cli_Marker_MarkerAdded:
return pyMarkerMarkerAddedMsg::New(message);
case kSrv2Cli_Marker_MarkerDeleted:
return pyMarkerMarkerDeletedMsg::New(message);
case kSrv2Cli_Marker_MarkerNameChanged:
return pyMarkerMarkerNameChangedMsg::New(message);
case kSrv2Cli_Marker_MarkerCaptured:
return pyMarkerMarkerCapturedMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyMarkerTemplateCreatedMsg::pyMarkerTemplateCreatedMsg(): pyMarkerMsg() {}
pyMarkerTemplateCreatedMsg::pyMarkerTemplateCreatedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_TemplateCreated))
message = nil; // wrong type, just clear it out
}
std::wstring pyMarkerTemplateCreatedMsg::TemplateID() const
{
if (message)
{
const Srv2Cli_Marker_TemplateCreated* gmMsg = (const Srv2Cli_Marker_TemplateCreated*)message->netMsg;
return gmMsg->templateID;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerTeamAssignedMsg::pyMarkerTeamAssignedMsg(): pyMarkerMsg() {}
pyMarkerTeamAssignedMsg::pyMarkerTeamAssignedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_TeamAssigned))
message = nil; // wrong type, just clear it out
}
int pyMarkerTeamAssignedMsg::TeamNumber() const
{
if (message)
{
const Srv2Cli_Marker_TeamAssigned* gmMsg = (const Srv2Cli_Marker_TeamAssigned*)message->netMsg;
return gmMsg->teamNumber;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGameTypeMsg::pyMarkerGameTypeMsg(): pyMarkerMsg() {}
pyMarkerGameTypeMsg::pyMarkerGameTypeMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GameType))
message = nil; // wrong type, just clear it out
}
int pyMarkerGameTypeMsg::GameType() const
{
if (message)
{
const Srv2Cli_Marker_GameType* gmMsg = (const Srv2Cli_Marker_GameType*)message->netMsg;
return gmMsg->gameType;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGameStartedMsg::pyMarkerGameStartedMsg(): pyMarkerMsg() {}
pyMarkerGameStartedMsg::pyMarkerGameStartedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GameStarted))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGamePausedMsg::pyMarkerGamePausedMsg(): pyMarkerMsg() {}
pyMarkerGamePausedMsg::pyMarkerGamePausedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GamePaused))
message = nil; // wrong type, just clear it out
}
unsigned long pyMarkerGamePausedMsg::TimeLeft() const
{
if (message)
{
const Srv2Cli_Marker_GamePaused* gmMsg = (const Srv2Cli_Marker_GamePaused*)message->netMsg;
return gmMsg->timeLeft;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGameResetMsg::pyMarkerGameResetMsg(): pyMarkerMsg() {}
pyMarkerGameResetMsg::pyMarkerGameResetMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GameReset))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGameOverMsg::pyMarkerGameOverMsg(): pyMarkerMsg() {}
pyMarkerGameOverMsg::pyMarkerGameOverMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GameOver))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGameNameChangedMsg::pyMarkerGameNameChangedMsg(): pyMarkerMsg() {}
pyMarkerGameNameChangedMsg::pyMarkerGameNameChangedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GameNameChanged))
message = nil; // wrong type, just clear it out
}
std::wstring pyMarkerGameNameChangedMsg::Name() const
{
if (message)
{
const Srv2Cli_Marker_GameNameChanged* gmMsg = (const Srv2Cli_Marker_GameNameChanged*)message->netMsg;
return gmMsg->newName;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerTimeLimitChangedMsg::pyMarkerTimeLimitChangedMsg(): pyMarkerMsg() {}
pyMarkerTimeLimitChangedMsg::pyMarkerTimeLimitChangedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_TimeLimitChanged))
message = nil; // wrong type, just clear it out
}
unsigned long pyMarkerTimeLimitChangedMsg::TimeLimit() const
{
if (message)
{
const Srv2Cli_Marker_TimeLimitChanged* gmMsg = (const Srv2Cli_Marker_TimeLimitChanged*)message->netMsg;
return gmMsg->newTimeLimit;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerGameDeletedMsg::pyMarkerGameDeletedMsg(): pyMarkerMsg() {}
pyMarkerGameDeletedMsg::pyMarkerGameDeletedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_GameDeleted))
message = nil; // wrong type, just clear it out
}
bool pyMarkerGameDeletedMsg::Failed() const
{
if (message)
{
const Srv2Cli_Marker_GameDeleted* gmMsg = (const Srv2Cli_Marker_GameDeleted*)message->netMsg;
return gmMsg->failed;
}
return true; // assume it failed if we have a problem
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerMarkerAddedMsg::pyMarkerMarkerAddedMsg(): pyMarkerMsg() {}
pyMarkerMarkerAddedMsg::pyMarkerMarkerAddedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_MarkerAdded))
message = nil; // wrong type, just clear it out
}
double pyMarkerMarkerAddedMsg::X() const
{
if (message)
{
const Srv2Cli_Marker_MarkerAdded* gmMsg = (const Srv2Cli_Marker_MarkerAdded*)message->netMsg;
return gmMsg->x;
}
return 0;
}
double pyMarkerMarkerAddedMsg::Y() const
{
if (message)
{
const Srv2Cli_Marker_MarkerAdded* gmMsg = (const Srv2Cli_Marker_MarkerAdded*)message->netMsg;
return gmMsg->y;
}
return 0;
}
double pyMarkerMarkerAddedMsg::Z() const
{
if (message)
{
const Srv2Cli_Marker_MarkerAdded* gmMsg = (const Srv2Cli_Marker_MarkerAdded*)message->netMsg;
return gmMsg->z;
}
return 0;
}
unsigned long pyMarkerMarkerAddedMsg::MarkerId() const
{
if (message)
{
const Srv2Cli_Marker_MarkerAdded* gmMsg = (const Srv2Cli_Marker_MarkerAdded*)message->netMsg;
return gmMsg->markerID;
}
return 0;
}
std::wstring pyMarkerMarkerAddedMsg::Name() const
{
if (message)
{
const Srv2Cli_Marker_MarkerAdded* gmMsg = (const Srv2Cli_Marker_MarkerAdded*)message->netMsg;
return gmMsg->name;
}
return L"";
}
std::wstring pyMarkerMarkerAddedMsg::Age() const
{
if (message)
{
const Srv2Cli_Marker_MarkerAdded* gmMsg = (const Srv2Cli_Marker_MarkerAdded*)message->netMsg;
return gmMsg->age;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerMarkerDeletedMsg::pyMarkerMarkerDeletedMsg(): pyMarkerMsg() {}
pyMarkerMarkerDeletedMsg::pyMarkerMarkerDeletedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_MarkerDeleted))
message = nil; // wrong type, just clear it out
}
unsigned long pyMarkerMarkerDeletedMsg::MarkerId() const
{
if (message)
{
const Srv2Cli_Marker_MarkerDeleted* gmMsg = (const Srv2Cli_Marker_MarkerDeleted*)message->netMsg;
return gmMsg->markerID;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerMarkerNameChangedMsg::pyMarkerMarkerNameChangedMsg(): pyMarkerMsg() {}
pyMarkerMarkerNameChangedMsg::pyMarkerMarkerNameChangedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_MarkerNameChanged))
message = nil; // wrong type, just clear it out
}
unsigned long pyMarkerMarkerNameChangedMsg::MarkerId() const
{
if (message)
{
const Srv2Cli_Marker_MarkerNameChanged* gmMsg = (const Srv2Cli_Marker_MarkerNameChanged*)message->netMsg;
return gmMsg->markerID;
}
return 0;
}
std::wstring pyMarkerMarkerNameChangedMsg::Name() const
{
if (message)
{
const Srv2Cli_Marker_MarkerNameChanged* gmMsg = (const Srv2Cli_Marker_MarkerNameChanged*)message->netMsg;
return gmMsg->newName;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyMarkerMarkerCapturedMsg::pyMarkerMarkerCapturedMsg(): pyMarkerMsg() {}
pyMarkerMarkerCapturedMsg::pyMarkerMarkerCapturedMsg(pfGameCliMsg* msg): pyMarkerMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Marker_MarkerCaptured))
message = nil; // wrong type, just clear it out
}
unsigned long pyMarkerMarkerCapturedMsg::MarkerId() const
{
if (message)
{
const Srv2Cli_Marker_MarkerCaptured* gmMsg = (const Srv2Cli_Marker_MarkerCaptured*)message->netMsg;
return gmMsg->markerID;
}
return 0;
}
unsigned int pyMarkerMarkerCapturedMsg::Team() const
{
if (message)
{
const Srv2Cli_Marker_MarkerCaptured* gmMsg = (const Srv2Cli_Marker_MarkerCaptured*)message->netMsg;
return gmMsg->team;
}
return 0;
}

View File

@ -0,0 +1,331 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyMarkerMsg_h
#define pyMarkerMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyMarkerMsg
//
// PURPOSE: Class wrapper for Marker game messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCliMsg.h"
class pyMarkerMsg : public pyGameCliMsg
{
protected:
pyMarkerMsg();
pyMarkerMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptMarkerMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerMsg); // converts a PyObject to a pyMarkerMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetMarkerMsgType() const;
PyObject* UpcastToFinalMarkerMsg() const; // returns this message as the marker message it really is
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerTemplateCreatedMsg : public pyMarkerMsg
{
protected:
pyMarkerTemplateCreatedMsg();
pyMarkerTemplateCreatedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerTemplateCreatedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerTemplateCreatedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerTemplateCreatedMsg); // converts a PyObject to a pyMarkerTemplateCreatedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
std::wstring TemplateID() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerTeamAssignedMsg : public pyMarkerMsg
{
protected:
pyMarkerTeamAssignedMsg();
pyMarkerTeamAssignedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerTeamAssignedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerTeamAssignedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerTeamAssignedMsg); // converts a PyObject to a pyMarkerTeamAssignedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int TeamNumber() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGameTypeMsg : public pyMarkerMsg
{
protected:
pyMarkerGameTypeMsg();
pyMarkerGameTypeMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGameTypeMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGameTypeMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGameTypeMsg); // converts a PyObject to a pyMarkerGameTypeMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int GameType() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGameStartedMsg : public pyMarkerMsg
{
protected:
pyMarkerGameStartedMsg();
pyMarkerGameStartedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGameStartedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGameStartedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGameStartedMsg); // converts a PyObject to a pyMarkerGameStartedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGamePausedMsg : public pyMarkerMsg
{
protected:
pyMarkerGamePausedMsg();
pyMarkerGamePausedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGamePausedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGamePausedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGamePausedMsg); // converts a PyObject to a pyMarkerGamePausedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long TimeLeft() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGameResetMsg : public pyMarkerMsg
{
protected:
pyMarkerGameResetMsg();
pyMarkerGameResetMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGameResetMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGameResetMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGameResetMsg); // converts a PyObject to a pyMarkerGameResetMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGameOverMsg : public pyMarkerMsg
{
protected:
pyMarkerGameOverMsg();
pyMarkerGameOverMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGameOverMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGameOverMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGameOverMsg); // converts a PyObject to a pyMarkerGameOverMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGameNameChangedMsg : public pyMarkerMsg
{
protected:
pyMarkerGameNameChangedMsg();
pyMarkerGameNameChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGameNameChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGameNameChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGameNameChangedMsg); // converts a PyObject to a pyMarkerGameNameChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
std::wstring Name() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerTimeLimitChangedMsg : public pyMarkerMsg
{
protected:
pyMarkerTimeLimitChangedMsg();
pyMarkerTimeLimitChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerTimeLimitChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerTimeLimitChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerTimeLimitChangedMsg); // converts a PyObject to a pyMarkerTimeLimitChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long TimeLimit() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerGameDeletedMsg : public pyMarkerMsg
{
protected:
pyMarkerGameDeletedMsg();
pyMarkerGameDeletedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerGameDeletedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerGameDeletedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerGameDeletedMsg); // converts a PyObject to a pyMarkerGameDeletedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool Failed() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerMarkerAddedMsg : public pyMarkerMsg
{
protected:
pyMarkerMarkerAddedMsg();
pyMarkerMarkerAddedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerMarkerAddedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerMarkerAddedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerMarkerAddedMsg); // converts a PyObject to a pyMarkerMarkerAddedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
double X() const;
double Y() const;
double Z() const;
unsigned long MarkerId() const;
std::wstring Name() const;
std::wstring Age() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerMarkerDeletedMsg : public pyMarkerMsg
{
protected:
pyMarkerMarkerDeletedMsg();
pyMarkerMarkerDeletedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerMarkerDeletedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerMarkerDeletedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerMarkerDeletedMsg); // converts a PyObject to a pyMarkerMarkerDeletedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long MarkerId() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerMarkerNameChangedMsg : public pyMarkerMsg
{
protected:
pyMarkerMarkerNameChangedMsg();
pyMarkerMarkerNameChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerMarkerNameChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerMarkerNameChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerMarkerNameChangedMsg); // converts a PyObject to a pyMarkerMarkerNameChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long MarkerId() const;
std::wstring Name() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyMarkerMarkerCapturedMsg : public pyMarkerMsg
{
protected:
pyMarkerMarkerCapturedMsg();
pyMarkerMarkerCapturedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptMarkerMarkerCapturedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyMarkerMarkerCapturedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyMarkerMarkerCapturedMsg); // converts a PyObject to a pyMarkerMarkerCapturedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long MarkerId() const;
unsigned int Team() const;
};
#endif // pyMarkerMsg_h

View File

@ -0,0 +1,706 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyMarkerMsg.h"
#include "../../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base Marker msg class
//
PYTHON_CLASS_DEFINITION(ptMarkerMsg, pyMarkerMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerMsg, pyMarkerMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMsg, getMarkerMsgType)
{
return PyInt_FromLong(self->fThis->GetMarkerMsgType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMsg, upcastToFinalMarkerMsg)
{
return self->fThis->UpcastToFinalMarkerMsg();
}
PYTHON_START_METHODS_TABLE(ptMarkerMsg)
PYTHON_METHOD_NOARGS(ptMarkerMsg, getMarkerMsgType, "Returns the type of the Marker message (see PtMarkerMsgTypes)"),
PYTHON_METHOD_NOARGS(ptMarkerMsg, upcastToFinalMarkerMsg, "Returns this message as the Marker message it is"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerMsg, pyGameCliMsg, "Base class for Marker game messages");
PYTHON_EXPOSE_TYPE_DEFINITION(ptMarkerMsg, pyMarkerMsg);
// required functions for PyObject interoperability
PyObject* pyMarkerMsg::New(pfGameCliMsg* msg)
{
ptMarkerMsg *newObj = (ptMarkerMsg*)ptMarkerMsg_type.tp_new(&ptMarkerMsg_type, NULL, NULL);
if (msg && (msg->gameCli->GetGameTypeId() == kGameTypeId_Marker))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerMsg, pyMarkerMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerMsg, pyMarkerMsg)
// Module and method definitions
void pyMarkerMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyMarkerMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtMarkerMsgTypes);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerTemplateCreated, kSrv2Cli_Marker_TemplateCreated);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerTeamAssigned, kSrv2Cli_Marker_TeamAssigned);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGameType, kSrv2Cli_Marker_GameType);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGameStarted, kSrv2Cli_Marker_GameStarted);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGamePaused, kSrv2Cli_Marker_GamePaused);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGameReset, kSrv2Cli_Marker_GameReset);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGameOver, kSrv2Cli_Marker_GameOver);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGameNameChanged, kSrv2Cli_Marker_GameNameChanged);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerTimeLimitChanged, kSrv2Cli_Marker_TimeLimitChanged);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerGameDeleted, kSrv2Cli_Marker_GameDeleted);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerMarkerAdded, kSrv2Cli_Marker_MarkerAdded);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerMarkerDeleted, kSrv2Cli_Marker_MarkerDeleted);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerMarkerNameChanged, kSrv2Cli_Marker_MarkerNameChanged);
PYTHON_ENUM_ELEMENT(PtMarkerMsgTypes, kMarkerMarkerCaptured, kSrv2Cli_Marker_MarkerCaptured);
PYTHON_ENUM_END(m, PtMarkerMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptMarkerTemplateCreatedMsg, pyMarkerTemplateCreatedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerTemplateCreatedMsg, pyMarkerTemplateCreatedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerTemplateCreatedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerTemplateCreatedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerTemplateCreatedMsg, templateID)
{
std::wstring retVal = self->fThis->TemplateID();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_START_METHODS_TABLE(ptMarkerTemplateCreatedMsg)
PYTHON_METHOD_NOARGS(ptMarkerTemplateCreatedMsg, templateID, "Returns the ID number of the template that was created"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerTemplateCreatedMsg, pyMarkerMsg, "Marker message received when a quest game template is created");
// required functions for PyObject interoperability
PyObject* pyMarkerTemplateCreatedMsg::New(pfGameCliMsg* msg)
{
ptMarkerTemplateCreatedMsg *newObj = (ptMarkerTemplateCreatedMsg*)ptMarkerTemplateCreatedMsg_type.tp_new(&ptMarkerTemplateCreatedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_TemplateCreated))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerTemplateCreatedMsg, pyMarkerTemplateCreatedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerTemplateCreatedMsg, pyMarkerTemplateCreatedMsg)
// Module and method definitions
void pyMarkerTemplateCreatedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerTemplateCreatedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerTeamAssignedMsg, pyMarkerTeamAssignedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerTeamAssignedMsg, pyMarkerTeamAssignedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerTeamAssignedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerTeamAssignedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerTeamAssignedMsg, teamNumber)
{
return PyInt_FromLong(self->fThis->TeamNumber());
}
PYTHON_START_METHODS_TABLE(ptMarkerTeamAssignedMsg)
PYTHON_METHOD_NOARGS(ptMarkerTeamAssignedMsg, teamNumber, "Returns the number of the team you were assigned to"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerTeamAssignedMsg, pyMarkerMsg, "Marker message received when you are assigned a team number");
// required functions for PyObject interoperability
PyObject* pyMarkerTeamAssignedMsg::New(pfGameCliMsg* msg)
{
ptMarkerTeamAssignedMsg *newObj = (ptMarkerTeamAssignedMsg*)ptMarkerTeamAssignedMsg_type.tp_new(&ptMarkerTeamAssignedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_TeamAssigned))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerTeamAssignedMsg, pyMarkerTeamAssignedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerTeamAssignedMsg, pyMarkerTeamAssignedMsg)
// Module and method definitions
void pyMarkerTeamAssignedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerTeamAssignedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGameTypeMsg, pyMarkerGameTypeMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGameTypeMsg, pyMarkerGameTypeMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGameTypeMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGameTypeMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerGameTypeMsg, gameType)
{
return PyInt_FromLong(self->fThis->GameType());
}
PYTHON_START_METHODS_TABLE(ptMarkerGameTypeMsg)
PYTHON_METHOD_NOARGS(ptMarkerGameTypeMsg, gameType, "Returns the type of the game you just joined"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGameTypeMsg, pyMarkerMsg, "Marker message received when you are assigned a team number");
// required functions for PyObject interoperability
PyObject* pyMarkerGameTypeMsg::New(pfGameCliMsg* msg)
{
ptMarkerGameTypeMsg *newObj = (ptMarkerGameTypeMsg*)ptMarkerGameTypeMsg_type.tp_new(&ptMarkerGameTypeMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GameType))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGameTypeMsg, pyMarkerGameTypeMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGameTypeMsg, pyMarkerGameTypeMsg)
// Module and method definitions
void pyMarkerGameTypeMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGameTypeMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGameStartedMsg, pyMarkerGameStartedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGameStartedMsg, pyMarkerGameStartedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGameStartedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGameStartedMsg)
PYTHON_START_METHODS_TABLE(ptMarkerGameStartedMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGameStartedMsg, pyMarkerMsg, "Marker message received when the game is started by the owner");
// required functions for PyObject interoperability
PyObject* pyMarkerGameStartedMsg::New(pfGameCliMsg* msg)
{
ptMarkerGameStartedMsg *newObj = (ptMarkerGameStartedMsg*)ptMarkerGameStartedMsg_type.tp_new(&ptMarkerGameStartedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GameStarted))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGameStartedMsg, pyMarkerGameStartedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGameStartedMsg, pyMarkerGameStartedMsg)
// Module and method definitions
void pyMarkerGameStartedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGameStartedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGamePausedMsg, pyMarkerGamePausedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGamePausedMsg, pyMarkerGamePausedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGamePausedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGamePausedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerGamePausedMsg, timeLeft)
{
return PyLong_FromUnsignedLong(self->fThis->TimeLeft());
}
PYTHON_START_METHODS_TABLE(ptMarkerGamePausedMsg)
PYTHON_METHOD_NOARGS(ptMarkerGamePausedMsg, timeLeft, "Returns the amount of time left on the server clock"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGamePausedMsg, pyMarkerMsg, "Marker message received when the game is paused by the owner");
// required functions for PyObject interoperability
PyObject* pyMarkerGamePausedMsg::New(pfGameCliMsg* msg)
{
ptMarkerGamePausedMsg *newObj = (ptMarkerGamePausedMsg*)ptMarkerGamePausedMsg_type.tp_new(&ptMarkerGamePausedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GamePaused))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGamePausedMsg, pyMarkerGamePausedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGamePausedMsg, pyMarkerGamePausedMsg)
// Module and method definitions
void pyMarkerGamePausedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGamePausedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGameResetMsg, pyMarkerGameResetMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGameResetMsg, pyMarkerGameResetMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGameResetMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGameResetMsg)
PYTHON_START_METHODS_TABLE(ptMarkerGameResetMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGameResetMsg, pyMarkerMsg, "Marker message received when the game is reset by the owner");
// required functions for PyObject interoperability
PyObject* pyMarkerGameResetMsg::New(pfGameCliMsg* msg)
{
ptMarkerGameResetMsg *newObj = (ptMarkerGameResetMsg*)ptMarkerGameResetMsg_type.tp_new(&ptMarkerGameResetMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GameReset))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGameResetMsg, pyMarkerGameResetMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGameResetMsg, pyMarkerGameResetMsg)
// Module and method definitions
void pyMarkerGameResetMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGameResetMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGameOverMsg, pyMarkerGameOverMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGameOverMsg, pyMarkerGameOverMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGameOverMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGameOverMsg)
PYTHON_START_METHODS_TABLE(ptMarkerGameOverMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGameOverMsg, pyMarkerMsg, "Marker message received when the server determines the game is over (usually via timeout)");
// required functions for PyObject interoperability
PyObject* pyMarkerGameOverMsg::New(pfGameCliMsg* msg)
{
ptMarkerGameOverMsg *newObj = (ptMarkerGameOverMsg*)ptMarkerGameOverMsg_type.tp_new(&ptMarkerGameOverMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GameOver))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGameOverMsg, pyMarkerGameOverMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGameOverMsg, pyMarkerGameOverMsg)
// Module and method definitions
void pyMarkerGameOverMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGameOverMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGameNameChangedMsg, pyMarkerGameNameChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGameNameChangedMsg, pyMarkerGameNameChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGameNameChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGameNameChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerGameNameChangedMsg, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_START_METHODS_TABLE(ptMarkerGameNameChangedMsg)
PYTHON_METHOD_NOARGS(ptMarkerGameNameChangedMsg, name, "Returns the new game name"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGameNameChangedMsg, pyMarkerMsg, "Marker message received when the game name is changed");
// required functions for PyObject interoperability
PyObject* pyMarkerGameNameChangedMsg::New(pfGameCliMsg* msg)
{
ptMarkerGameNameChangedMsg *newObj = (ptMarkerGameNameChangedMsg*)ptMarkerGameNameChangedMsg_type.tp_new(&ptMarkerGameNameChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GameNameChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGameNameChangedMsg, pyMarkerGameNameChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGameNameChangedMsg, pyMarkerGameNameChangedMsg)
// Module and method definitions
void pyMarkerGameNameChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGameNameChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerTimeLimitChangedMsg, pyMarkerTimeLimitChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerTimeLimitChangedMsg, pyMarkerTimeLimitChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerTimeLimitChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerTimeLimitChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerTimeLimitChangedMsg, timeLimit)
{
return PyLong_FromUnsignedLong(self->fThis->TimeLimit());
}
PYTHON_START_METHODS_TABLE(ptMarkerTimeLimitChangedMsg)
PYTHON_METHOD_NOARGS(ptMarkerTimeLimitChangedMsg, timeLimit, "Returns the new time limit (in ms)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerTimeLimitChangedMsg, pyMarkerMsg, "Marker message received when the game name is changed");
// required functions for PyObject interoperability
PyObject* pyMarkerTimeLimitChangedMsg::New(pfGameCliMsg* msg)
{
ptMarkerTimeLimitChangedMsg *newObj = (ptMarkerTimeLimitChangedMsg*)ptMarkerTimeLimitChangedMsg_type.tp_new(&ptMarkerTimeLimitChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_TimeLimitChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerTimeLimitChangedMsg, pyMarkerTimeLimitChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerTimeLimitChangedMsg, pyMarkerTimeLimitChangedMsg)
// Module and method definitions
void pyMarkerTimeLimitChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerTimeLimitChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerGameDeletedMsg, pyMarkerGameDeletedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerGameDeletedMsg, pyMarkerGameDeletedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerGameDeletedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerGameDeletedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerGameDeletedMsg, failed)
{
PYTHON_RETURN_BOOL(self->fThis->Failed());
}
PYTHON_START_METHODS_TABLE(ptMarkerGameDeletedMsg)
PYTHON_METHOD_NOARGS(ptMarkerGameDeletedMsg, failed, "Returns whether the delete succeeded or not"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerGameDeletedMsg, pyMarkerMsg, "Marker message received when the game is deleted");
// required functions for PyObject interoperability
PyObject* pyMarkerGameDeletedMsg::New(pfGameCliMsg* msg)
{
ptMarkerGameDeletedMsg *newObj = (ptMarkerGameDeletedMsg*)ptMarkerGameDeletedMsg_type.tp_new(&ptMarkerGameDeletedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_GameDeleted))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerGameDeletedMsg, pyMarkerGameDeletedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerGameDeletedMsg, pyMarkerGameDeletedMsg)
// Module and method definitions
void pyMarkerGameDeletedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerGameDeletedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerMarkerAddedMsg, pyMarkerMarkerAddedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerMarkerAddedMsg, pyMarkerMarkerAddedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerMarkerAddedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerMarkerAddedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerAddedMsg, x)
{
return PyFloat_FromDouble(self->fThis->X());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerAddedMsg, y)
{
return PyFloat_FromDouble(self->fThis->Y());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerAddedMsg, z)
{
return PyFloat_FromDouble(self->fThis->Z());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerAddedMsg, markerId)
{
return PyLong_FromUnsignedLong(self->fThis->MarkerId());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerAddedMsg, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerAddedMsg, age)
{
std::wstring retVal = self->fThis->Age();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_START_METHODS_TABLE(ptMarkerMarkerAddedMsg)
PYTHON_METHOD_NOARGS(ptMarkerMarkerAddedMsg, x, "Returns x coord of the marker"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerAddedMsg, y, "Returns y coord of the marker"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerAddedMsg, z, "Returns z coord of the marker"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerAddedMsg, markerId, "Returns the id number of the marker"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerAddedMsg, name, "Returns the name of the marker"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerAddedMsg, age, "Returns the age the marker was created in"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerMarkerAddedMsg, pyMarkerMsg, "Marker message received when a marker is added to the game");
// required functions for PyObject interoperability
PyObject* pyMarkerMarkerAddedMsg::New(pfGameCliMsg* msg)
{
ptMarkerMarkerAddedMsg *newObj = (ptMarkerMarkerAddedMsg*)ptMarkerMarkerAddedMsg_type.tp_new(&ptMarkerMarkerAddedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_MarkerAdded))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerMarkerAddedMsg, pyMarkerMarkerAddedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerMarkerAddedMsg, pyMarkerMarkerAddedMsg)
// Module and method definitions
void pyMarkerMarkerAddedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerMarkerAddedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerMarkerDeletedMsg, pyMarkerMarkerDeletedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerMarkerDeletedMsg, pyMarkerMarkerDeletedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerMarkerDeletedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerMarkerDeletedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerDeletedMsg, markerId)
{
return PyLong_FromUnsignedLong(self->fThis->MarkerId());
}
PYTHON_START_METHODS_TABLE(ptMarkerMarkerDeletedMsg)
PYTHON_METHOD_NOARGS(ptMarkerMarkerDeletedMsg, markerId, "Returns id of the marker that was deleted"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerMarkerDeletedMsg, pyMarkerMsg, "Marker message received when a marker is deleted");
// required functions for PyObject interoperability
PyObject* pyMarkerMarkerDeletedMsg::New(pfGameCliMsg* msg)
{
ptMarkerMarkerDeletedMsg *newObj = (ptMarkerMarkerDeletedMsg*)ptMarkerMarkerDeletedMsg_type.tp_new(&ptMarkerMarkerDeletedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_MarkerDeleted))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerMarkerDeletedMsg, pyMarkerMarkerDeletedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerMarkerDeletedMsg, pyMarkerMarkerDeletedMsg)
// Module and method definitions
void pyMarkerMarkerDeletedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerMarkerDeletedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerMarkerNameChangedMsg, pyMarkerMarkerNameChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerMarkerNameChangedMsg, pyMarkerMarkerNameChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerMarkerNameChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerMarkerNameChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerNameChangedMsg, markerId)
{
return PyLong_FromUnsignedLong(self->fThis->MarkerId());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerNameChangedMsg, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_START_METHODS_TABLE(ptMarkerMarkerNameChangedMsg)
PYTHON_METHOD_NOARGS(ptMarkerMarkerNameChangedMsg, markerId, "Returns id of the marker who's name was changed"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerNameChangedMsg, name, "Returns the new name"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerMarkerNameChangedMsg, pyMarkerMsg, "Marker message received when the name of a marker is changed");
// required functions for PyObject interoperability
PyObject* pyMarkerMarkerNameChangedMsg::New(pfGameCliMsg* msg)
{
ptMarkerMarkerNameChangedMsg *newObj = (ptMarkerMarkerNameChangedMsg*)ptMarkerMarkerNameChangedMsg_type.tp_new(&ptMarkerMarkerNameChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_MarkerNameChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerMarkerNameChangedMsg, pyMarkerMarkerNameChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerMarkerNameChangedMsg, pyMarkerMarkerNameChangedMsg)
// Module and method definitions
void pyMarkerMarkerNameChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerMarkerNameChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptMarkerMarkerCapturedMsg, pyMarkerMarkerCapturedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptMarkerMarkerCapturedMsg, pyMarkerMarkerCapturedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptMarkerMarkerCapturedMsg)
PYTHON_NO_INIT_DEFINITION(ptMarkerMarkerCapturedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerCapturedMsg, markerId)
{
return PyLong_FromUnsignedLong(self->fThis->MarkerId());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptMarkerMarkerCapturedMsg, team)
{
return PyInt_FromLong((long)self->fThis->Team());
}
PYTHON_START_METHODS_TABLE(ptMarkerMarkerCapturedMsg)
PYTHON_METHOD_NOARGS(ptMarkerMarkerCapturedMsg, markerId, "Returns id of the marker which was captured"),
PYTHON_METHOD_NOARGS(ptMarkerMarkerCapturedMsg, team, "Returns the team number of the team that captured it (0 for no team, or a quest game)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptMarkerMarkerCapturedMsg, pyMarkerMsg, "Marker message received when a marker is captured");
// required functions for PyObject interoperability
PyObject* pyMarkerMarkerCapturedMsg::New(pfGameCliMsg* msg)
{
ptMarkerMarkerCapturedMsg *newObj = (ptMarkerMarkerCapturedMsg*)ptMarkerMarkerCapturedMsg_type.tp_new(&ptMarkerMarkerNameChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Marker_MarkerCaptured))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptMarkerMarkerCapturedMsg, pyMarkerMarkerCapturedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptMarkerMarkerCapturedMsg, pyMarkerMarkerCapturedMsg)
// Module and method definitions
void pyMarkerMarkerCapturedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptMarkerMarkerCapturedMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,77 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyTTTGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base TTT game client class
//
pyTTTGame::pyTTTGame(): pyGameCli() {}
pyTTTGame::pyTTTGame(pfGameCli* client): pyGameCli(client)
{
if (client && (client->GetGameTypeId() != kGameTypeId_TicTacToe))
gameClient = nil; // wrong type, just clear it out
}
bool pyTTTGame::IsTTTGame(std::wstring guid)
{
Uuid gameUuid(guid.c_str());
return gameUuid == kGameTypeId_TicTacToe;
}
void pyTTTGame::CreateTTTGame(pyKey& callbackKey, unsigned numPlayers)
{
TTT_CreateParam init;
init.playerCount = numPlayers;
pfGameMgr::GetInstance()->CreateGame(callbackKey.getKey(), kGameTypeId_TicTacToe, 0, sizeof(init), &init);
}
void pyTTTGame::JoinCommonTTTGame(pyKey& callbackKey, unsigned gameID, unsigned numPlayers)
{
TTT_CreateParam init;
init.playerCount = numPlayers;
pfGameMgr::GetInstance()->JoinCommonGame(callbackKey.getKey(), kGameTypeId_TicTacToe, gameID, sizeof(init), &init);
}
void pyTTTGame::MakeMove(unsigned row, unsigned col)
{
if (gameClient)
{
pfGmTicTacToe* ttt = pfGmTicTacToe::ConvertNoRef(gameClient);
ttt->MakeMove(row, col);
}
}
void pyTTTGame::ShowBoard()
{
if (gameClient)
{
pfGmTicTacToe* ttt = pfGmTicTacToe::ConvertNoRef(gameClient);
ttt->ShowBoard();
}
}

View File

@ -0,0 +1,68 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyTTTGame_h
#define pyTTTGame_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyTTTGame
//
// PURPOSE: Class wrapper for the TTT game client
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCli.h"
#include "../../pyKey.h"
class pyTTTGame : public pyGameCli
{
protected:
pyTTTGame();
pyTTTGame(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptTTTGame);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyTTTGame object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyTTTGame); // converts a PyObject to a pyTTTGame (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static bool IsTTTGame(std::wstring guid);
static void CreateTTTGame(pyKey& callbackKey, unsigned numPlayers);
static void JoinCommonTTTGame(pyKey& callbackKey, unsigned gameID, unsigned numPlayers);
void MakeMove(unsigned row, unsigned col);
void ShowBoard();
};
#endif // pyTTTGame_h

View File

@ -0,0 +1,172 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyTTTGame.h"
#include <python.h>
#include "../../pyEnum.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base TTT game client class
//
PYTHON_CLASS_DEFINITION(ptTTTGame, pyTTTGame);
PYTHON_DEFAULT_NEW_DEFINITION(ptTTTGame, pyTTTGame)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptTTTGame)
PYTHON_NO_INIT_DEFINITION(ptTTTGame)
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsTTTGame, args, "Params: typeID\nReturns true if the specifed typeID (guid as a string) is a TicTacToe game")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtIsTTTGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
bool retVal = pyTTTGame::IsTTTGame(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = pyTTTGame::IsTTTGame(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtIsTTTGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtCreateTTTGame, args, "Params: callbackKey, numPlayers\nCreates a new TicTacToe game with the specified callback key and number of players (1 or 2)")
{
PyObject* callbackObj = NULL;
int numPlayers = 0;
if (!PyArg_ParseTuple(args, "Oi", &callbackObj, &numPlayers))
{
PyErr_SetString(PyExc_TypeError, "PtCreateTTTGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtCreateTTTGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyTTTGame::CreateTTTGame(*key, numPlayers);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtJoinCommonTTTGame, args, "Params: callbackKey, gameID, numPlayers\nJoins a common TicTacToe game with the specified ID. If one doesn't exist, it creates it with the specified number of players")
{
PyObject* callbackObj = NULL;
int gameID = 0, numPlayers = 0;
if (!PyArg_ParseTuple(args, "Oii", &callbackObj, &gameID, &numPlayers))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonTTTGame expects a ptKey and two integers");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonTTTGame expects a ptKey and two integers");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyTTTGame::JoinCommonTTTGame(*key, gameID, numPlayers);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptTTTGame, makeMove, args)
{
int row = 0, col = 0;
if (!PyArg_ParseTuple(args, "ii", &row, &col))
{
PyErr_SetString(PyExc_TypeError, "makeMove expects two integers");
PYTHON_RETURN_ERROR;
}
self->fThis->MakeMove(row, col);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptTTTGame, showBoard, ShowBoard)
PYTHON_START_METHODS_TABLE(ptTTTGame)
PYTHON_METHOD(ptTTTGame, makeMove, "Params: row, col\nMakes a move in the specified spot"),
PYTHON_BASIC_METHOD(ptTTTGame, showBoard, "Prints the current board layout to the console"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptTTTGame, pyGameCli, "Game client for the TicTacToe game");
// required functions for PyObject interoperability
PyObject* pyTTTGame::New(pfGameCli* client)
{
ptTTTGame *newObj = (ptTTTGame*)ptTTTGame_type.tp_new(&ptTTTGame_type, NULL, NULL);
if (client && (client->GetGameTypeId() == kGameTypeId_TicTacToe))
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptTTTGame, pyTTTGame)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptTTTGame, pyTTTGame)
// Module and method definitions
void pyTTTGame::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptTTTGame);
PYTHON_CLASS_IMPORT_END(m);
}
void pyTTTGame::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtTTTGameResult);
PYTHON_ENUM_ELEMENT(PtTTTGameResult, kTTTGameResultWinner, kTTTGameResultWinner);
PYTHON_ENUM_ELEMENT(PtTTTGameResult, kTTTGameResultTied, kTTTGameResultTied);
PYTHON_ENUM_ELEMENT(PtTTTGameResult, kTTTGameResultGave, kTTTGameResultGave);
PYTHON_ENUM_ELEMENT(PtTTTGameResult, kTTTGameResultError, kTTTGameResultError);
PYTHON_ENUM_END(m, PtTTTGameResult);
}
void pyTTTGame::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD(methods, PtIsTTTGame);
PYTHON_GLOBAL_METHOD(methods, PtCreateTTTGame);
PYTHON_GLOBAL_METHOD(methods, PtJoinCommonTTTGame);
}

View File

@ -0,0 +1,155 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyTTTMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base TTT msg class
//
pyTTTMsg::pyTTTMsg(): pyGameCliMsg() {}
pyTTTMsg::pyTTTMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->gameCli->GetGameTypeId() != kGameTypeId_TicTacToe))
message = nil; // wrong type, just clear it out
}
int pyTTTMsg::GetTTTMsgType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyTTTMsg::UpcastToFinalTTTMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_TTT_GameStarted:
return pyTTTGameStartedMsg::New(message);
case kSrv2Cli_TTT_GameOver:
return pyTTTGameOverMsg::New(message);
case kSrv2Cli_TTT_MoveMade:
return pyTTTMoveMadeMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyTTTGameStartedMsg::pyTTTGameStartedMsg(): pyTTTMsg() {}
pyTTTGameStartedMsg::pyTTTGameStartedMsg(pfGameCliMsg* msg): pyTTTMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_TTT_GameStarted))
message = nil; // wrong type, just clear it out
}
bool pyTTTGameStartedMsg::YourTurn() const
{
if (message)
{
const Srv2Cli_TTT_GameStarted* gmMsg = (const Srv2Cli_TTT_GameStarted*)message->netMsg;
return gmMsg->yourTurn;
}
return false;
}
///////////////////////////////////////////////////////////////////////////////
pyTTTGameOverMsg::pyTTTGameOverMsg(): pyTTTMsg() {}
pyTTTGameOverMsg::pyTTTGameOverMsg(pfGameCliMsg* msg): pyTTTMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_TTT_GameOver))
message = nil; // wrong type, just clear it out
}
int pyTTTGameOverMsg::Result() const
{
if (message)
{
const Srv2Cli_TTT_GameOver* gmMsg = (const Srv2Cli_TTT_GameOver*)message->netMsg;
return gmMsg->result;
}
return false;
}
unsigned long pyTTTGameOverMsg::WinnerID() const
{
if (message)
{
const Srv2Cli_TTT_GameOver* gmMsg = (const Srv2Cli_TTT_GameOver*)message->netMsg;
return gmMsg->winnerId;
}
return false;
}
///////////////////////////////////////////////////////////////////////////////
pyTTTMoveMadeMsg::pyTTTMoveMadeMsg(): pyTTTMsg() {}
pyTTTMoveMadeMsg::pyTTTMoveMadeMsg(pfGameCliMsg* msg): pyTTTMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_TTT_MoveMade))
message = nil; // wrong type, just clear it out
}
unsigned long pyTTTMoveMadeMsg::PlayerID() const
{
if (message)
{
const Srv2Cli_TTT_MoveMade* gmMsg = (const Srv2Cli_TTT_MoveMade*)message->netMsg;
return gmMsg->playerId;
}
return false;
}
int pyTTTMoveMadeMsg::Row() const
{
if (message)
{
const Srv2Cli_TTT_MoveMade* gmMsg = (const Srv2Cli_TTT_MoveMade*)message->netMsg;
return gmMsg->row;
}
return false;
}
int pyTTTMoveMadeMsg::Col() const
{
if (message)
{
const Srv2Cli_TTT_MoveMade* gmMsg = (const Srv2Cli_TTT_MoveMade*)message->netMsg;
return gmMsg->col;
}
return false;
}

View File

@ -0,0 +1,124 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyTTTMsg_h
#define pyTTTMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyTTTMsg
//
// PURPOSE: Class wrapper for TTT game messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCliMsg.h"
class pyTTTMsg : public pyGameCliMsg
{
protected:
pyTTTMsg();
pyTTTMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptTTTMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyTTTMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyTTTMsg); // converts a PyObject to a pyTTTMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetTTTMsgType() const;
PyObject* UpcastToFinalTTTMsg() const; // returns the ttt message that this really is
};
///////////////////////////////////////////////////////////////////////////////
class pyTTTGameStartedMsg : public pyTTTMsg
{
protected:
pyTTTGameStartedMsg();
pyTTTGameStartedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptTTTGameStartedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyTTTGameStartedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyTTTGameStartedMsg); // converts a PyObject to a pyTTTGameStartedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
bool YourTurn() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyTTTGameOverMsg : public pyTTTMsg
{
protected:
pyTTTGameOverMsg();
pyTTTGameOverMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptTTTGameOverMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyTTTGameOverMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyTTTGameOverMsg); // converts a PyObject to a pyTTTGameOverMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
int Result() const;
unsigned long WinnerID() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyTTTMoveMadeMsg : public pyTTTMsg
{
protected:
pyTTTMoveMadeMsg();
pyTTTMoveMadeMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptTTTMoveMadeMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyTTTMoveMadeMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyTTTMoveMadeMsg); // converts a PyObject to a pyTTTMoveMadeMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long PlayerID() const;
int Row() const;
int Col() const;
};
#endif // pyTTTMsg_h

View File

@ -0,0 +1,231 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyTTTMsg.h"
#include "../../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base TTT msg class
//
PYTHON_CLASS_DEFINITION(ptTTTMsg, pyTTTMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptTTTMsg, pyTTTMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptTTTMsg)
PYTHON_NO_INIT_DEFINITION(ptTTTMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTMsg, getTTTMsgType)
{
return PyInt_FromLong(self->fThis->GetTTTMsgType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTMsg, upcastToFinalTTTMsg)
{
return self->fThis->UpcastToFinalTTTMsg();
}
PYTHON_START_METHODS_TABLE(ptTTTMsg)
PYTHON_METHOD_NOARGS(ptTTTMsg, getTTTMsgType, "Returns the type of the TTT message (see PtTTTMsgTypes)"),
PYTHON_METHOD_NOARGS(ptTTTMsg, upcastToFinalTTTMsg, "Returns this message as the TTT msg it is"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptTTTMsg, pyGameCliMsg, "Base class for TicTacToe game messages");
PYTHON_EXPOSE_TYPE_DEFINITION(ptTTTMsg, pyTTTMsg);
// required functions for PyObject interoperability
PyObject* pyTTTMsg::New(pfGameCliMsg* msg)
{
ptTTTMsg *newObj = (ptTTTMsg*)ptTTTMsg_type.tp_new(&ptTTTMsg_type, NULL, NULL);
if (msg && (msg->gameCli->GetGameTypeId() == kGameTypeId_TicTacToe))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptTTTMsg, pyTTTMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptTTTMsg, pyTTTMsg)
// Module and method definitions
void pyTTTMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptTTTMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyTTTMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtTTTMsgTypes);
PYTHON_ENUM_ELEMENT(PtTTTMsgTypes, kTTTGameStarted, kSrv2Cli_TTT_GameStarted);
PYTHON_ENUM_ELEMENT(PtTTTMsgTypes, kTTTGameOver, kSrv2Cli_TTT_GameOver);
PYTHON_ENUM_ELEMENT(PtTTTMsgTypes, kTTTMoveMade, kSrv2Cli_TTT_MoveMade);
PYTHON_ENUM_END(m, PtTTTMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptTTTGameStartedMsg, pyTTTGameStartedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptTTTGameStartedMsg, pyTTTGameStartedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptTTTGameStartedMsg)
PYTHON_NO_INIT_DEFINITION(ptTTTGameStartedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTGameStartedMsg, yourTurn)
{
PYTHON_RETURN_BOOL(self->fThis->YourTurn());
}
PYTHON_START_METHODS_TABLE(ptTTTGameStartedMsg)
PYTHON_METHOD_NOARGS(ptTTTGameStartedMsg, yourTurn, "Returns true if you are the first player (and therefore it's your turn)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptTTTGameStartedMsg, pyTTTMsg, "TicTacToe message received when the game is started");
// required functions for PyObject interoperability
PyObject* pyTTTGameStartedMsg::New(pfGameCliMsg* msg)
{
ptTTTGameStartedMsg *newObj = (ptTTTGameStartedMsg*)ptTTTGameStartedMsg_type.tp_new(&ptTTTGameStartedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_TTT_GameStarted))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptTTTGameStartedMsg, pyTTTGameStartedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptTTTGameStartedMsg, pyTTTGameStartedMsg)
// Module and method definitions
void pyTTTGameStartedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptTTTGameStartedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptTTTGameOverMsg, pyTTTGameOverMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptTTTGameOverMsg, pyTTTGameOverMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptTTTGameOverMsg)
PYTHON_NO_INIT_DEFINITION(ptTTTGameOverMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTGameOverMsg, result)
{
return PyInt_FromLong(self->fThis->Result());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTGameOverMsg, winnerID)
{
return PyLong_FromUnsignedLong(self->fThis->WinnerID());
}
PYTHON_START_METHODS_TABLE(ptTTTGameOverMsg)
PYTHON_METHOD_NOARGS(ptTTTGameOverMsg, result, "Returns the result of the game (see PtTTTGameResult)"),
PYTHON_METHOD_NOARGS(ptTTTGameOverMsg, winnerID, "Returns the winner's ID"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptTTTGameOverMsg, pyTTTMsg, "TicTacToe message received when the game is over");
// required functions for PyObject interoperability
PyObject* pyTTTGameOverMsg::New(pfGameCliMsg* msg)
{
ptTTTGameOverMsg *newObj = (ptTTTGameOverMsg*)ptTTTGameOverMsg_type.tp_new(&ptTTTGameOverMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_TTT_GameOver))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptTTTGameOverMsg, pyTTTGameOverMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptTTTGameOverMsg, pyTTTGameOverMsg)
// Module and method definitions
void pyTTTGameOverMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptTTTGameOverMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptTTTMoveMadeMsg, pyTTTMoveMadeMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptTTTMoveMadeMsg, pyTTTMoveMadeMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptTTTMoveMadeMsg)
PYTHON_NO_INIT_DEFINITION(ptTTTMoveMadeMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTMoveMadeMsg, playerID)
{
return PyLong_FromUnsignedLong(self->fThis->PlayerID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTMoveMadeMsg, row)
{
return PyInt_FromLong(self->fThis->Row());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptTTTMoveMadeMsg, col)
{
return PyInt_FromLong(self->fThis->Col());
}
PYTHON_START_METHODS_TABLE(ptTTTMoveMadeMsg)
PYTHON_METHOD_NOARGS(ptTTTMoveMadeMsg, playerID, "Returns the the ID of the player that just moved"),
PYTHON_METHOD_NOARGS(ptTTTMoveMadeMsg, row, "Returns the row index of the move (1..3)"),
PYTHON_METHOD_NOARGS(ptTTTMoveMadeMsg, col, "Returns the col index of the move (1..3)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptTTTMoveMadeMsg, pyTTTMsg, "TicTacToe message received when someone makes a move");
// required functions for PyObject interoperability
PyObject* pyTTTMoveMadeMsg::New(pfGameCliMsg* msg)
{
ptTTTMoveMadeMsg *newObj = (ptTTTMoveMadeMsg*)ptTTTMoveMadeMsg_type.tp_new(&ptTTTMoveMadeMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_TTT_MoveMade))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptTTTMoveMadeMsg, pyTTTMoveMadeMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptTTTMoveMadeMsg, pyTTTMoveMadeMsg)
// Module and method definitions
void pyTTTMoveMadeMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptTTTMoveMadeMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,99 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyVarSyncGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base VarSync game client class
//
const unsigned kGameId = 255; // random number that should be high enough to avoid collisions with other global games
pyVarSyncGame::pyVarSyncGame(): pyGameCli() {}
pyVarSyncGame::pyVarSyncGame(pfGameCli* client): pyGameCli(client)
{
if (client && (client->GetGameTypeId() != kGameTypeId_VarSync))
gameClient = nil; // wrong type, just clear it out
}
bool pyVarSyncGame::IsVarSyncGame(std::wstring guid)
{
Uuid gameUuid(guid.c_str());
return gameUuid == kGameTypeId_VarSync;
}
void pyVarSyncGame::JoinCommonVarSyncGame(pyKey& callbackKey)
{
// NOTE: We don't let the player specify the game ID, because there should only be one of these in an age, ever
VarSync_CreateParam init;
pfGameMgr::GetInstance()->JoinCommonGame(callbackKey.getKey(), kGameTypeId_VarSync, kGameId, sizeof(init), &init);
}
void pyVarSyncGame::SetStringVar(unsigned long id, std::wstring val)
{
if (gameClient)
{
pfGmVarSync* vsync = pfGmVarSync::ConvertNoRef(gameClient);
vsync->SetStringVar(id, val.c_str());
}
}
void pyVarSyncGame::SetNumericVar(unsigned long id, double val)
{
if (gameClient)
{
pfGmVarSync* vsync = pfGmVarSync::ConvertNoRef(gameClient);
vsync->SetNumericVar(id, val);
}
}
void pyVarSyncGame::RequestAllVars()
{
if (gameClient)
{
pfGmVarSync* vsync = pfGmVarSync::ConvertNoRef(gameClient);
vsync->RequestAllVars();
}
}
void pyVarSyncGame::CreateStringVar(std::wstring name, std::wstring val)
{
if (gameClient)
{
pfGmVarSync* vsync = pfGmVarSync::ConvertNoRef(gameClient);
vsync->CreateStringVar(name.c_str(), val.c_str());
}
}
void pyVarSyncGame::CreateNumericVar(std::wstring name, double val)
{
if (gameClient)
{
pfGmVarSync* vsync = pfGmVarSync::ConvertNoRef(gameClient);
vsync->CreateNumericVar(name.c_str(), val);
}
}

View File

@ -0,0 +1,69 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyVarSyncGame_h
#define pyVarSyncGame_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyVarSyncGame
//
// PURPOSE: Class wrapper for the VarSync game client
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCli.h"
#include "../../pyKey.h"
class pyVarSyncGame : public pyGameCli
{
protected:
pyVarSyncGame();
pyVarSyncGame(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptVarSyncGame);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncGame object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncGame); // converts a PyObject to a pyVarSyncGame (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static bool IsVarSyncGame(std::wstring guid);
static void JoinCommonVarSyncGame(pyKey& callbackKey);
void SetStringVar(unsigned long id, std::wstring val);
void SetNumericVar(unsigned long id, double val);
void RequestAllVars();
void CreateStringVar(std::wstring name, std::wstring val);
void CreateNumericVar(std::wstring name, double val);
};
#endif // pyVarSyncGame_h

View File

@ -0,0 +1,308 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyVarSyncGame.h"
#include <python.h>
#include "../../pyEnum.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base VarSync game client class
//
PYTHON_CLASS_DEFINITION(ptVarSyncGame, pyVarSyncGame);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncGame, pyVarSyncGame)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncGame)
PYTHON_NO_INIT_DEFINITION(ptVarSyncGame)
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsVarSyncGame, args, "Params: typeID\nReturns true if the specifed typeID (guid as a string) is a VarSync game")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtIsVarSyncGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
bool retVal = pyVarSyncGame::IsVarSyncGame(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = pyVarSyncGame::IsVarSyncGame(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtIsVarSyncGame expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtJoinCommonVarSyncGame, args, "Params: callbackKey\nJoins the common VarSync game. If one doesn't exist, it creates it")
{
PyObject* callbackObj = NULL;
if (!PyArg_ParseTuple(args, "O", &callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonVarSyncGame expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinCommonVarSyncGame expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyVarSyncGame::JoinCommonVarSyncGame(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptVarSyncGame, setStringVar, args)
{
unsigned long id;
PyObject* valueObj = NULL;
if (!PyArg_ParseTuple(args, "kO", &id, &valueObj))
{
PyErr_SetString(PyExc_TypeError, "setStringVar expects an unsigned long and a string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(valueObj))
{
int strLen = PyUnicode_GetSize(valueObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)valueObj, text, strLen);
text[strLen] = L'\0';
self->fThis->SetStringVar(id, text);
delete [] text;
PYTHON_RETURN_NONE;
}
else if (PyString_Check(valueObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(valueObj);
wchar_t* wText = hsStringToWString(text);
self->fThis->SetStringVar(id, wText);
delete [] wText;
PYTHON_RETURN_NONE;
}
else
{
PyErr_SetString(PyExc_TypeError, "setStringVar expects an unsigned long and a string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_METHOD_DEFINITION(ptVarSyncGame, setNumericVar, args)
{
unsigned long id;
PyObject* valueObj = NULL;
if (!PyArg_ParseTuple(args, "kO", &id, &valueObj))
{
PyErr_SetString(PyExc_TypeError, "setNumericVar expects an unsigned long and a number");
PYTHON_RETURN_ERROR;
}
double val = 0;
if (PyFloat_Check(valueObj))
val = PyFloat_AsDouble(valueObj);
else if (PyInt_Check(valueObj))
val = (double)PyInt_AsLong(valueObj);
else if (PyLong_Check(valueObj))
val = PyLong_AsDouble(valueObj);
else
{
PyErr_SetString(PyExc_TypeError, "setNumericVar expects an unsigned long and a number");
PYTHON_RETURN_ERROR;
}
self->fThis->SetNumericVar(id, val);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptVarSyncGame, requestAllVars, RequestAllVars)
PYTHON_METHOD_DEFINITION(ptVarSyncGame, createStringVar, args)
{
PyObject* varNameObj = NULL;
PyObject* valueObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &varNameObj, &valueObj))
{
PyErr_SetString(PyExc_TypeError, "createStringVar expects two strings");
PYTHON_RETURN_ERROR;
}
std::wstring varName = L"";
if (PyUnicode_Check(varNameObj))
{
int strLen = PyUnicode_GetSize(varNameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)varNameObj, text, strLen);
text[strLen] = L'\0';
varName = text;
delete [] text;
}
else if (PyString_Check(varNameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(varNameObj);
wchar_t* wText = hsStringToWString(text);
varName = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "createStringVar expects two strings");
PYTHON_RETURN_ERROR;
}
std::wstring val = L"";
if (PyUnicode_Check(valueObj))
{
int strLen = PyUnicode_GetSize(valueObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)valueObj, text, strLen);
text[strLen] = L'\0';
val = text;
delete [] text;
}
else if (PyString_Check(valueObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(valueObj);
wchar_t* wText = hsStringToWString(text);
val = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "createStringVar expects two strings");
PYTHON_RETURN_ERROR;
}
self->fThis->CreateStringVar(varName, val);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptVarSyncGame, createNumericVar, args)
{
PyObject* varNameObj = NULL;
PyObject* valueObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &varNameObj, &valueObj))
{
PyErr_SetString(PyExc_TypeError, "createNumericVar expects a string and a number");
PYTHON_RETURN_ERROR;
}
std::wstring varName = L"";
if (PyUnicode_Check(varNameObj))
{
int strLen = PyUnicode_GetSize(varNameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)varNameObj, text, strLen);
text[strLen] = L'\0';
varName = text;
delete [] text;
}
else if (PyString_Check(varNameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(varNameObj);
wchar_t* wText = hsStringToWString(text);
varName = wText;
delete [] wText;
}
else
{
PyErr_SetString(PyExc_TypeError, "createNumericVar expects a string and a number");
PYTHON_RETURN_ERROR;
}
double val = 0;
if (PyFloat_Check(valueObj))
val = PyFloat_AsDouble(valueObj);
else if (PyInt_Check(valueObj))
val = (double)PyInt_AsLong(valueObj);
else if (PyLong_Check(valueObj))
val = PyLong_AsDouble(valueObj);
else
{
PyErr_SetString(PyExc_TypeError, "createNumericVar expects a string and a number");
PYTHON_RETURN_ERROR;
}
self->fThis->CreateNumericVar(varName, val);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptVarSyncGame)
PYTHON_METHOD(ptVarSyncGame, setStringVar, "Params: varID, value\nAttempts to set a string variable to the specified string (clipped to 255 chars)"),
PYTHON_METHOD(ptVarSyncGame, setNumericVar, "Params: varID, value\nAttempts to set a numeric variable to the specified number (clipped to double)"),
PYTHON_BASIC_METHOD(ptVarSyncGame, requestAllVars, "Requests all the vars the server knows about"),
PYTHON_METHOD(ptVarSyncGame, createStringVar, "Params: varName, value\nAttempts to create a new string variable and set it to the specified string (clipped to 255 chars)"),
PYTHON_METHOD(ptVarSyncGame, createNumericVar, "Params: varName, value\nAttempts to create a new numeric variable and set it to the specified number (clipped to double)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncGame, pyGameCli, "Game client for the VarSync game");
// required functions for PyObject interoperability
PyObject* pyVarSyncGame::New(pfGameCli* client)
{
ptVarSyncGame *newObj = (ptVarSyncGame*)ptVarSyncGame_type.tp_new(&ptVarSyncGame_type, NULL, NULL);
if (client && (client->GetGameTypeId() == kGameTypeId_VarSync))
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncGame, pyVarSyncGame)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncGame, pyVarSyncGame)
// Module and method definitions
void pyVarSyncGame::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncGame);
PYTHON_CLASS_IMPORT_END(m);
}
void pyVarSyncGame::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD(methods, PtIsVarSyncGame);
PYTHON_GLOBAL_METHOD(methods, PtJoinCommonVarSyncGame);
}

View File

@ -0,0 +1,217 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyVarSyncMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base VarSync msg class
//
pyVarSyncMsg::pyVarSyncMsg(): pyGameCliMsg() {}
pyVarSyncMsg::pyVarSyncMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->gameCli->GetGameTypeId() != kGameTypeId_VarSync))
message = nil; // wrong type, just clear it out
}
int pyVarSyncMsg::GetVarSyncMsgType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyVarSyncMsg::UpcastToFinalVarSyncMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_VarSync_StringVarChanged:
return pyVarSyncStringVarChangedMsg::New(message);
case kSrv2Cli_VarSync_NumericVarChanged:
return pyVarSyncNumericVarChangedMsg::New(message);
case kSrv2Cli_VarSync_AllVarsSent:
return pyVarSyncAllVarsSentMsg::New(message);
case kSrv2Cli_VarSync_StringVarCreated:
return pyVarSyncStringVarCreatedMsg::New(message);
case kSrv2Cli_VarSync_NumericVarCreated:
return pyVarSyncNumericVarCreatedMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyVarSyncStringVarChangedMsg::pyVarSyncStringVarChangedMsg(): pyVarSyncMsg() {}
pyVarSyncStringVarChangedMsg::pyVarSyncStringVarChangedMsg(pfGameCliMsg* msg): pyVarSyncMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_VarSync_StringVarChanged))
message = nil; // wrong type, just clear it out
}
unsigned long pyVarSyncStringVarChangedMsg::ID() const
{
if (message)
{
const Srv2Cli_VarSync_StringVarChanged* gmMsg = (const Srv2Cli_VarSync_StringVarChanged*)message->netMsg;
return gmMsg->varID;
}
return 0;
}
std::wstring pyVarSyncStringVarChangedMsg::Value() const
{
if (message)
{
const Srv2Cli_VarSync_StringVarChanged* gmMsg = (const Srv2Cli_VarSync_StringVarChanged*)message->netMsg;
return gmMsg->varValue;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyVarSyncNumericVarChangedMsg::pyVarSyncNumericVarChangedMsg(): pyVarSyncMsg() {}
pyVarSyncNumericVarChangedMsg::pyVarSyncNumericVarChangedMsg(pfGameCliMsg* msg): pyVarSyncMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_VarSync_NumericVarChanged))
message = nil; // wrong type, just clear it out
}
unsigned long pyVarSyncNumericVarChangedMsg::ID() const
{
if (message)
{
const Srv2Cli_VarSync_NumericVarChanged* gmMsg = (const Srv2Cli_VarSync_NumericVarChanged*)message->netMsg;
return gmMsg->varID;
}
return 0;
}
double pyVarSyncNumericVarChangedMsg::Value() const
{
if (message)
{
const Srv2Cli_VarSync_NumericVarChanged* gmMsg = (const Srv2Cli_VarSync_NumericVarChanged*)message->netMsg;
return gmMsg->varValue;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyVarSyncAllVarsSentMsg::pyVarSyncAllVarsSentMsg(): pyVarSyncMsg() {}
pyVarSyncAllVarsSentMsg::pyVarSyncAllVarsSentMsg(pfGameCliMsg* msg): pyVarSyncMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_VarSync_AllVarsSent))
message = nil; // wrong type, just clear it out
}
///////////////////////////////////////////////////////////////////////////////
pyVarSyncStringVarCreatedMsg::pyVarSyncStringVarCreatedMsg(): pyVarSyncMsg() {}
pyVarSyncStringVarCreatedMsg::pyVarSyncStringVarCreatedMsg(pfGameCliMsg* msg): pyVarSyncMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_VarSync_StringVarCreated))
message = nil; // wrong type, just clear it out
}
std::wstring pyVarSyncStringVarCreatedMsg::Name() const
{
if (message)
{
const Srv2Cli_VarSync_StringVarCreated* gmMsg = (const Srv2Cli_VarSync_StringVarCreated*)message->netMsg;
return gmMsg->varName;
}
return L"";
}
unsigned long pyVarSyncStringVarCreatedMsg::ID() const
{
if (message)
{
const Srv2Cli_VarSync_StringVarCreated* gmMsg = (const Srv2Cli_VarSync_StringVarCreated*)message->netMsg;
return gmMsg->varID;
}
return 0;
}
std::wstring pyVarSyncStringVarCreatedMsg::Value() const
{
if (message)
{
const Srv2Cli_VarSync_StringVarCreated* gmMsg = (const Srv2Cli_VarSync_StringVarCreated*)message->netMsg;
return gmMsg->varValue;
}
return L"";
}
///////////////////////////////////////////////////////////////////////////////
pyVarSyncNumericVarCreatedMsg::pyVarSyncNumericVarCreatedMsg(): pyVarSyncMsg() {}
pyVarSyncNumericVarCreatedMsg::pyVarSyncNumericVarCreatedMsg(pfGameCliMsg* msg): pyVarSyncMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_VarSync_NumericVarCreated))
message = nil; // wrong type, just clear it out
}
std::wstring pyVarSyncNumericVarCreatedMsg::Name() const
{
if (message)
{
const Srv2Cli_VarSync_NumericVarCreated* gmMsg = (const Srv2Cli_VarSync_NumericVarCreated*)message->netMsg;
return gmMsg->varName;
}
return L"";
}
unsigned long pyVarSyncNumericVarCreatedMsg::ID() const
{
if (message)
{
const Srv2Cli_VarSync_NumericVarCreated* gmMsg = (const Srv2Cli_VarSync_NumericVarCreated*)message->netMsg;
return gmMsg->varID;
}
return 0;
}
double pyVarSyncNumericVarCreatedMsg::Value() const
{
if (message)
{
const Srv2Cli_VarSync_NumericVarCreated* gmMsg = (const Srv2Cli_VarSync_NumericVarCreated*)message->netMsg;
return gmMsg->varValue;
}
return 0;
}

View File

@ -0,0 +1,163 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyVarSyncMsg_h
#define pyVarSyncMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyVarSyncMsg
//
// PURPOSE: Class wrapper for VarSync game messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../../pyGlueHelpers.h"
#include "../pyGameCliMsg.h"
class pyVarSyncMsg : public pyGameCliMsg
{
protected:
pyVarSyncMsg();
pyVarSyncMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptVarSyncMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncMsg); // converts a PyObject to a pyVarSyncMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetVarSyncMsgType() const;
PyObject* UpcastToFinalVarSyncMsg() const; // returns the VarSync message that this really is
};
///////////////////////////////////////////////////////////////////////////////
class pyVarSyncStringVarChangedMsg : public pyVarSyncMsg
{
protected:
pyVarSyncStringVarChangedMsg();
pyVarSyncStringVarChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptVarSyncStringVarChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncStringVarChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncStringVarChangedMsg); // converts a PyObject to a pyVarSyncStringVarChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long ID() const;
std::wstring Value() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyVarSyncNumericVarChangedMsg : public pyVarSyncMsg
{
protected:
pyVarSyncNumericVarChangedMsg();
pyVarSyncNumericVarChangedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptVarSyncNumericVarChangedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncNumericVarChangedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncNumericVarChangedMsg); // converts a PyObject to a pyVarSyncNumericVarChangedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long ID() const;
double Value() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyVarSyncAllVarsSentMsg : public pyVarSyncMsg
{
protected:
pyVarSyncAllVarsSentMsg();
pyVarSyncAllVarsSentMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptVarSyncAllVarsSentMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncAllVarsSentMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncAllVarsSentMsg); // converts a PyObject to a pyVarSyncAllVarsSentMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
};
///////////////////////////////////////////////////////////////////////////////
class pyVarSyncStringVarCreatedMsg : public pyVarSyncMsg
{
protected:
pyVarSyncStringVarCreatedMsg();
pyVarSyncStringVarCreatedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptVarSyncStringVarCreatedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncStringVarCreatedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncStringVarCreatedMsg); // converts a PyObject to a pyVarSyncStringVarCreatedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
std::wstring Name() const;
unsigned long ID() const;
std::wstring Value() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyVarSyncNumericVarCreatedMsg : public pyVarSyncMsg
{
protected:
pyVarSyncNumericVarCreatedMsg();
pyVarSyncNumericVarCreatedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptVarSyncNumericVarCreatedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyVarSyncNumericVarCreatedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyVarSyncNumericVarCreatedMsg); // converts a PyObject to a pyVarSyncNumericVarCreatedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
std::wstring Name() const;
unsigned long ID() const;
double Value() const;
};
#endif // pyVarSyncMsg_h

View File

@ -0,0 +1,329 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyVarSyncMsg.h"
#include "../../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base VarSync msg class
//
PYTHON_CLASS_DEFINITION(ptVarSyncMsg, pyVarSyncMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncMsg, pyVarSyncMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncMsg)
PYTHON_NO_INIT_DEFINITION(ptVarSyncMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncMsg, getVarSyncMsgType)
{
return PyInt_FromLong(self->fThis->GetVarSyncMsgType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncMsg, upcastToFinalVarSyncMsg)
{
return self->fThis->UpcastToFinalVarSyncMsg();
}
PYTHON_START_METHODS_TABLE(ptVarSyncMsg)
PYTHON_METHOD_NOARGS(ptVarSyncMsg, getVarSyncMsgType, "Returns the type of the VarSync message (see PtVarSyncMsgTypes)"),
PYTHON_METHOD_NOARGS(ptVarSyncMsg, upcastToFinalVarSyncMsg, "Returns this message as the VarSync msg it is"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncMsg, pyGameCliMsg, "Base class for VarSync game messages");
PYTHON_EXPOSE_TYPE_DEFINITION(ptVarSyncMsg, pyVarSyncMsg);
// required functions for PyObject interoperability
PyObject* pyVarSyncMsg::New(pfGameCliMsg* msg)
{
ptVarSyncMsg *newObj = (ptVarSyncMsg*)ptVarSyncMsg_type.tp_new(&ptVarSyncMsg_type, NULL, NULL);
if (msg && (msg->gameCli->GetGameTypeId() == kGameTypeId_VarSync))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncMsg, pyVarSyncMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncMsg, pyVarSyncMsg)
// Module and method definitions
void pyVarSyncMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyVarSyncMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtVarSyncMsgTypes);
PYTHON_ENUM_ELEMENT(PtVarSyncMsgTypes, kVarSyncStringVarChanged, kSrv2Cli_VarSync_StringVarChanged);
PYTHON_ENUM_ELEMENT(PtVarSyncMsgTypes, kVarSyncNumericVarChanged, kSrv2Cli_VarSync_NumericVarChanged);
PYTHON_ENUM_ELEMENT(PtVarSyncMsgTypes, kVarSyncAllVarsSent, kSrv2Cli_VarSync_AllVarsSent);
PYTHON_ENUM_ELEMENT(PtVarSyncMsgTypes, kVarSyncStringVarCreated, kSrv2Cli_VarSync_StringVarCreated);
PYTHON_ENUM_ELEMENT(PtVarSyncMsgTypes, kVarSyncNumericVarCreated, kSrv2Cli_VarSync_NumericVarCreated);
PYTHON_ENUM_END(m, PtVarSyncMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptVarSyncStringVarChangedMsg, pyVarSyncStringVarChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncStringVarChangedMsg, pyVarSyncStringVarChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncStringVarChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptVarSyncStringVarChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncStringVarChangedMsg, id)
{
return PyLong_FromUnsignedLong(self->fThis->ID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncStringVarChangedMsg, value)
{
std::wstring retVal = self->fThis->Value();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.size());
}
PYTHON_START_METHODS_TABLE(ptVarSyncStringVarChangedMsg)
PYTHON_METHOD_NOARGS(ptVarSyncStringVarChangedMsg, id, "Returns the id of the var that changed"),
PYTHON_METHOD_NOARGS(ptVarSyncStringVarChangedMsg, value, "Returns the variable's new value"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncStringVarChangedMsg, pyVarSyncMsg, "VarSync message received when a string variable's value changes");
// required functions for PyObject interoperability
PyObject* pyVarSyncStringVarChangedMsg::New(pfGameCliMsg* msg)
{
ptVarSyncStringVarChangedMsg *newObj = (ptVarSyncStringVarChangedMsg*)ptVarSyncStringVarChangedMsg_type.tp_new(&ptVarSyncStringVarChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_VarSync_StringVarChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncStringVarChangedMsg, pyVarSyncStringVarChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncStringVarChangedMsg, pyVarSyncStringVarChangedMsg)
// Module and method definitions
void pyVarSyncStringVarChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncStringVarChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptVarSyncNumericVarChangedMsg, pyVarSyncNumericVarChangedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncNumericVarChangedMsg, pyVarSyncNumericVarChangedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncNumericVarChangedMsg)
PYTHON_NO_INIT_DEFINITION(ptVarSyncNumericVarChangedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncNumericVarChangedMsg, id)
{
return PyLong_FromUnsignedLong(self->fThis->ID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncNumericVarChangedMsg, value)
{
return PyLong_FromDouble(self->fThis->Value());
}
PYTHON_START_METHODS_TABLE(ptVarSyncNumericVarChangedMsg)
PYTHON_METHOD_NOARGS(ptVarSyncNumericVarChangedMsg, id, "Returns the id of the var that changed"),
PYTHON_METHOD_NOARGS(ptVarSyncNumericVarChangedMsg, value, "Returns the variable's new value"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncNumericVarChangedMsg, pyVarSyncMsg, "VarSync message received when a numeric variable's value changes");
// required functions for PyObject interoperability
PyObject* pyVarSyncNumericVarChangedMsg::New(pfGameCliMsg* msg)
{
ptVarSyncNumericVarChangedMsg *newObj = (ptVarSyncNumericVarChangedMsg*)ptVarSyncNumericVarChangedMsg_type.tp_new(&ptVarSyncNumericVarChangedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_VarSync_NumericVarChanged))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncNumericVarChangedMsg, pyVarSyncNumericVarChangedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncNumericVarChangedMsg, pyVarSyncNumericVarChangedMsg)
// Module and method definitions
void pyVarSyncNumericVarChangedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncNumericVarChangedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptVarSyncAllVarsSentMsg, pyVarSyncAllVarsSentMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncAllVarsSentMsg, pyVarSyncAllVarsSentMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncAllVarsSentMsg)
PYTHON_NO_INIT_DEFINITION(ptVarSyncAllVarsSentMsg)
PYTHON_START_METHODS_TABLE(ptVarSyncAllVarsSentMsg)
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncAllVarsSentMsg, pyVarSyncMsg, "VarSync message received after the last var is sent to you when you join the game, or request a list of vars");
// required functions for PyObject interoperability
PyObject* pyVarSyncAllVarsSentMsg::New(pfGameCliMsg* msg)
{
ptVarSyncAllVarsSentMsg *newObj = (ptVarSyncAllVarsSentMsg*)ptVarSyncAllVarsSentMsg_type.tp_new(&ptVarSyncAllVarsSentMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_VarSync_AllVarsSent))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncAllVarsSentMsg, pyVarSyncAllVarsSentMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncAllVarsSentMsg, pyVarSyncAllVarsSentMsg)
// Module and method definitions
void pyVarSyncAllVarsSentMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncAllVarsSentMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptVarSyncStringVarCreatedMsg, pyVarSyncStringVarCreatedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncStringVarCreatedMsg, pyVarSyncStringVarCreatedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncStringVarCreatedMsg)
PYTHON_NO_INIT_DEFINITION(ptVarSyncStringVarCreatedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncStringVarCreatedMsg, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.size());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncStringVarCreatedMsg, id)
{
return PyLong_FromUnsignedLong(self->fThis->ID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncStringVarCreatedMsg, value)
{
std::wstring retVal = self->fThis->Value();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.size());
}
PYTHON_START_METHODS_TABLE(ptVarSyncStringVarCreatedMsg)
PYTHON_METHOD_NOARGS(ptVarSyncStringVarCreatedMsg, name, "Returns the name of the var that was created"),
PYTHON_METHOD_NOARGS(ptVarSyncStringVarCreatedMsg, id, "Returns the id that was assigned to this variable"),
PYTHON_METHOD_NOARGS(ptVarSyncStringVarCreatedMsg, value, "Returns the variable's new value"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncStringVarCreatedMsg, pyVarSyncMsg, "VarSync message received when a string variable is created and assigned an id");
// required functions for PyObject interoperability
PyObject* pyVarSyncStringVarCreatedMsg::New(pfGameCliMsg* msg)
{
ptVarSyncStringVarCreatedMsg *newObj = (ptVarSyncStringVarCreatedMsg*)ptVarSyncStringVarCreatedMsg_type.tp_new(&ptVarSyncStringVarCreatedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_VarSync_StringVarCreated))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncStringVarCreatedMsg, pyVarSyncStringVarCreatedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncStringVarCreatedMsg, pyVarSyncStringVarCreatedMsg)
// Module and method definitions
void pyVarSyncStringVarCreatedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncStringVarCreatedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptVarSyncNumericVarCreatedMsg, pyVarSyncNumericVarCreatedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptVarSyncNumericVarCreatedMsg, pyVarSyncNumericVarCreatedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptVarSyncNumericVarCreatedMsg)
PYTHON_NO_INIT_DEFINITION(ptVarSyncNumericVarCreatedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncNumericVarCreatedMsg, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.size());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncNumericVarCreatedMsg, id)
{
return PyLong_FromUnsignedLong(self->fThis->ID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptVarSyncNumericVarCreatedMsg, value)
{
return PyLong_FromDouble(self->fThis->Value());
}
PYTHON_START_METHODS_TABLE(ptVarSyncNumericVarCreatedMsg)
PYTHON_METHOD_NOARGS(ptVarSyncNumericVarCreatedMsg, name, "Returns the name of the var that was created"),
PYTHON_METHOD_NOARGS(ptVarSyncNumericVarCreatedMsg, id, "Returns the id assigned to this variable"),
PYTHON_METHOD_NOARGS(ptVarSyncNumericVarCreatedMsg, value, "Returns the variable's new value"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptVarSyncNumericVarCreatedMsg, pyVarSyncMsg, "VarSync message received when a numeric variable is created and assigned an id");
// required functions for PyObject interoperability
PyObject* pyVarSyncNumericVarCreatedMsg::New(pfGameCliMsg* msg)
{
ptVarSyncNumericVarCreatedMsg *newObj = (ptVarSyncNumericVarCreatedMsg*)ptVarSyncNumericVarCreatedMsg_type.tp_new(&ptVarSyncNumericVarCreatedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_VarSync_NumericVarCreated))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptVarSyncNumericVarCreatedMsg, pyVarSyncNumericVarCreatedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptVarSyncNumericVarCreatedMsg, pyVarSyncNumericVarCreatedMsg)
// Module and method definitions
void pyVarSyncNumericVarCreatedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptVarSyncNumericVarCreatedMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,163 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyGameCli.h"
#include "TicTacToe/pyTTTGame.h"
#include "Heek/pyHeekGame.h"
#include "Marker/pyMarkerGame.h"
#include "BlueSpiral/pyBlueSpiralGame.h"
#include "ClimbingWall/pyClimbingWallGame.h"
#include "VarSync/pyVarSyncGame.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base game client class
//
pyGameCli::pyGameCli(): gameClient(nil) {}
pyGameCli::pyGameCli(pfGameCli* client): gameClient(client) {}
std::vector<unsigned> pyGameCli::GetGameIDs()
{
ARRAY(unsigned) gameIDs;
std::vector<unsigned> retVal;
pfGameMgr::GetInstance()->GetGameIds(&gameIDs);
for (unsigned i = 0; i < gameIDs.Count(); ++i)
retVal.push_back(gameIDs[i]);
return retVal;
}
PyObject* pyGameCli::GetGameCli(unsigned gameID)
{
pfGameCli* client = pfGameMgr::GetInstance()->GetGameCli(gameID);
if (client)
return pyGameCli::New(client);
PYTHON_RETURN_NONE;
}
std::wstring pyGameCli::GetGameNameByTypeID(std::wstring typeID)
{
Uuid gameUuid(typeID.c_str());
return pfGameMgr::GetInstance()->GetGameNameByTypeId(gameUuid);
}
void pyGameCli::JoinGame(pyKey& callbackKey, unsigned gameID)
{
pfGameMgr::GetInstance()->JoinGame(callbackKey.getKey(), gameID);
}
unsigned pyGameCli::GameID() const
{
if (gameClient)
return gameClient->GetGameId();
return 0;
}
std::wstring pyGameCli::GameTypeID() const
{
if (gameClient)
{
wchar_t guidStr[256];
GuidToString(gameClient->GetGameTypeId(), guidStr, arrsize(guidStr));
return guidStr;
}
return L"";
}
std::wstring pyGameCli::Name() const
{
if (gameClient)
return gameClient->GetName();
return L"";
}
unsigned pyGameCli::PlayerCount() const
{
if (gameClient)
return gameClient->GetPlayerCount();
return 0;
}
void pyGameCli::InvitePlayer(unsigned playerID)
{
if (gameClient)
gameClient->InvitePlayer(playerID);
}
void pyGameCli::UninvitePlayer(unsigned playerID)
{
if (gameClient)
gameClient->UninvitePlayer(playerID);
}
void pyGameCli::LeaveGame()
{
if (gameClient)
gameClient->LeaveGame();
}
PyObject* pyGameCli::UpcastToTTTGame()
{
if (gameClient && (gameClient->GetGameTypeId() == kGameTypeId_TicTacToe))
return pyTTTGame::New(gameClient);
PYTHON_RETURN_NONE;
}
PyObject* pyGameCli::UpcastToHeekGame()
{
if (gameClient && (gameClient->GetGameTypeId() == kGameTypeId_Heek))
return pyHeekGame::New(gameClient);
PYTHON_RETURN_NONE;
}
PyObject* pyGameCli::UpcastToMarkerGame()
{
if (gameClient && (gameClient->GetGameTypeId() == kGameTypeId_Marker))
return pyMarkerGame::New(gameClient);
PYTHON_RETURN_NONE;
}
PyObject* pyGameCli::UpcastToBlueSpiralGame()
{
if (gameClient && (gameClient->GetGameTypeId() == kGameTypeId_BlueSpiral))
return pyBlueSpiralGame::New(gameClient);
PYTHON_RETURN_NONE;
}
PyObject* pyGameCli::UpcastToClimbingWallGame()
{
if (gameClient && (gameClient->GetGameTypeId() == kGameTypeId_ClimbingWall))
return pyClimbingWallGame::New(gameClient);
PYTHON_RETURN_NONE;
}
PyObject* pyGameCli::UpcastToVarSyncGame()
{
if (gameClient && (gameClient->GetGameTypeId() == kGameTypeId_VarSync))
return pyVarSyncGame::New(gameClient);
PYTHON_RETURN_NONE;
}

View File

@ -0,0 +1,84 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyGameCli_h
#define pyGameCli_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyGameCli
//
// PURPOSE: Class wrapper for the game client base class
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../pyGlueHelpers.h"
#include "../pyKey.h"
class pyGameCli
{
protected:
pfGameCli* gameClient;
pyGameCli();
pyGameCli(pfGameCli* client);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptGameCli);
static PyObject* New(pfGameCli* client);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCli object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCli); // converts a PyObject to a pyGameCli (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaMethods(std::vector<PyMethodDef>& methods);
static std::vector<unsigned> GetGameIDs();
static PyObject* GetGameCli(unsigned gameID); // returns a ptGameCli
static std::wstring GetGameNameByTypeID(std::wstring typeID);
static void JoinGame(pyKey& callbackKey, unsigned gameID);
unsigned GameID() const;
std::wstring GameTypeID() const;
std::wstring Name() const;
unsigned PlayerCount() const;
void InvitePlayer(unsigned playerID);
void UninvitePlayer(unsigned playerID);
void LeaveGame();
PyObject* UpcastToTTTGame(); // returns ptTTTGame
PyObject* UpcastToHeekGame(); // returns ptHeekGame
PyObject* UpcastToMarkerGame(); // returns ptMarkerGame
PyObject* UpcastToBlueSpiralGame(); // returns ptBlueSpiralGame
PyObject* UpcastToClimbingWallGame(); // returns ptClimbingWallGame
PyObject* UpcastToVarSyncGame(); // returns ptVarSyncGame
};
#endif // pyGameCli_h

View File

@ -0,0 +1,239 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyGameCli.h"
#include "../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base game client class
//
PYTHON_CLASS_DEFINITION(ptGameCli, pyGameCli);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameCli, pyGameCli)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameCli)
PYTHON_NO_INIT_DEFINITION(ptGameCli)
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetGameIDs, "Returns a list of game IDs that the player is currently joined to")
{
std::vector<unsigned> ids = pyGameCli::GetGameIDs();
PyObject* retVal = PyList_New(ids.size());
for (unsigned i = 0; i < ids.size(); ++i)
PyList_SetItem(retVal, i, PyInt_FromLong(ids[i]));
return retVal;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetGameCli, args, "Params: gameID\nReturns a ptGameCli associated with the specified id")
{
int gameID = 0;
if (!PyArg_ParseTuple(args, "i", &gameID))
{
PyErr_SetString(PyExc_TypeError, "PtGetGameCli expects an integer");
PYTHON_RETURN_ERROR;
}
return pyGameCli::GetGameCli(gameID);
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetGameNameByTypeID, args, "Params: guid\nReturns the name of the game represented by guid passed in as a string")
{
PyObject* textObj;
if (!PyArg_ParseTuple(args, "O", &textObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetGameNameByTypeID expects a unicode string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(textObj))
{
int strLen = PyUnicode_GetSize(textObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)textObj, text, strLen);
text[strLen] = L'\0';
std::wstring retVal = pyGameCli::GetGameNameByTypeID(text);
delete [] text;
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
else if (PyString_Check(textObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(textObj);
wchar_t* wText = hsStringToWString(text);
std::wstring retVal = pyGameCli::GetGameNameByTypeID(wText);
delete [] wText;
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
else
{
PyErr_SetString(PyExc_TypeError, "PtGetGameNameByTypeID expects a unicode string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtJoinGame, args, "Params: callbackKey, gameID\nSends a join request to the specified game. Messages are sent to the callback key")
{
PyObject* callbackObj = NULL;
int gameID = 0;
if (!PyArg_ParseTuple(args, "Oi", &callbackObj, &gameID))
{
PyErr_SetString(PyExc_TypeError, "PtJoinGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(callbackObj))
{
PyErr_SetString(PyExc_TypeError, "PtJoinGame expects a ptKey and an integer");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(callbackObj);
pyGameCli::JoinGame(*key, gameID);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, gameID)
{
return PyInt_FromLong(self->fThis->GameID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, gameTypeID)
{
std::wstring retVal = self->fThis->GameTypeID();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, name)
{
std::wstring retVal = self->fThis->Name();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, playerCount)
{
return PyInt_FromLong(self->fThis->PlayerCount());
}
PYTHON_METHOD_DEFINITION(ptGameCli, invitePlayer, args)
{
int playerID = 0;
if (!PyArg_ParseTuple(args, "i", &playerID))
{
PyErr_SetString(PyExc_TypeError, "invitePlayer expects an unsigned int");
PYTHON_RETURN_ERROR;
}
self->fThis->InvitePlayer(playerID);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptGameCli, uninvitePlayer, args)
{
int playerID = 0;
if (!PyArg_ParseTuple(args, "i", &playerID))
{
PyErr_SetString(PyExc_TypeError, "uninvitePlayer expects an unsigned int");
PYTHON_RETURN_ERROR;
}
self->fThis->UninvitePlayer(playerID);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptGameCli, leaveGame, LeaveGame)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, upcastToTTTGame)
{
return self->fThis->UpcastToTTTGame();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, upcastToHeekGame)
{
return self->fThis->UpcastToHeekGame();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, upcastToMarkerGame)
{
return self->fThis->UpcastToMarkerGame();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, upcastToBlueSpiralGame)
{
return self->fThis->UpcastToBlueSpiralGame();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, upcastToClimbingWallGame)
{
return self->fThis->UpcastToClimbingWallGame();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCli, upcastToVarSyncGame)
{
return self->fThis->UpcastToVarSyncGame();
}
PYTHON_START_METHODS_TABLE(ptGameCli)
PYTHON_METHOD_NOARGS(ptGameCli, gameID, "Returns the ID number for this game"),
PYTHON_METHOD_NOARGS(ptGameCli, gameTypeID, "Returns the game type ID for this game (as a guid string)"),
PYTHON_METHOD_NOARGS(ptGameCli, name, "Returns the name of the game"),
PYTHON_METHOD_NOARGS(ptGameCli, playerCount, "Returns the current number of players"),
PYTHON_METHOD(ptGameCli, invitePlayer, "Params: playerID\nInvites the specified player to join the game"),
PYTHON_METHOD(ptGameCli, uninvitePlayer, "Params: playerID\nRevokes the invitation for the specified player"),
PYTHON_BASIC_METHOD(ptGameCli, leaveGame, "Leaves this game"),
PYTHON_METHOD_NOARGS(ptGameCli, upcastToTTTGame, "Returns this game client as a ptTTTGame"),
PYTHON_METHOD_NOARGS(ptGameCli, upcastToHeekGame, "Returns this game client as a ptHeekGame"),
PYTHON_METHOD_NOARGS(ptGameCli, upcastToMarkerGame, "Returns this game client as a ptMarkerGame"),
PYTHON_METHOD_NOARGS(ptGameCli, upcastToBlueSpiralGame, "Returns this game client as a ptBlueSpiralGame"),
PYTHON_METHOD_NOARGS(ptGameCli, upcastToClimbingWallGame, "Returns this game client as a ptClimbingWallGame"),
PYTHON_METHOD_NOARGS(ptGameCli, upcastToVarSyncGame, "Returns this game client as a ptVarSyncGame"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptGameCli, "Base class for all game client interfaces");
PYTHON_EXPOSE_TYPE_DEFINITION(ptGameCli, pyGameCli);
// required functions for PyObject interoperability
PyObject* pyGameCli::New(pfGameCli* client)
{
ptGameCli *newObj = (ptGameCli*)ptGameCli_type.tp_new(&ptGameCli_type, NULL, NULL);
newObj->fThis->gameClient = client;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameCli, pyGameCli)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameCli, pyGameCli)
// Module and method definitions
void pyGameCli::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameCli);
PYTHON_CLASS_IMPORT_END(m);
}
void pyGameCli::AddPlasmaMethods(std::vector<PyMethodDef>& methods)
{
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetGameIDs);
PYTHON_GLOBAL_METHOD(methods, PtGetGameCli);
PYTHON_GLOBAL_METHOD(methods, PtGetGameNameByTypeID);
PYTHON_GLOBAL_METHOD(methods, PtJoinGame);
}

View File

@ -0,0 +1,226 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyGameCliMsg.h"
#include "pyGameCli.h"
#include "TicTacToe\pyTTTMsg.h"
#include "Heek\pyHeekMsg.h"
#include "Marker\pyMarkerMsg.h"
#include "BlueSpiral\pyBlueSpiralMsg.h"
#include "ClimbingWall\pyClimbingWallMsg.h"
#include "VarSync/pyVarSyncMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base game cli msg class
//
pyGameCliMsg::pyGameCliMsg(): message(nil) {}
pyGameCliMsg::pyGameCliMsg(pfGameCliMsg* msg): message(msg) {}
int pyGameCliMsg::GetType() const
{
if (message)
{
switch (message->netMsg->messageId)
{
case kSrv2Cli_Game_PlayerJoined:
case kSrv2Cli_Game_PlayerLeft:
case kSrv2Cli_Game_InviteFailed:
case kSrv2Cli_Game_OwnerChange:
return message->netMsg->messageId; // just return the type straight up
}
// if we get here, it's probably a game message, check the game guid
if (message->gameCli->GetGameTypeId() == kGameTypeId_TicTacToe)
return kPyGameCliTTTMsg;
if (message->gameCli->GetGameTypeId() == kGameTypeId_Heek)
return kPyGameCliHeekMsg;
if (message->gameCli->GetGameTypeId() == kGameTypeId_Marker)
return kPyGameCliMarkerMsg;
if (message->gameCli->GetGameTypeId() == kGameTypeId_BlueSpiral)
return kPyGameCliBlueSpiralMsg;
if (message->gameCli->GetGameTypeId() == kGameTypeId_ClimbingWall)
return kPyGameCliClimbingWallMsg;
if (message->gameCli->GetGameTypeId() == kGameTypeId_VarSync)
return kPyGameCliVarSyncMsg;
}
return -1;
}
PyObject* pyGameCliMsg::GetGameCli() const
{
if (message && (message->gameCli))
return pyGameCli::New(message->gameCli);
PYTHON_RETURN_NONE;
}
PyObject* pyGameCliMsg::UpcastToFinalGameCliMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
switch (message->netMsg->messageId)
{
case kSrv2Cli_Game_PlayerJoined:
return pyGameCliPlayerJoinedMsg::New(message);
case kSrv2Cli_Game_PlayerLeft:
return pyGameCliPlayerLeftMsg::New(message);
case kSrv2Cli_Game_InviteFailed:
return pyGameCliInviteFailedMsg::New(message);
case kSrv2Cli_Game_OwnerChange:
return pyGameCliOwnerChangeMsg::New(message);
default:
PYTHON_RETURN_NONE;
}
}
PyObject* pyGameCliMsg::UpcastToGameMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
const Uuid& gameTypeId = message->gameCli->GetGameTypeId();
if (gameTypeId == kGameTypeId_TicTacToe)
return pyTTTMsg::New(message);
else if (gameTypeId == kGameTypeId_Heek)
return pyHeekMsg::New(message);
else if (gameTypeId == kGameTypeId_Marker)
return pyMarkerMsg::New(message);
else if (gameTypeId == kGameTypeId_BlueSpiral)
return pyBlueSpiralMsg::New(message);
else if (gameTypeId == kGameTypeId_ClimbingWall)
return pyClimbingWallMsg::New(message);
else if (gameTypeId == kGameTypeId_VarSync)
return pyVarSyncMsg::New(message);
else
PYTHON_RETURN_NONE;
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyGameCliPlayerJoinedMsg::pyGameCliPlayerJoinedMsg(): pyGameCliMsg() {}
pyGameCliPlayerJoinedMsg::pyGameCliPlayerJoinedMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Game_PlayerJoined))
message = nil; // wrong type, just clear it out
}
unsigned long pyGameCliPlayerJoinedMsg::PlayerID() const
{
if (message)
{
const Srv2Cli_Game_PlayerJoined* gmMsg = (const Srv2Cli_Game_PlayerJoined*)message->netMsg;
return gmMsg->playerId;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyGameCliPlayerLeftMsg::pyGameCliPlayerLeftMsg(): pyGameCliMsg() {}
pyGameCliPlayerLeftMsg::pyGameCliPlayerLeftMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Game_PlayerLeft))
message = nil; // wrong type, just clear it out
}
unsigned long pyGameCliPlayerLeftMsg::PlayerID() const
{
if (message)
{
const Srv2Cli_Game_PlayerLeft* gmMsg = (const Srv2Cli_Game_PlayerLeft*)message->netMsg;
return gmMsg->playerId;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyGameCliInviteFailedMsg::pyGameCliInviteFailedMsg(): pyGameCliMsg() {}
pyGameCliInviteFailedMsg::pyGameCliInviteFailedMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Game_InviteFailed))
message = nil; // wrong type, just clear it out
}
unsigned long pyGameCliInviteFailedMsg::InviteeID() const
{
if (message)
{
const Srv2Cli_Game_InviteFailed* gmMsg = (const Srv2Cli_Game_InviteFailed*)message->netMsg;
return gmMsg->inviteeId;
}
return 0;
}
unsigned long pyGameCliInviteFailedMsg::OperationID() const
{
if (message)
{
const Srv2Cli_Game_InviteFailed* gmMsg = (const Srv2Cli_Game_InviteFailed*)message->netMsg;
return gmMsg->operationId;
}
return 0;
}
int pyGameCliInviteFailedMsg::Error() const
{
if (message)
{
const Srv2Cli_Game_InviteFailed* gmMsg = (const Srv2Cli_Game_InviteFailed*)message->netMsg;
return gmMsg->error;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyGameCliOwnerChangeMsg::pyGameCliOwnerChangeMsg(): pyGameCliMsg() {}
pyGameCliOwnerChangeMsg::pyGameCliOwnerChangeMsg(pfGameCliMsg* msg): pyGameCliMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_Game_OwnerChange))
message = nil; // wrong type, just clear it out
}
unsigned long pyGameCliOwnerChangeMsg::OwnerID() const
{
if (message)
{
const Srv2Cli_Game_OwnerChange* gmMsg = (const Srv2Cli_Game_OwnerChange*)message->netMsg;
return gmMsg->ownerId;
}
return 0;
}

View File

@ -0,0 +1,161 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyGameCliMsg_h
#define pyGameCliMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyGameCliMsg
//
// PURPOSE: Class wrapper for game client messages
//
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../pyGlueHelpers.h"
class pyGameCliMsg
{
protected:
pfGameCliMsg* message;
pyGameCliMsg();
pyGameCliMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptGameCliMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliMsg); // converts a PyObject to a pyGameCliMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetType() const;
PyObject* GetGameCli() const; // returns ptGameCli
PyObject* UpcastToFinalGameCliMsg() const; // returns it upcasted to player joined/left/invite/owner change message
PyObject* UpcastToGameMsg() const; // returns it upcasted to a game's message base class
// for convenience, we define our own message types, one message type for each game, so that we can have
// a "base class" for each game's messages. Anything under kCli2Srv_NumGameMsgIds keeps their normal type
// (and is exposed to python here), but anything above it has the message code look at the game type and
// return the "message type" indicating what game the message is from
enum pyGameCliMsgType
{
kPyGameCliMsgTypeStart = kCli2Srv_NumGameMsgIds,
kPyGameCliTTTMsg, // Tick Tack Toe game messages
kPyGameCliHeekMsg, // Heek game messages
kPyGameCliMarkerMsg, // Marker game messages
kPyGameCliBlueSpiralMsg, // Blue Spiral game messages
kPyGameCliClimbingWallMsg, // Climbing Wall game messages
kPyGameCliVarSyncMsg, // Var Sync game messages
};
};
///////////////////////////////////////////////////////////////////////////////
class pyGameCliPlayerJoinedMsg : public pyGameCliMsg
{
protected:
pyGameCliPlayerJoinedMsg();
pyGameCliPlayerJoinedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptGameCliPlayerJoinedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliPlayerJoinedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliPlayerJoinedMsg); // converts a PyObject to a pyGameCliPlayerJoinedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long PlayerID() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyGameCliPlayerLeftMsg : public pyGameCliMsg
{
protected:
pyGameCliPlayerLeftMsg();
pyGameCliPlayerLeftMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptGameCliPlayerLeftMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliPlayerLeftMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliPlayerLeftMsg); // converts a PyObject to a pyGameCliPlayerLeftMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long PlayerID() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyGameCliInviteFailedMsg : public pyGameCliMsg
{
protected:
pyGameCliInviteFailedMsg();
pyGameCliInviteFailedMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptGameCliInviteFailedMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliInviteFailedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliInviteFailedMsg); // converts a PyObject to a pyGameCliInviteFailedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
unsigned long InviteeID() const;
unsigned long OperationID() const;
int Error() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyGameCliOwnerChangeMsg : public pyGameCliMsg
{
protected:
pyGameCliOwnerChangeMsg();
pyGameCliOwnerChangeMsg(pfGameCliMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptGameCliOwnerChangeMsg);
static PyObject* New(pfGameCliMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameCliOwnerChangeMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameCliOwnerChangeMsg); // converts a PyObject to a pyGameCliOwnerChangeMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long OwnerID() const;
};
#endif // pyGameCliMsg_h

View File

@ -0,0 +1,297 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyGameCliMsg.h"
#include "../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base game client msg class
//
PYTHON_CLASS_DEFINITION(ptGameCliMsg, pyGameCliMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameCliMsg, pyGameCliMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameCliMsg)
PYTHON_NO_INIT_DEFINITION(ptGameCliMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliMsg, getType)
{
return PyInt_FromLong(self->fThis->GetType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliMsg, getGameCli)
{
return self->fThis->GetGameCli();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliMsg, upcastToFinalGameCliMsg)
{
return self->fThis->UpcastToFinalGameCliMsg();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliMsg, upcastToGameMsg)
{
return self->fThis->UpcastToGameMsg();
}
PYTHON_START_METHODS_TABLE(ptGameCliMsg)
PYTHON_METHOD_NOARGS(ptGameCliMsg, getType, "Returns the type of the message (see PtGameCliMsgTypes)"),
PYTHON_METHOD_NOARGS(ptGameCliMsg, getGameCli, "Returns the game client associated with this message"),
PYTHON_METHOD_NOARGS(ptGameCliMsg, upcastToFinalGameCliMsg, "Returns this message as the game client message it is (player joined, player left, invite failed, or owner change)"),
PYTHON_METHOD_NOARGS(ptGameCliMsg, upcastToGameMsg, "Returns this message as the base class of message for the game it is associated with (ttt, heek, marker, etc)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptGameCliMsg, "Message from the game server from a game");
PYTHON_EXPOSE_TYPE_DEFINITION(ptGameCliMsg, pyGameCliMsg);
// required functions for PyObject interoperability
PyObject* pyGameCliMsg::New(pfGameCliMsg* msg)
{
ptGameCliMsg *newObj = (ptGameCliMsg*)ptGameCliMsg_type.tp_new(&ptGameCliMsg_type, NULL, NULL);
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameCliMsg, pyGameCliMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameCliMsg, pyGameCliMsg)
// Module and method definitions
void pyGameCliMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameCliMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyGameCliMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtGameCliMsgTypes);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliPlayerJoinedMsg, kSrv2Cli_Game_PlayerJoined);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliPlayerLeftMsg, kSrv2Cli_Game_PlayerLeft);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliInviteFailedMsg, kSrv2Cli_Game_InviteFailed);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliOwnerChangeMsg, kSrv2Cli_Game_OwnerChange);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliTTTMsg, kPyGameCliTTTMsg);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliHeekMsg, kPyGameCliHeekMsg);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliMarkerMsg, kPyGameCliMarkerMsg);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliBlueSpiralMsg, kPyGameCliBlueSpiralMsg);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliClimbingWallMsg, kPyGameCliClimbingWallMsg);
PYTHON_ENUM_ELEMENT(PtGameCliMsgTypes, kGameCliVarSyncMsg, kPyGameCliVarSyncMsg);
PYTHON_ENUM_END(m, PtGameCliMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game client message subclasses
//
PYTHON_CLASS_DEFINITION(ptGameCliPlayerJoinedMsg, pyGameCliPlayerJoinedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameCliPlayerJoinedMsg, pyGameCliPlayerJoinedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameCliPlayerJoinedMsg)
PYTHON_NO_INIT_DEFINITION(ptGameCliPlayerJoinedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliPlayerJoinedMsg, playerID)
{
return PyLong_FromUnsignedLong(self->fThis->PlayerID());
}
PYTHON_START_METHODS_TABLE(ptGameCliPlayerJoinedMsg)
PYTHON_METHOD_NOARGS(ptGameCliPlayerJoinedMsg, playerID, "Returns the player's ID number"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptGameCliPlayerJoinedMsg, pyGameCliMsg, "Game client message when a player joined message is received");
// required functions for PyObject interoperability
PyObject* pyGameCliPlayerJoinedMsg::New(pfGameCliMsg* msg)
{
ptGameCliPlayerJoinedMsg *newObj = (ptGameCliPlayerJoinedMsg*)ptGameCliPlayerJoinedMsg_type.tp_new(&ptGameCliPlayerJoinedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Game_PlayerJoined))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameCliPlayerJoinedMsg, pyGameCliPlayerJoinedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameCliPlayerJoinedMsg, pyGameCliPlayerJoinedMsg)
// Module and method definitions
void pyGameCliPlayerJoinedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameCliPlayerJoinedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptGameCliPlayerLeftMsg, pyGameCliPlayerLeftMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameCliPlayerLeftMsg, pyGameCliPlayerLeftMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameCliPlayerLeftMsg)
PYTHON_NO_INIT_DEFINITION(ptGameCliPlayerLeftMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliPlayerLeftMsg, playerID)
{
return PyLong_FromUnsignedLong(self->fThis->PlayerID());
}
PYTHON_START_METHODS_TABLE(ptGameCliPlayerLeftMsg)
PYTHON_METHOD_NOARGS(ptGameCliPlayerLeftMsg, playerID, "Returns the player's ID number"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptGameCliPlayerLeftMsg, pyGameCliMsg, "Game client message when a player left message is received");
// required functions for PyObject interoperability
PyObject* pyGameCliPlayerLeftMsg::New(pfGameCliMsg* msg)
{
ptGameCliPlayerLeftMsg *newObj = (ptGameCliPlayerLeftMsg*)ptGameCliPlayerLeftMsg_type.tp_new(&ptGameCliPlayerLeftMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Game_PlayerLeft))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameCliPlayerLeftMsg, pyGameCliPlayerLeftMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameCliPlayerLeftMsg, pyGameCliPlayerLeftMsg)
// Module and method definitions
void pyGameCliPlayerLeftMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameCliPlayerLeftMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptGameCliInviteFailedMsg, pyGameCliInviteFailedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameCliInviteFailedMsg, pyGameCliInviteFailedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameCliInviteFailedMsg)
PYTHON_NO_INIT_DEFINITION(ptGameCliInviteFailedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliInviteFailedMsg, inviteeID)
{
return PyLong_FromUnsignedLong(self->fThis->InviteeID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliInviteFailedMsg, operationID)
{
return PyLong_FromUnsignedLong(self->fThis->OperationID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliInviteFailedMsg, error)
{
return PyLong_FromLong(self->fThis->Error());
}
PYTHON_START_METHODS_TABLE(ptGameCliInviteFailedMsg)
PYTHON_METHOD_NOARGS(ptGameCliInviteFailedMsg, inviteeID, "Returns the invitee's ID number"),
PYTHON_METHOD_NOARGS(ptGameCliInviteFailedMsg, operationID, "Returns the operation's ID number"),
PYTHON_METHOD_NOARGS(ptGameCliInviteFailedMsg, error, "Returns the error value (See PtGameCliInviteErrors)"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptGameCliInviteFailedMsg, pyGameCliMsg, "Game client message when an invite failed message is received");
// required functions for PyObject interoperability
PyObject* pyGameCliInviteFailedMsg::New(pfGameCliMsg* msg)
{
ptGameCliInviteFailedMsg *newObj = (ptGameCliInviteFailedMsg*)ptGameCliInviteFailedMsg_type.tp_new(&ptGameCliInviteFailedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Game_InviteFailed))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameCliInviteFailedMsg, pyGameCliInviteFailedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameCliInviteFailedMsg, pyGameCliInviteFailedMsg)
// Module and method definitions
void pyGameCliInviteFailedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameCliInviteFailedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyGameCliInviteFailedMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtGameCliInviteErrors);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteSuccess, kGameInviteSuccess);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrNotOwner, kGameInviteErrNotOwner);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrAlreadyInvited, kGameInviteErrAlreadyInvited);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrAlreadyJoined, kGameInviteErrAlreadyJoined);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrGameStarted, kGameInviteErrGameStarted);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrGameOver, kGameInviteErrGameOver);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrGameFull, kGameInviteErrGameFull);
PYTHON_ENUM_ELEMENT(PtGameCliInviteErrors, kGameInviteErrNoJoin, kGameInviteErrNoJoin);
PYTHON_ENUM_END(m, PtGameCliInviteErrors);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptGameCliOwnerChangeMsg, pyGameCliOwnerChangeMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameCliOwnerChangeMsg, pyGameCliOwnerChangeMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameCliOwnerChangeMsg)
PYTHON_NO_INIT_DEFINITION(ptGameCliOwnerChangeMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameCliOwnerChangeMsg, ownerID)
{
return PyLong_FromUnsignedLong(self->fThis->OwnerID());
}
PYTHON_START_METHODS_TABLE(ptGameCliOwnerChangeMsg)
PYTHON_METHOD_NOARGS(ptGameCliOwnerChangeMsg, ownerID, "Returns the owner's ID number"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptGameCliOwnerChangeMsg, pyGameCliMsg, "Game client message when a owner change message is received");
// required functions for PyObject interoperability
PyObject* pyGameCliOwnerChangeMsg::New(pfGameCliMsg* msg)
{
ptGameCliOwnerChangeMsg *newObj = (ptGameCliOwnerChangeMsg*)ptGameCliOwnerChangeMsg_type.tp_new(&ptGameCliOwnerChangeMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_Game_OwnerChange))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameCliOwnerChangeMsg, pyGameCliOwnerChangeMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameCliOwnerChangeMsg, pyGameCliOwnerChangeMsg)
// Module and method definitions
void pyGameCliOwnerChangeMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameCliOwnerChangeMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,146 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyGameMgrMsg.h"
///////////////////////////////////////////////////////////////////////////////
//
// Base game mgr msg class
//
pyGameMgrMsg::pyGameMgrMsg(): message(nil) {}
pyGameMgrMsg::pyGameMgrMsg(pfGameMgrMsg* msg): message(msg) {}
int pyGameMgrMsg::GetType() const
{
if (message)
return message->netMsg->messageId;
return -1;
}
PyObject* pyGameMgrMsg::UpcastToInviteReceivedMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
if (message->netMsg->messageId != kSrv2Cli_GameMgr_InviteReceived)
PYTHON_RETURN_NONE;
return pyGameMgrInviteReceivedMsg::New(message);
}
PyObject* pyGameMgrMsg::UpcastToInviteRevokedMsg() const
{
if (!message)
PYTHON_RETURN_NONE;
if (message->netMsg->messageId != kSrv2Cli_GameMgr_InviteRevoked)
PYTHON_RETURN_NONE;
return pyGameMgrInviteRevokedMsg::New(message);
}
///////////////////////////////////////////////////////////////////////////////
//
// The different messages we can receive
//
pyGameMgrInviteReceivedMsg::pyGameMgrInviteReceivedMsg(): pyGameMgrMsg() {}
pyGameMgrInviteReceivedMsg::pyGameMgrInviteReceivedMsg(pfGameMgrMsg* msg): pyGameMgrMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_GameMgr_InviteReceived))
message = nil; // wrong type, just clear it out
}
unsigned long pyGameMgrInviteReceivedMsg::InviterID() const
{
if (message)
{
const Srv2Cli_GameMgr_InviteReceived* gmMsg = (const Srv2Cli_GameMgr_InviteReceived*)message->netMsg;
return gmMsg->inviterId;
}
return 0;
}
std::wstring pyGameMgrInviteReceivedMsg::GameTypeID() const
{
if (message)
{
const Srv2Cli_GameMgr_InviteReceived* gmMsg = (const Srv2Cli_GameMgr_InviteReceived*)message->netMsg;
wchar_t buffer[256];
GuidToString(gmMsg->gameTypeId, buffer, arrsize(buffer));
return buffer;
}
return L"";
}
unsigned long pyGameMgrInviteReceivedMsg::NewGameID() const
{
if (message)
{
const Srv2Cli_GameMgr_InviteReceived* gmMsg = (const Srv2Cli_GameMgr_InviteReceived*)message->netMsg;
return gmMsg->newGameId;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
pyGameMgrInviteRevokedMsg::pyGameMgrInviteRevokedMsg(): pyGameMgrMsg() {}
pyGameMgrInviteRevokedMsg::pyGameMgrInviteRevokedMsg(pfGameMgrMsg* msg): pyGameMgrMsg(msg)
{
if (message && (message->netMsg->messageId != kSrv2Cli_GameMgr_InviteRevoked))
message = nil; // wrong type, just clear it out
}
unsigned long pyGameMgrInviteRevokedMsg::InviterID() const
{
if (message)
{
const Srv2Cli_GameMgr_InviteRevoked* gmMsg = (const Srv2Cli_GameMgr_InviteRevoked*)message->netMsg;
return gmMsg->inviterId;
}
return 0;
}
std::wstring pyGameMgrInviteRevokedMsg::GameTypeID() const
{
if (message)
{
const Srv2Cli_GameMgr_InviteRevoked* gmMsg = (const Srv2Cli_GameMgr_InviteRevoked*)message->netMsg;
wchar_t buffer[256];
GuidToString(gmMsg->gameTypeId, buffer, arrsize(buffer));
return buffer;
}
return L"";
}
unsigned long pyGameMgrInviteRevokedMsg::NewGameID() const
{
if (message)
{
const Srv2Cli_GameMgr_InviteRevoked* gmMsg = (const Srv2Cli_GameMgr_InviteRevoked*)message->netMsg;
return gmMsg->newGameId;
}
return 0;
}

View File

@ -0,0 +1,109 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyGameMgrMsg_h
#define pyGameMgrMsg_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: pyGameMgrMsg
//
// PURPOSE: Class wrapper for game manager messages
//
#include "hsStlUtils.h"
#include "pfGameMgr/pfGameMgr.h"
#include <python.h>
#include "../pyGlueHelpers.h"
class pyGameMgrMsg
{
protected:
pfGameMgrMsg* message;
pyGameMgrMsg();
pyGameMgrMsg(pfGameMgrMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_EXPOSE_TYPE; // so we can subclass
PYTHON_CLASS_NEW_FRIEND(ptGameMgrMsg);
static PyObject* New(pfGameMgrMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameMgrMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameMgrMsg); // converts a PyObject to a pyGameMgrMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
static void AddPlasmaConstantsClasses(PyObject* m);
int GetType() const;
PyObject* UpcastToInviteReceivedMsg() const; // returns ptGameMgrInviteReceivedMsg
PyObject* UpcastToInviteRevokedMsg() const; // returns ptGameMgrInviteRevokedMsg
};
///////////////////////////////////////////////////////////////////////////////
class pyGameMgrInviteReceivedMsg : public pyGameMgrMsg
{
protected:
pyGameMgrInviteReceivedMsg();
pyGameMgrInviteReceivedMsg(pfGameMgrMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptGameMgrInviteReceivedMsg);
static PyObject* New(pfGameMgrMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameMgrInviteReceivedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameMgrInviteReceivedMsg); // converts a PyObject to a pyGameMgrInviteReceivedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long InviterID() const;
std::wstring GameTypeID() const;
unsigned long NewGameID() const;
};
///////////////////////////////////////////////////////////////////////////////
class pyGameMgrInviteRevokedMsg : public pyGameMgrMsg
{
protected:
pyGameMgrInviteRevokedMsg();
pyGameMgrInviteRevokedMsg(pfGameMgrMsg* msg);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptGameMgrInviteRevokedMsg);
static PyObject* New(pfGameMgrMsg* msg);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyGameMgrInviteRevokedMsg object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyGameMgrInviteRevokedMsg); // converts a PyObject to a pyGameMgrInviteRevokedMsg (throws error if not correct type)
static void AddPlasmaClasses(PyObject* m);
unsigned long InviterID() const;
std::wstring GameTypeID() const;
unsigned long NewGameID() const;
};
#endif // pyGameMgrMsg_h

View File

@ -0,0 +1,203 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyGameMgrMsg.h"
#include "../pyEnum.h"
#include <python.h>
///////////////////////////////////////////////////////////////////////////////
//
// Base game manager msg class
//
PYTHON_CLASS_DEFINITION(ptGameMgrMsg, pyGameMgrMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameMgrMsg, pyGameMgrMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameMgrMsg)
PYTHON_NO_INIT_DEFINITION(ptGameMgrMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrMsg, getType)
{
return PyInt_FromLong(self->fThis->GetType());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrMsg, upcastToInviteReceivedMsg)
{
return self->fThis->UpcastToInviteReceivedMsg();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrMsg, upcastToInviteRevokedMsg)
{
return self->fThis->UpcastToInviteRevokedMsg();
}
PYTHON_START_METHODS_TABLE(ptGameMgrMsg)
PYTHON_METHOD_NOARGS(ptGameMgrMsg, getType, "Returns the type of the message (see PtGameMgrMsgTypes)"),
PYTHON_METHOD_NOARGS(ptGameMgrMsg, upcastToInviteReceivedMsg, "Returns this message as a ptGameMgrInviteReceivedMsg"),
PYTHON_METHOD_NOARGS(ptGameMgrMsg, upcastToInviteRevokedMsg, "Returns this message as a ptGameMgrInviteRevokedMsg"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptGameMgrMsg, "Message from the game manager");
PYTHON_EXPOSE_TYPE_DEFINITION(ptGameMgrMsg, pyGameMgrMsg);
// required functions for PyObject interoperability
PyObject* pyGameMgrMsg::New(pfGameMgrMsg* msg)
{
ptGameMgrMsg *newObj = (ptGameMgrMsg*)ptGameMgrMsg_type.tp_new(&ptGameMgrMsg_type, NULL, NULL);
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameMgrMsg, pyGameMgrMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameMgrMsg, pyGameMgrMsg)
// Module and method definitions
void pyGameMgrMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameMgrMsg);
PYTHON_CLASS_IMPORT_END(m);
}
void pyGameMgrMsg::AddPlasmaConstantsClasses(PyObject* m)
{
PYTHON_ENUM_START(PtGameMgrMsgTypes);
PYTHON_ENUM_ELEMENT(PtGameMgrMsgTypes, kGameMgrInviteReceivedMsg, kSrv2Cli_GameMgr_InviteReceived);
PYTHON_ENUM_ELEMENT(PtGameMgrMsgTypes, kGameMgrInviteRevokedMsg, kSrv2Cli_GameMgr_InviteRevoked);
PYTHON_ENUM_END(m, PtGameMgrMsgTypes);
}
///////////////////////////////////////////////////////////////////////////////
//
// Game manager message subclasses
//
PYTHON_CLASS_DEFINITION(ptGameMgrInviteReceivedMsg, pyGameMgrInviteReceivedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameMgrInviteReceivedMsg, pyGameMgrInviteReceivedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameMgrInviteReceivedMsg)
PYTHON_NO_INIT_DEFINITION(ptGameMgrInviteReceivedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrInviteReceivedMsg, inviterID)
{
return PyLong_FromUnsignedLong(self->fThis->InviterID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrInviteReceivedMsg, gameTypeID)
{
std::wstring retVal = self->fThis->GameTypeID();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrInviteReceivedMsg, newGameID)
{
return PyLong_FromUnsignedLong(self->fThis->NewGameID());
}
PYTHON_START_METHODS_TABLE(ptGameMgrInviteReceivedMsg)
PYTHON_METHOD_NOARGS(ptGameMgrInviteReceivedMsg, inviterID, "Returns the inviter's ID number"),
PYTHON_METHOD_NOARGS(ptGameMgrInviteReceivedMsg, gameTypeID, "Returns the game type ID (as a guid string)"),
PYTHON_METHOD_NOARGS(ptGameMgrInviteReceivedMsg, newGameID, "Returns the new game's ID number"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptGameMgrInviteReceivedMsg, pyGameMgrMsg, "Game manager message when an invite is received");
// required functions for PyObject interoperability
PyObject* pyGameMgrInviteReceivedMsg::New(pfGameMgrMsg* msg)
{
ptGameMgrInviteReceivedMsg *newObj = (ptGameMgrInviteReceivedMsg*)ptGameMgrInviteReceivedMsg_type.tp_new(&ptGameMgrInviteReceivedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_GameMgr_InviteReceived))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameMgrInviteReceivedMsg, pyGameMgrInviteReceivedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameMgrInviteReceivedMsg, pyGameMgrInviteReceivedMsg)
// Module and method definitions
void pyGameMgrInviteReceivedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameMgrInviteReceivedMsg);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////////
PYTHON_CLASS_DEFINITION(ptGameMgrInviteRevokedMsg, pyGameMgrInviteRevokedMsg);
PYTHON_DEFAULT_NEW_DEFINITION(ptGameMgrInviteRevokedMsg, pyGameMgrInviteRevokedMsg)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptGameMgrInviteRevokedMsg)
PYTHON_NO_INIT_DEFINITION(ptGameMgrInviteRevokedMsg)
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrInviteRevokedMsg, inviterID)
{
return PyLong_FromUnsignedLong(self->fThis->InviterID());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrInviteRevokedMsg, gameTypeID)
{
std::wstring retVal = self->fThis->GameTypeID();
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptGameMgrInviteRevokedMsg, newGameID)
{
return PyLong_FromUnsignedLong(self->fThis->NewGameID());
}
PYTHON_START_METHODS_TABLE(ptGameMgrInviteRevokedMsg)
PYTHON_METHOD_NOARGS(ptGameMgrInviteRevokedMsg, inviterID, "Returns the inviter's ID number"),
PYTHON_METHOD_NOARGS(ptGameMgrInviteRevokedMsg, gameTypeID, "Returns the game type ID (as a guid string)"),
PYTHON_METHOD_NOARGS(ptGameMgrInviteRevokedMsg, newGameID, "Returns the new game's ID number"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE_WBASE(ptGameMgrInviteRevokedMsg, pyGameMgrMsg, "Game manager message when an invite is received");
// required functions for PyObject interoperability
PyObject* pyGameMgrInviteRevokedMsg::New(pfGameMgrMsg* msg)
{
ptGameMgrInviteRevokedMsg *newObj = (ptGameMgrInviteRevokedMsg*)ptGameMgrInviteRevokedMsg_type.tp_new(&ptGameMgrInviteRevokedMsg_type, NULL, NULL);
if (msg && (msg->netMsg->messageId == kSrv2Cli_GameMgr_InviteRevoked))
newObj->fThis->message = msg;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptGameMgrInviteRevokedMsg, pyGameMgrInviteRevokedMsg)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptGameMgrInviteRevokedMsg, pyGameMgrInviteRevokedMsg)
// Module and method definitions
void pyGameMgrInviteRevokedMsg::AddPlasmaClasses(PyObject* m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptGameMgrInviteRevokedMsg);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,125 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyAccountManagement
//
// PURPOSE: Python wrapper for account management functions
//
#include "cyAccountManagement.h"
#include "plNetClientComm/plNetClientComm.h"
bool cyAccountManagement::IsSubscriptionActive()
{
const NetCommAccount* account = NetCommGetAccount();
return (account->billingType & kBillingTypePaidSubscriber);
}
PyObject* cyAccountManagement::GetPlayerList()
{
const ARRAY(NetCommPlayer)& playerList = NetCommGetPlayerList();
int numPlayers = NetCommGetPlayerCount();
PyObject* pList = PyList_New(0);
PyObject* visitor = nil;
for (int i = 0; i < numPlayers; ++i)
{
PyObject* playerTuple = PyTuple_New(3);
PyObject* playerName = PyUnicode_FromUnicode((const Py_UNICODE*)playerList[i].playerName, wcslen(playerList[i].playerName));
PyObject* playerId = PyInt_FromLong(playerList[i].playerInt);
PyObject* avatarShape = PyString_FromString(playerList[i].avatarDatasetName);
PyTuple_SetItem(playerTuple, 0, playerName);
PyTuple_SetItem(playerTuple, 1, playerId);
PyTuple_SetItem(playerTuple, 2, avatarShape);
if (visitor || playerList[i].explorer)
PyList_Append(pList, playerTuple);
else
visitor = playerTuple;
}
if (visitor)
{
PyList_Insert(pList, 0, visitor);
}
else
{
Py_INCREF(Py_None);
PyList_Insert(pList, 0, Py_None);
}
return pList;
}
std::wstring cyAccountManagement::GetAccountName()
{
const NetCommAccount* acct = NetCommGetAccount();
if (acct)
return acct->accountName;
else
return L"";
}
void cyAccountManagement::CreatePlayer(const char* playerName, const char* avatar, const char* invitationCode)
{
NetCommCreatePlayer(playerName, avatar, invitationCode, 0, nil);
}
void cyAccountManagement::CreatePlayerW(const wchar_t* playerName, const wchar_t* avatar, const wchar_t* invitationCode)
{
NetCommCreatePlayer(playerName, avatar, invitationCode, 0, nil);
}
void cyAccountManagement::DeletePlayer(unsigned playerId)
{
NetCommDeletePlayer(playerId, nil);
}
void cyAccountManagement::SetActivePlayer(unsigned playerId)
{
NetCommSetActivePlayer(playerId, nil);
}
bool cyAccountManagement::IsActivePlayerSet()
{
return NetCommGetPlayer()->playerInt != 0;
}
void cyAccountManagement::UpgradeVisitorToExplorer(unsigned playerId)
{
NetCommUpgradeVisitorToExplorer(playerId, nil);
}
void cyAccountManagement::ChangePassword(const char* password)
{
wchar* wpassword = StrDupToUnicode(password);
NetCommChangeMyPassword(wpassword);
FREE(wpassword);
}

View File

@ -0,0 +1,59 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyAccountManagement_h
#define cyAccountManagement_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyAccountManagement
//
// PURPOSE: Python wrapper for account management functions
//
#include <python.h>
#include "hsTypes.h"
#include "hsStlUtils.h"
class cyAccountManagement
{
public:
static void AddPlasmaMethods(std::vector<PyMethodDef> &methods);
static void AddPlasmaConstantsClasses(PyObject *m);
static bool IsSubscriptionActive();
static PyObject* GetPlayerList();
static std::wstring GetAccountName();
static void CreatePlayer(const char* playerName, const char* avatar, const char* invitationCode);
static void CreatePlayerW(const wchar_t* playerName, const wchar_t* avatar, const wchar_t* invitationCode);
static void DeletePlayer(unsigned playerId);
static void SetActivePlayer(unsigned playerId);
static bool IsActivePlayerSet();
static void UpgradeVisitorToExplorer(unsigned playerId);
static void ChangePassword(const char* password);
};
#endif

View File

@ -0,0 +1,230 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyAccountManagement.h"
#include "pyGlueHelpers.h"
#include "pyEnum.h"
#include "plMessage/plAccountUpdateMsg.h"
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsSubscriptionActive, "Returns true if the current player is a paying subscriber")
{
PYTHON_RETURN_BOOL(cyAccountManagement::IsSubscriptionActive());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAccountPlayerList, "Returns list of players associated with the current account")
{
return cyAccountManagement::GetPlayerList();
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAccountName, "Returns the account name for the current account")
{
std::wstring name = cyAccountManagement::GetAccountName();
return PyUnicode_FromWideChar(name.c_str(), name.length());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtCreatePlayer, args, "Params: playerName, avatarShape, invitation\nCreates a new player")
{
char* playerName;
char* avatarShape;
char* invitation;
if (!PyArg_ParseTuple(args, "ssz", &playerName, &avatarShape, &invitation))
{
PyErr_SetString(PyExc_TypeError, "PtCreatePlayer expects three strings");
PYTHON_RETURN_ERROR;
}
cyAccountManagement::CreatePlayer(playerName, avatarShape, invitation);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtCreatePlayerW, args, "Params: playerName, avatarShape, invitation\nUnicode version of PtCreatePlayer")
{
PyObject* playerNameObj;
PyObject* avatarShapeObj;
PyObject* invitationObj;
if (!PyArg_ParseTuple(args, "OOO", &playerNameObj, &avatarShapeObj, &invitationObj))
{
PyErr_SetString(PyExc_TypeError, "PtCreatePlayerW expects three unicode strings");
PYTHON_RETURN_ERROR;
}
std::wstring playerName, avatarShape, invitation;
if (PyUnicode_Check(playerNameObj))
{
int strLen = PyUnicode_GetSize(playerNameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)playerNameObj, text, strLen);
text[strLen] = L'\0';
playerName = text;
delete [] text;
}
else if (PyString_Check(playerNameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(playerNameObj);
wchar_t* temp = hsStringToWString(text);
playerName = temp;
delete [] temp;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtCreatePlayerW expects three unicode strings");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(avatarShapeObj))
{
int strLen = PyUnicode_GetSize(avatarShapeObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)avatarShapeObj, text, strLen);
text[strLen] = L'\0';
avatarShape = text;
delete [] text;
}
else if (PyString_Check(avatarShapeObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(avatarShapeObj);
wchar_t* temp = hsStringToWString(text);
avatarShape = temp;
delete [] temp;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtCreatePlayerW expects three unicode strings");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(invitationObj))
{
int strLen = PyUnicode_GetSize(invitationObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)invitationObj, text, strLen);
text[strLen] = L'\0';
invitation = text;
delete [] text;
}
else if (PyString_Check(invitationObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(invitationObj);
wchar_t* temp = hsStringToWString(text);
invitation = temp;
delete [] temp;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtCreatePlayerW expects three unicode strings");
PYTHON_RETURN_ERROR;
}
cyAccountManagement::CreatePlayerW(playerName.c_str(), avatarShape.c_str(), invitation.c_str());
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtDeletePlayer, args, "Params: playerInt\nDeletes a player associated with the current account")
{
unsigned playerInt = 0;
if (!PyArg_ParseTuple(args, "I", &playerInt))
{
PyErr_SetString(PyExc_TypeError, "PtDeletePlayer expects a unsigned int");
PYTHON_RETURN_ERROR;
}
cyAccountManagement::DeletePlayer(playerInt);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetActivePlayer, args, "Params: playerInt\nSets the active player associated with the current account")
{
unsigned playerInt = 0;
if (!PyArg_ParseTuple(args, "I", &playerInt))
{
PyErr_SetString(PyExc_TypeError, "PtSetActivePlayer expects a unsigned int");
PYTHON_RETURN_ERROR;
}
cyAccountManagement::SetActivePlayer(playerInt);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsActivePlayerSet, "Returns whether or not an active player is set")
{
PYTHON_RETURN_BOOL(cyAccountManagement::IsActivePlayerSet());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtUpgradeVisitorToExplorer, args, "Params: playerInt\nUpgrades the player to explorer status")
{
unsigned playerInt = 0;
if (!PyArg_ParseTuple(args, "I", &playerInt))
{
PyErr_SetString(PyExc_TypeError, "PtUpgradeVisitorToExplorer expects a unsigned int");
PYTHON_RETURN_ERROR;
}
cyAccountManagement::UpgradeVisitorToExplorer(playerInt);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtChangePassword, args, "Params: password\nChanges the current account's password")
{
char* password = nil;
if (!PyArg_ParseTuple(args, "s", &password))
{
PyErr_SetString(PyExc_TypeError, "PtChangePassword expects a string");
PYTHON_RETURN_ERROR;
}
cyAccountManagement::ChangePassword(password);
PYTHON_RETURN_NONE;
}
void cyAccountManagement::AddPlasmaMethods(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsSubscriptionActive);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAccountPlayerList);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAccountName);
PYTHON_GLOBAL_METHOD(methods, PtCreatePlayer);
PYTHON_GLOBAL_METHOD(methods, PtCreatePlayerW);
PYTHON_GLOBAL_METHOD(methods, PtDeletePlayer);
PYTHON_GLOBAL_METHOD(methods, PtSetActivePlayer);
PYTHON_GLOBAL_METHOD(methods, PtIsActivePlayerSet);
PYTHON_GLOBAL_METHOD(methods, PtUpgradeVisitorToExplorer);
PYTHON_GLOBAL_METHOD(methods, PtChangePassword);
}
void cyAccountManagement::AddPlasmaConstantsClasses(PyObject *m)
{
PYTHON_ENUM_START(PtAccountUpdateType);
PYTHON_ENUM_ELEMENT(PtAccountUpdateType, kCreatePlayer, plAccountUpdateMsg::kCreatePlayer);
PYTHON_ENUM_ELEMENT(PtAccountUpdateType, kDeletePlayer, plAccountUpdateMsg::kDeletePlayer);
PYTHON_ENUM_ELEMENT(PtAccountUpdateType, kUpgradePlayer, plAccountUpdateMsg::kUpgradePlayer);
PYTHON_ENUM_ELEMENT(PtAccountUpdateType, kActivePlayer, plAccountUpdateMsg::kActivePlayer);
PYTHON_ENUM_ELEMENT(PtAccountUpdateType, kChangePassword, plAccountUpdateMsg::kChangePassword);
PYTHON_ENUM_END(m, PtAccountUpdateType);
}

View File

@ -0,0 +1,614 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyAnimation
//
// PURPOSE: Class wrapper to map animation functions to plasma2 message
//
#include "plgDispatch.h"
#include "plMessage/plAnimCmdMsg.h"
#include "pnMessage/plEventCallbackMsg.h"
#include "cyAnimation.h"
cyAnimation::cyAnimation()
{
fSender = nil;
fAnimName = nil;
fNetForce = false;
}
cyAnimation::cyAnimation(pyKey& sender)
{
SetSender(sender);
fAnimName = nil;
fNetForce = false;
}
// copy constructor
cyAnimation::cyAnimation(const cyAnimation& anim)
{
fSender = anim.fSender;
fRecvr = anim.fRecvr;
// here is why we needed the copy constructor
fAnimName = hsStrcpy(anim.fAnimName); // make our own copy of this string
fNetForce = anim.fNetForce;
}
// clean up on the way out
cyAnimation::~cyAnimation()
{
if (fAnimName != nil )
{
delete [] fAnimName;
fAnimName = nil;
}
}
// setters
void cyAnimation::SetSender(pyKey& sender)
{
fSender = sender.getKey();
}
void cyAnimation::AddRecvr(pyKey& recvr)
{
fRecvr.Append(recvr.getKey());
}
PyObject* cyAnimation::GetFirstRecvr()
{
if ( fRecvr.Count() > 0 )
return pyKey::New(fRecvr[0]);
return nil;
}
void cyAnimation::SetAnimName(const char* name)
{
if ( fAnimName != nil )
delete [] fAnimName;
fAnimName = hsStrcpy(name);
}
void cyAnimation::SetNetForce(hsBool state)
{
// set our flag
fNetForce = state;
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Play
// PARAMETERS :
//
// PURPOSE : Play animation from start to end (whatever is already set)
//
void cyAnimation::Play()
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
// NOTE: The animation modifier will set the animation back to the starting point automatically
// then continue from there
pMsg->SetCmd(plAnimCmdMsg::kGoToBegin);
pMsg->SetCmd(plAnimCmdMsg::kContinue);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Stop
// PARAMETERS :
//
// PURPOSE : Stop an animation
//
void cyAnimation::Stop()
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kStop);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Resume
// PARAMETERS :
//
// PURPOSE : Continue playing animation from wherever it last stopped
//
void cyAnimation::Resume()
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kContinue);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : PlayRange
// PARAMETERS : start - start time for the range
// : end - end time of the range
//
// PURPOSE : Play an animation only from specific time start to end
//
void cyAnimation::PlayRange(hsScalar start, hsScalar end)
{
SkipToTime(start);
PlayToTime(end);
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : PlayToTime
// PARAMETERS : time - where to stop playing animation
//
// PURPOSE : Play (continue) an animation until the specified time is reached
//
void cyAnimation::PlayToTime(hsScalar time)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kPlayToTime);
pMsg->fTime = time;
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : PlayToPercentage
// PARAMETERS : zeroToOne - How far (scale of 0 to 1) to play into the anim
//
// PURPOSE : Play (continue) an animation until the specified point is reached
//
void cyAnimation::PlayToPercentage(hsScalar zeroToOne)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kPlayToPercentage);
pMsg->fTime = zeroToOne;
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : SkipToTime
// PARAMETERS :
//
// PURPOSE : Jump the animation to the specified time
// : Doesn't start or stop playing of animation
//
void cyAnimation::SkipToTime(hsScalar time)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kGoToTime);
pMsg->fTime = time;
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Looped
// PARAMETERS : looped - state to change to
//
// PURPOSE : Set whether the animation is to be looped or not
//
void cyAnimation::Looped(hsBool looped)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
if ( looped )
pMsg->SetCmd(plAnimCmdMsg::kSetLooping);
else
pMsg->SetCmd(plAnimCmdMsg::kUnSetLooping);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Backwards
// PARAMETERS : backwards - state of the backwards flag
//
// PURPOSE : Sets the backwards state for the animation
//
void cyAnimation::Backwards(hsBool backwards)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
if ( backwards )
pMsg->SetCmd(plAnimCmdMsg::kSetBackwards);
else
pMsg->SetCmd(plAnimCmdMsg::kSetForewards);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetLoopStart and SetLoopEnd
// PARAMETERS : value - sets the start or the end of the animation
//
void cyAnimation::SetLoopStart(hsScalar start)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kSetLoopBegin);
pMsg->fLoopBegin = start;
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyAnimation::SetLoopEnd(hsScalar end)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kSetLoopEnd);
pMsg->fLoopEnd = end;
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Speed
// PARAMETERS : speed - speed to set the animation to
//
// PURPOSE : Sets the speed of the animation
// : Doesn't start or stop playing animation
//
void cyAnimation::Speed(hsScalar speed)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(plAnimCmdMsg::kSetSpeed);
pMsg->fSpeed = speed;
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyAnimation::IRunOneCmd(int cmd)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plAnimCmdMsg* pMsg = TRACKED_NEW plAnimCmdMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the notetrack name (if there is one)
if ( fAnimName != nil )
pMsg->SetAnimName(fAnimName);
pMsg->SetCmd(cmd);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyAnimation::SkipToBegin()
{
IRunOneCmd(plAnimCmdMsg::kGoToBegin);
}
void cyAnimation::SkipToEnd()
{
IRunOneCmd(plAnimCmdMsg::kGoToEnd);
}
void cyAnimation::SkipToLoopBegin()
{
IRunOneCmd(plAnimCmdMsg::kGoToLoopBegin);
}
void cyAnimation::SkipToLoopEnd()
{
IRunOneCmd(plAnimCmdMsg::kGoToLoopEnd);
}
// Bump the animation ahead one frame (whatever deltime is)
//
void cyAnimation::IncrementForward()
{
IRunOneCmd(plAnimCmdMsg::kIncrementForward);
}
// Bump the animation back one frame (whatever deltime is)
//
void cyAnimation::IncrementBackward()
{
IRunOneCmd(plAnimCmdMsg::kIncrementBackward);
}

View File

@ -0,0 +1,149 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyAnimation_h
#define cyAnimation_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyAnimation
//
// PURPOSE: Class wrapper to map animation functions to plasma2 message
//
#include "pyKey.h"
#include "hsTemplates.h"
#include <python.h>
#include "pyGlueHelpers.h"
class cyAnimation
{
plKey fSender;
hsTArray<plKey> fRecvr;
char* fAnimName;
hsBool fNetForce;
virtual void IRunOneCmd(int cmd);
protected:
cyAnimation();
cyAnimation(pyKey& sender);
// copy constructor
cyAnimation(const cyAnimation& anim);
public:
// clean up on the way out
~cyAnimation();
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAnimation);
PYTHON_CLASS_NEW_DEFINITION;
static PyObject *New(PyObject *sender);
static PyObject *New(cyAnimation &obj);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyAnimation object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyAnimation); // converts a PyObject to a cyAnimation (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
// setters
virtual void SetSender(pyKey& sender);
virtual void AddRecvr(pyKey& recvr);
virtual void SetAnimName(const char* name);
virtual PyObject* GetFirstRecvr();
virtual void SetNetForce(hsBool state);
// Play animation from start to end (whatever is already set)
//
virtual void Play();
// Stop an animation
//
virtual void Stop();
// Continue playing animation from wherever it last stopped
//
virtual void Resume();
// Play an animation only from specific time start to end
//
virtual void PlayRange(hsScalar start, hsScalar end);
// Play (continue) an animation until the specified time is reached
//
virtual void PlayToTime(hsScalar time);
// Play (continue) an animation until the specified point is reached
//
virtual void PlayToPercentage(hsScalar zeroToOne);
// Jump the animation to the specified time
// Doesn't start or stop playing of animation
//
virtual void SkipToTime(hsScalar time);
// Set whether the animation is to be looped or not
//
virtual void Looped(hsBool looped);
// Sets the backwards state for the animation
//
virtual void Backwards(hsBool backwards);
// Sets the start and end of the looping points in the animation
//
virtual void SetLoopStart(hsScalar start);
virtual void SetLoopEnd(hsScalar end);
// Sets the speed of the animation
// Doesn't start or stop playing animation
//
virtual void Speed(hsScalar speed);
// Jump the animation to the specified time
// Doesn't start or stop playing of animation
//
virtual void SkipToBegin();
virtual void SkipToEnd();
virtual void SkipToLoopBegin();
virtual void SkipToLoopEnd();
// Bump the animation ahead one frame (whatever deltime is)
//
virtual void IncrementForward();
// Bump the animation back one frame (whatever deltime is)
//
virtual void IncrementBackward();
};
#endif // cyAnimation_h

View File

@ -0,0 +1,318 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyAnimation.h"
#include "hsUtils.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptAnimation, cyAnimation);
PYTHON_DEFAULT_NEW_DEFINITION(ptAnimation, cyAnimation)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAnimation)
PYTHON_INIT_DEFINITION(ptAnimation, args, keywords)
{
PyObject *keyObject = NULL;
if (!PyArg_ParseTuple(args, "|O", &keyObject))
{
PyErr_SetString(PyExc_TypeError, "__init__ expects an optional ptKey");
PYTHON_RETURN_INIT_ERROR;
}
if (keyObject == NULL) // no parameter was passed
PYTHON_RETURN_INIT_OK; // nothing to init
if (!pyKey::Check(keyObject))
{
PyErr_SetString(PyExc_TypeError, "__init__ expects an optional ptKey");
PYTHON_RETURN_INIT_ERROR;
}
pyKey *key = pyKey::ConvertFrom(keyObject);
self->fThis->SetSender(*key);
PYTHON_RETURN_INIT_OK;
}
PYTHON_METHOD_DEFINITION(ptAnimation, sender, args)
{
PyObject *keyObject = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObject))
{
PyErr_SetString(PyExc_TypeError, "sender requires a ptKey argument");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObject))
{
PyErr_SetString(PyExc_TypeError, "sender requires a ptKey argument");
PYTHON_RETURN_ERROR;
}
pyKey *key = pyKey::ConvertFrom(keyObject);
self->fThis->SetSender(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, addKey, args)
{
PyObject *keyObject = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObject))
{
PyErr_SetString(PyExc_TypeError, "addKey requires a ptKey argument");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObject))
{
PyErr_SetString(PyExc_TypeError, "addKey requires a ptKey argument");
PYTHON_RETURN_ERROR;
}
pyKey *key = pyKey::ConvertFrom(keyObject);
self->fThis->AddRecvr(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, netForce, args)
{
char forceFlag;
if (!PyArg_ParseTuple(args, "b", &forceFlag))
{
PyErr_SetString(PyExc_TypeError, "netForce requires a boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetNetForce(forceFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, setAnimName, args)
{
char *name = NULL;
if (!PyArg_ParseTuple(args, "s", &name)) // name points at the internal buffer SO DON'T DELETE IT
{
PyErr_SetString(PyExc_TypeError, "setAnimName requires a string argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAnimName(name);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, play, Play)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, stop, Stop)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, resume, Resume)
PYTHON_METHOD_DEFINITION(ptAnimation, playRange, args)
{
float start, end;
if (!PyArg_ParseTuple(args, "ff", &start, &end))
{
PyErr_SetString(PyExc_TypeError, "playRange requires two floating-point arguments");
PYTHON_RETURN_ERROR;
}
self->fThis->PlayRange(start, end);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, playToTime, args)
{
float time;
if (!PyArg_ParseTuple(args, "f", &time))
{
PyErr_SetString(PyExc_TypeError, "playToTime requires one floating-point argument");
PYTHON_RETURN_ERROR;
}
self->fThis->PlayToTime(time);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, playToPercentage, args)
{
float percent;
if (!PyArg_ParseTuple(args, "f", &percent))
{
PyErr_SetString(PyExc_TypeError, "playToPercentage requires one floating-point argument");
PYTHON_RETURN_ERROR;
}
self->fThis->PlayToPercentage(percent);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, skipToTime, args)
{
float time;
if (!PyArg_ParseTuple(args, "f", &time))
{
PyErr_SetString(PyExc_TypeError, "skipToTime requires one floating-point argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SkipToTime(time);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, looped, args)
{
char looped;
if (!PyArg_ParseTuple(args, "b", &looped))
{
PyErr_SetString(PyExc_TypeError, "looped requires a boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->Looped(looped != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, backwards, args)
{
char backwards;
if (!PyArg_ParseTuple(args, "b", &backwards))
{
PyErr_SetString(PyExc_TypeError, "backwards requires a boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->Backwards(backwards != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, setLoopStart, args)
{
float time;
if (!PyArg_ParseTuple(args, "f", &time))
{
PyErr_SetString(PyExc_TypeError, "setLoopStart requires one floating-point argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetLoopStart(time);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, setLoopEnd, args)
{
float time;
if (!PyArg_ParseTuple(args, "f", &time))
{
PyErr_SetString(PyExc_TypeError, "setLoopEnd requires one floating-point argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetLoopEnd(time);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAnimation, speed, args)
{
float speed;
if (!PyArg_ParseTuple(args, "f", &speed))
{
PyErr_SetString(PyExc_TypeError, "speed requires one floating-point argument");
PYTHON_RETURN_ERROR;
}
self->fThis->Speed(speed);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, skipToBegin, SkipToBegin)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, skipToEnd, SkipToEnd)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, skipToLoopBegin, SkipToLoopBegin)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, skipToLoopEnd, SkipToLoopEnd)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, incrementForward, IncrementForward)
PYTHON_BASIC_METHOD_DEFINITION(ptAnimation, incrementBackward, IncrementBackward)
PYTHON_METHOD_DEFINITION_NOARGS(ptAnimation, getFirstKey)
{
PyObject *key = self->fThis->GetFirstRecvr();
if (key == NULL)
PYTHON_RETURN_NONE;
return key;
}
PYTHON_START_METHODS_TABLE(ptAnimation)
PYTHON_METHOD(ptAnimation, sender, "Params: selfKey\nSets the sender of the messages being sent to the animation modifier"),
PYTHON_METHOD(ptAnimation, addKey, "Params: key\nAdds an animation modifier to the list of receiver keys"),
PYTHON_METHOD(ptAnimation, netForce, "Params: forceFlag\nSpecify whether this object needs to use messages that are forced to the network\n"
"- This is to be used if your Python program is running on only one client\n"
"Such as a game master, only running on the client that owns a particular object"),
PYTHON_METHOD(ptAnimation, setAnimName, "Params: name\nSets the animation notetrack name (or (Entire Animation))"),
PYTHON_BASIC_METHOD(ptAnimation, play, "Plays the animation"),
PYTHON_BASIC_METHOD(ptAnimation, stop, "Stops the animation"),
PYTHON_BASIC_METHOD(ptAnimation, resume, "Resumes the animation from where it was stopped last"),
PYTHON_METHOD(ptAnimation, playRange, "Params: start,end\nPlay the animation from start to end"),
PYTHON_METHOD(ptAnimation, playToTime, "Params: time\nPlay the animation to the specified time"),
PYTHON_METHOD(ptAnimation, playToPercentage, "Params: zeroToOne\nPlay the animation to the specified percentage (0 to 1)"),
PYTHON_METHOD(ptAnimation, skipToTime, "Params: time\nSkip the animation to time (don't play)"),
PYTHON_METHOD(ptAnimation, looped, "Params: loopedFlag\nTurn on and off looping of the animation"),
PYTHON_METHOD(ptAnimation, backwards, "Params: backwardsFlag\nTurn on and off playing the animation backwards"),
PYTHON_METHOD(ptAnimation, setLoopStart, "Params: loopStart\nSets the loop starting position\n"
"- 'loopStart' is the number of seconds from the absolute beginning of the animation"),
PYTHON_METHOD(ptAnimation, setLoopEnd, "Params: loopEnd\nSets the loop ending position\n"
"- 'loopEnd' is the number of seconds from the absolute beginning of the animation"),
PYTHON_METHOD(ptAnimation, speed, "Params: speed\nSets the animation playback speed"),
PYTHON_BASIC_METHOD(ptAnimation, skipToBegin, "Skip to the beginning of the animation (don't play)"),
PYTHON_BASIC_METHOD(ptAnimation, skipToEnd, "Skip to the end of the animation (don't play)"),
PYTHON_BASIC_METHOD(ptAnimation, skipToLoopBegin, "Skip to the beginning of the animation loop (don't play)"),
PYTHON_BASIC_METHOD(ptAnimation, skipToLoopEnd, "Skip to the end of the animation loop (don't play)"),
PYTHON_BASIC_METHOD(ptAnimation, incrementForward, "Step the animation forward a frame"),
PYTHON_BASIC_METHOD(ptAnimation, incrementBackward, "Step the animation backward a frame"),
PYTHON_METHOD_NOARGS(ptAnimation, getFirstKey, "This will return a ptKey object that is the first receiver (target)\n"
"However, if the parent is not a modifier or not loaded, then None is returned."),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptAnimation, "Params: key=None\nPlasma animation class");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptAnimation, cyAnimation)
PyObject *cyAnimation::New(PyObject *sender)
{
ptAnimation *newObj = (ptAnimation*)ptAnimation_type.tp_new(&ptAnimation_type, NULL, NULL);
pyKey *key = pyKey::ConvertFrom(sender);
newObj->fThis->SetSender(*key);
newObj->fThis->fAnimName = nil;
newObj->fThis->fNetForce = false;
return (PyObject*)newObj;
}
PyObject *cyAnimation::New(cyAnimation &obj)
{
ptAnimation *newObj = (ptAnimation*)ptAnimation_type.tp_new(&ptAnimation_type, NULL, NULL);
newObj->fThis->fSender = obj.fSender;
newObj->fThis->fRecvr = obj.fRecvr;
newObj->fThis->fAnimName = hsStrcpy(obj.fAnimName);
newObj->fThis->fNetForce = obj.fNetForce;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptAnimation, cyAnimation)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAnimation, cyAnimation)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyAnimation::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAnimation);
PYTHON_CLASS_IMPORT_END(m);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,555 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyAvatar_h
#define cyAvatar_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyAvatar
//
// PURPOSE: Class wrapper to map animation functions to plasma2 message
//
#include "hsStlUtils.h"
#include "hsTemplates.h"
#include "hsBitVector.h"
#include "pnKeyedObject/plKey.h"
#include <python.h>
#include "pyGlueHelpers.h"
class plKey;
class pyKey;
class pySceneObject;
class pyColor;
class plMipmap;
class plClothingItem;
class plArmatureMod;
class plMorphSequence;
class cyAvatar
{
protected:
plKey fSender;
hsTArray<plKey> fRecvr;
hsBool fNetForce;
virtual const plArmatureMod* IFindArmatureMod(plKey avObj);
virtual plKey IFindArmatureModKey(plKey avObj);
// XX static bool IEnterGenericMode(const char *enterAnim, const char *idleAnim, const char *exitAnim, bool autoExit);
// XX static bool IExitTopmostGenericMode();
protected:
cyAvatar() {}
cyAvatar(plKey sender,plKey recvr=nil);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAvatar);
PYTHON_CLASS_NEW_DEFINITION;
static PyObject* New(PyObject* sender, PyObject* recvr = nil);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyAvatar object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyAvatar); // converts a PyObject to a cyAvatar (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
static void AddPlasmaMethods(std::vector<PyMethodDef> &methods);
static void AddPlasmaConstantsClasses(PyObject *m);
// setters
void SetSender(plKey &sender);
void AddRecvr(plKey &recvr);
virtual void SetNetForce(hsBool state);
// oneShot Avatar (must already be there)
virtual void OneShot(pyKey &seekKey, float duration, hsBool usePhysics,
const char *animName, hsBool drivable, hsBool reversible);
// oneShot Avatar
virtual void RunBehavior(pyKey &behKey, hsBool netForce, hsBool netProp);
virtual void RunBehaviorAndReply(pyKey& behKey, pyKey& replyKey, hsBool netForce, hsBool netProp);
// for the multistage behaviors
virtual void NextStage(pyKey &behKey, hsScalar transTime, hsBool setTime, hsScalar newTime,
hsBool setDirection, bool isForward, hsBool netForce);
virtual void PreviousStage(pyKey &behKey, hsScalar transTime, hsBool setTime, hsScalar newTime,
hsBool setDirection, bool isForward, hsBool netForce);
virtual void GoToStage(pyKey &behKey, Int32 stage, hsScalar transTime, hsBool setTime, hsScalar newTime,
hsBool setDirection, bool isForward, hsBool netForce);
// static behavior functions:
static void SetLoopCount(pyKey &behKey, Int32 stage, Int32 loopCount, hsBool netForce);
virtual void SetSenderKey(pyKey &pKey);
// seek Avatar (must already be there)
//virtual void Seek(pyKey &seekKey, float duration, hsBool usePhysics);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetAvatarClothingGroup
// PARAMETERS :
//
// PURPOSE : Return what clothing group the avatar is in
//
virtual Int32 GetAvatarClothingGroup();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetEntireClothingList
// PARAMETERS :
//
// PURPOSE : Return a list of the wearable items for this avatar of that clothing_type
//
virtual std::vector<std::string> GetEntireClothingList(Int32 clothing_type);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetClosetClothingList
// PARAMETERS :
//
// PURPOSE : Return a list of the wearable items for this avatar of that clothing_type
//
virtual std::vector<PyObject*> GetClosetClothingList(Int32 clothing_type);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetAvatarClothingList
// PARAMETERS :
//
// PURPOSE : Return a list of items being worn by this avatar
//
virtual std::vector<PyObject*> GetAvatarClothingList();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetWardrobeClothingList
// PARAMETERS :
//
// PURPOSE : Return a list of items that are in the avatars closet
//
virtual std::vector<PyObject*> GetWardrobeClothingList();
/////////////////////////////////////////////////////////////////////////////
//
// Function : AddWardrobeClothingItem
// PARAMETERS : clothing_name - the name of the clothing item to add to your wardrobe
// : tint1 - layer one color
// : tint2 - layer two color
//
// PURPOSE : To add a clothing item to the avatar's wardrobe (closet)
//
virtual void AddWardrobeClothingItem(const char* clothing_name,pyColor& tint1,pyColor& tint2);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetUniqueMeshList
// PARAMETERS : clothing_type - the type of clothing to get
//
// PURPOSE : Return a list of unique clothing items (each has a different mesh)
// : that belong to the specific type
//
virtual std::vector<PyObject*> GetUniqueMeshList(Int32 clothing_type);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetAllWithSameMesh
// PARAMETERS : clothing_name - the name of the mesh to get the textures of
//
// PURPOSE : Return a list of clothing items that have the same mesh as
// : the item passed in
//
virtual std::vector<PyObject*> GetAllWithSameMesh(const char* clothing_name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetMatchingClothingItem
// PARAMETERS :
//
// PURPOSE : Return the clothing item that matches this one
//
virtual PyObject* GetMatchingClothingItem(const char* clothing_name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : WearClothingItem
// PARAMETERS :
//
// PURPOSE : Wear a particular piece of clothing based on name of clothing item
// : returns 0, if clothing item was not found
//
virtual hsBool WearClothingItem(const char* clothing_name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RemoveClothingItem
// PARAMETERS :
//
// PURPOSE : Remove (take off) a particular piece of clothing based on name of clothing item
// : returns 0, if clothing item was not found
//
virtual hsBool RemoveClothingItem(const char* clothing_name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TintClothingItem
// PARAMETERS :
//
// PURPOSE : Tint a clothing item, i.e. change the color of it
//
virtual hsBool TintClothingItem(const char* clothing_name, pyColor& tint);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TintClothingItemLayer
// PARAMETERS : clothing_name - name of the clothing item to change the color of
// : tint - what color to change it to
// : layer - which layer to change (1 or 2)
//
// PURPOSE : Tint a clothing item, i.e. change the color of it
//
virtual hsBool TintClothingItemLayer(const char* clothing_name, pyColor& tint, UInt8 layer);
/////////////////////////////////////////////////////////////////////////////
//
// Function : WearClothingItem
// PARAMETERS :
//
// PURPOSE : Wear a particular piece of clothing based on name of clothing item
// : returns 0, if clothing item was not found
//
virtual hsBool WearClothingItemU(const char* clothing_name, hsBool update);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RemoveClothingItem
// PARAMETERS :
//
// PURPOSE : Remove (take off) a particular piece of clothing based on name of clothing item
// : returns 0, if clothing item was not found
//
virtual hsBool RemoveClothingItemU(const char* clothing_name, hsBool update);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TintClothingItem
// PARAMETERS :
//
// PURPOSE : Tint a clothing item, i.e. change the color of it
//
virtual hsBool TintClothingItemU(const char* clothing_name, pyColor& tint, hsBool update);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TintClothingItemLayer
// PARAMETERS : clothing_name - name of the clothing item to change the color of
// : tint - what color to change it to
// : whatpart - which layer to change (1 or 2)
//
// PURPOSE : Tint a clothing item, i.e. change the color of it
//
virtual hsBool TintClothingItemLayerU(const char* clothing_name, pyColor& tint, UInt8 layer, hsBool update);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetClothingItemParameterString
// PARAMETERS :
//
// PURPOSE : Get the custom parameter string for a clothing item
//
virtual const char* GetClothingItemParameterString(const char* clothing_name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetTintClothingItem
// PARAMETERS :
//
// PURPOSE : Get the tint a clothing item, i.e. change the color of it
//
virtual PyObject* GetTintClothingItem(const char* clothing_name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetTintClothingItem
// PARAMETERS :
//
// PURPOSE : Get the tint a clothing item, i.e. change the color of it
//
virtual PyObject* GetTintClothingItemL(const char* clothing_name, UInt8 layer);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TintSkin
// PARAMETERS :
//
// PURPOSE : Tint the skin of the player's avatar
//
virtual void TintSkin(pyColor& tint);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TintSkinU
// PARAMETERS :
//
// PURPOSE : Tint the skin of the player's avatar with optional update flag
//
virtual void TintSkinU(pyColor& tint, hsBool update);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetTintSkin
// PARAMETERS :
//
// PURPOSE : Get the tint of the skin of the player's avatar
//
virtual PyObject* GetTintSkin();
virtual plMorphSequence* LocalMorphSequence();
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetMorph
// PARAMETERS : clothing_name - the name of the clothing to morph
// : layer - the layer to affect
// : value - what the new value should be (clipped between -1 and 1)
//
// PURPOSE : Set the morph value of a specific layer of clothing
//
virtual void SetMorph(const char* clothing_name, UInt8 layer, float value);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetMorph
// PARAMETERS : clothing_name - the name of the clothing to get the vaule from
// : layer - the layer to get the value from
//
// PURPOSE : Returns the current morph value of the specific layer of clothing
//
virtual float GetMorph(const char* clothing_name, UInt8 layer);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetSkinBlend
// PARAMETERS : layer - the layer to affect
// : value - what the new value should be (clipped between 0 and 1)
//
// PURPOSE : Set the skin blend for the specified layer
//
virtual void SetSkinBlend(UInt8 layer, float value);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetSkinBlend
// PARAMETERS : layer - the layer to get the blend for
//
// PURPOSE : Returns the current layer's skin blend
//
virtual float GetSkinBlend(UInt8 layer);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SaveClothing
// PARAMETERS :
//
// PURPOSE : Saves the current clothing to the vault (including morphs)
//
virtual void SaveClothing();
/////////////////////////////////////////////////////////////////////////////
//
// Function : EnterSubWorld
// PARAMETERS : object - a sceneobject that is in the subworld
//
// PURPOSE : Place the Avatar into the subworld of the sceneobject specified
//
virtual void EnterSubWorld(pySceneObject& object);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ExitSubWorld
// PARAMETERS : (none)
//
// PURPOSE : Exit the avatar from the subworld, back into the ... <whatever> world
//
virtual void ExitSubWorld();
virtual void PlaySimpleAnimation(const char* animName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ChangeAvatar
// PARAMETERS : gender name - is a string of the name of the gender to go to
//
// PURPOSE : Change the local avatar's gender.
//
// Valid genders:
// Male
// Female
//
static void ChangeAvatar(const char* genderName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ChangePlayerName
// PARAMETERS : name - is a string of the new name for the player
//
// PURPOSE : Change the local player's avatar name
//
static void ChangePlayerName(const char* playerName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : Emote
// PARAMETERS : emoteName - name of the emote to play on the avatar
//
// PURPOSE : plays an emote on the local avatar (net propagated)
//
static bool Emote(const char* emoteName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : Sit
// PARAMETERS : none
//
// PURPOSE : Makes the avatar sit down on the ground where they are.
// The avatar will automatically stand when the user tries to move.
//
static bool Sit();
/////////////////////////////////////////////////////////////////////////////
//
// Function : EnterKiMode
// PARAMETERS : none
//
// PURPOSE : Makes the avatar appear to be using the ki.
//
static bool EnterKiMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : ExitKiMode
// PARAMETERS : none
//
// PURPOSE : Makes the avatar stop appearing to use the ki.
// May cause problems if EnterKiMode() was not called earlier.
//
static bool ExitKiMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : EnterAFKMode
// PARAMETERS : none
//
// PURPOSE : Tell the avatar to enter the AFK mode (sitting, head down)
//
static bool EnterAFKMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : ExitKiMode
// PARAMETERS : none
//
// PURPOSE : Tell the avatar to exit the AFK mode
// May cause problems if EnterKiMode() was not called earlier.
//
static bool ExitAFKMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : EnterPBMode
// PARAMETERS : none
//
// PURPOSE : Enter the personal book mode...stay until further notice.
//
static bool cyAvatar::EnterPBMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : ExitPBMode
// PARAMETERS : none
//
// PURPOSE : Leave the personal book mode. Currently leaves any mode; will become
// : more specific in future version
//
static bool cyAvatar::ExitPBMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetCurrentMode()
// PARAMETERS : none
//
// PURPOSE : Leave the personal book mode. Currently leaves any mode; will become
// : more specific in future version
//
int GetCurrentMode();
/////////////////////////////////////////////////////////////////////////////
//
// Function : (En/Dis)ableMovementControls()
// PARAMETERS : none
//
// PURPOSE : Suspend input on the local avatar
//
static void EnableMovementControls();
static void DisableMovementControls();
static void EnableMouseMovement();
static void DisableMouseMovement();
static void EnableAvatarJump();
static void DisableAvatarJump();
static void EnableForwardMovement();
static void DisableForwardMovement();
static bool LocalAvatarRunKeyDown();
static bool LocalAvatarIsMoving();
static void SetMouseTurnSensitivity(hsScalar val);
static hsScalar GetMouseTurnSensitivity();
static void SpawnNext();
/////////////////////////////////////////////////////////////////////////////
//
// Function : RegisterForBehaviorNotify()
// PARAMETERS : none
//
// PURPOSE : To register for notifies from the avatar for any kind of behavior notify
//
void RegisterForBehaviorNotify(pyKey &selfKey);
/////////////////////////////////////////////////////////////////////////////
//
// Function : UnRegisterForBehaviorNotify()
// PARAMETERS : none
//
// PURPOSE : To remove the registeration for notifies from the avatar
//
void UnRegisterForBehaviorNotify(pyKey &selfKey);
static hsBool IsCurrentBrainHuman();
};
#endif // cyAvatar_h

View File

@ -0,0 +1,886 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyAvatar.h"
#include "pyKey.h"
#include "pyEnum.h"
#include "pyColor.h"
#include "pySceneObject.h"
#include "plAvatar/plAvBrainHuman.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptAvatar, cyAvatar);
PYTHON_DEFAULT_NEW_DEFINITION(ptAvatar, cyAvatar);
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAvatar);
PYTHON_NO_INIT_DEFINITION(ptAvatar);
PYTHON_METHOD_DEFINITION(ptAvatar, netForce, args)
{
char forceFlag;
if (!PyArg_ParseTuple(args, "b", &forceFlag))
{
PyErr_SetString(PyExc_TypeError, "netForce expects a boolean");
PYTHON_RETURN_ERROR;
}
self->fThis->SetNetForce(forceFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, oneShot, args)
{
PyObject* keyObj = NULL;
float duration;
char usePhysics;
char* animName = NULL;
char drivable, reversable;
if (!PyArg_ParseTuple(args, "Ofbsbb", &keyObj, &duration, &usePhysics, &animName, &drivable, &reversable))
{
PyErr_SetString(PyExc_TypeError, "oneShot expects a ptKey, float, boolean, string, and two booleans");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "oneShot expects a ptKey, float, boolean, string, and two booleans");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
std::string animNameStr = animName; // convert to string (for safety)
self->fThis->OneShot(*key, duration, usePhysics != 0, animNameStr.c_str(), drivable != 0, reversable != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, runBehavior, args)
{
PyObject* keyObj = NULL;
char netForce;
char netProp = 1;
if (!PyArg_ParseTuple(args, "Ob|b", &keyObj, &netForce, &netProp))
{
PyErr_SetString(PyExc_TypeError, "runBehavior expects a ptKey and a boolean and an optional boolean");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "runBehavior expects a ptKey and a boolean and an optional boolean");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->RunBehavior(*key, netForce != 0, netProp != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, runBehaviorSetNotify, args)
{
PyObject* behKeyObj = NULL;
PyObject* replyKeyObj = NULL;
char netForce;
char netProp = 1;
if (!PyArg_ParseTuple(args, "OOb|b", &behKeyObj, &replyKeyObj, &netForce, &netProp))
{
PyErr_SetString(PyExc_TypeError, "runBehaviorSetNotify expects two ptKeys and a boolean and an optional boolean");
PYTHON_RETURN_ERROR;
}
if ((!pyKey::Check(behKeyObj)) || (!pyKey::Check(replyKeyObj)))
{
PyErr_SetString(PyExc_TypeError, "runBehaviorSetNotify expects two ptKeys and a boolean and an optional boolean");
PYTHON_RETURN_ERROR;
}
pyKey* behKey = pyKey::ConvertFrom(behKeyObj);
pyKey* replyKey = pyKey::ConvertFrom(replyKeyObj);
self->fThis->RunBehaviorAndReply(*behKey, *replyKey, netForce != 0, netProp != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, nextStage, args)
{
PyObject* keyObj = NULL;
float transTime;
char setTime;
float newTime;
char setDirection, isForward, netForce;
if (!PyArg_ParseTuple(args, "Ofbfbbb", &keyObj, &transTime, &setTime, &newTime, &setDirection, &isForward, &netForce))
{
PyErr_SetString(PyExc_TypeError, "nextStage expects a ptkey, float, bool, float, and three booleans");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "nextStage expects a ptkey, float, bool, float, and three booleans");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->NextStage(*key, transTime, setTime != 0, newTime, setDirection != 0, isForward != 0, netForce != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, previousStage, args)
{
PyObject* keyObj = NULL;
float transTime;
char setTime;
float newTime;
char setDirection, isForward, netForce;
if (!PyArg_ParseTuple(args, "Ofbfbbb", &keyObj, &transTime, &setTime, &newTime, &setDirection, &isForward, &netForce))
{
PyErr_SetString(PyExc_TypeError, "previousStage expects a ptkey, float, bool, float, and three booleans");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "previousStage expects a ptkey, float, bool, float, and three booleans");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->PreviousStage(*key, transTime, setTime != 0, newTime, setDirection != 0, isForward != 0, netForce != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, gotoStage, args)
{
PyObject* keyObj = NULL;
long stage;
float transTime;
char setTime;
float newTime;
char setDirection, isForward, netForce;
if (!PyArg_ParseTuple(args, "Olfbfbbb", &keyObj, &stage, &transTime, &setTime, &newTime, &setDirection, &isForward, &netForce))
{
PyErr_SetString(PyExc_TypeError, "previousStage expects a ptkey, long, float, bool, float, and three booleans");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "previousStage expects a ptkey, long, float, bool, float, and three booleans");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->GoToStage(*key, stage, transTime, setTime != 0, newTime, setDirection != 0, isForward != 0, netForce != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAvatar, getAvatarClothingGroup)
{
return PyLong_FromLong(self->fThis->GetAvatarClothingGroup());
}
PYTHON_METHOD_DEFINITION(ptAvatar, getEntireClothingList, args)
{
long clothingType;
if (!PyArg_ParseTuple(args, "l", &clothingType))
{
PyErr_SetString(PyExc_TypeError, "getEntireClothingList expects a long");
PYTHON_RETURN_ERROR;
}
std::vector<std::string> clothingList = self->fThis->GetEntireClothingList(clothingType);
PyObject* retVal = PyList_New(clothingList.size());
for (int i = 0; i < clothingList.size(); i++)
PyList_SetItem(retVal, i, PyString_FromString(clothingList[i].c_str()));
return retVal;
}
PYTHON_METHOD_DEFINITION(ptAvatar, getClosetClothingList, args)
{
long clothingType;
if (!PyArg_ParseTuple(args, "l", &clothingType))
{
PyErr_SetString(PyExc_TypeError, "getClosetCothingList expects a long");
PYTHON_RETURN_ERROR;
}
std::vector<PyObject*> clothingList = self->fThis->GetClosetClothingList(clothingType);
PyObject* retVal = PyList_New(clothingList.size());
for (int i = 0; i < clothingList.size(); i++)
PyList_SetItem(retVal, i, clothingList[i]); // steals the ref, so no need to decref
return retVal;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAvatar, getAvatarClothingList)
{
std::vector<PyObject*> clothingList = self->fThis->GetAvatarClothingList();
PyObject* retVal = PyList_New(clothingList.size());
for (int i = 0; i < clothingList.size(); i++)
PyList_SetItem(retVal, i, clothingList[i]); // steals the ref, so no need to decref
return retVal;
}
PYTHON_METHOD_DEFINITION(ptAvatar, getMatchingClothingItem, args)
{
char* clothingName = NULL;
if (!PyArg_ParseTuple(args, "s", &clothingName))
{
PyErr_SetString(PyExc_TypeError, "getMatchingClothingItem expects a string");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
return self->fThis->GetMatchingClothingItem(clothingNameStr.c_str());
}
PYTHON_METHOD_DEFINITION(ptAvatar, wearClothingItem, args)
{
char* clothingName = NULL;
char update = 1;
if (!PyArg_ParseTuple(args, "s|b", &clothingName, &update))
{
PyErr_SetString(PyExc_TypeError, "wearClothingItem expects a string and an optional boolean");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
PYTHON_RETURN_BOOL(self->fThis->WearClothingItemU(clothingNameStr.c_str(), update != 0));
}
PYTHON_METHOD_DEFINITION(ptAvatar, removeClothingItem, args)
{
char* clothingName = NULL;
char update = 1;
if (!PyArg_ParseTuple(args, "s|b", &clothingName, &update))
{
PyErr_SetString(PyExc_TypeError, "removeClothingItem expects a string and an optional boolean");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
PYTHON_RETURN_BOOL(self->fThis->RemoveClothingItemU(clothingNameStr.c_str(), update != 0));
}
PYTHON_METHOD_DEFINITION(ptAvatar, tintClothingItem, args)
{
char* clothingName = NULL;
PyObject* tintObj = NULL;
char update = 1;
if (!PyArg_ParseTuple(args, "sO|b", &clothingName, &tintObj, &update))
{
PyErr_SetString(PyExc_TypeError, "tintClothingItem expects a string, a ptColor, and an optional boolean");
PYTHON_RETURN_ERROR;
}
if (!pyColor::Check(tintObj))
{
PyErr_SetString(PyExc_TypeError, "tintClothingItem expects a string, a ptColor, and an optional boolean");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
pyColor* tint = pyColor::ConvertFrom(tintObj);
PYTHON_RETURN_BOOL(self->fThis->TintClothingItemU(clothingNameStr.c_str(), *tint, update != 0));
}
PYTHON_METHOD_DEFINITION(ptAvatar, tintClothingItemLayer, args)
{
char* clothingName = NULL;
PyObject* tintObj = NULL;
unsigned char layer;
char update = 1;
if (!PyArg_ParseTuple(args, "sOB|b", &clothingName, &tintObj, &layer, &update))
{
PyErr_SetString(PyExc_TypeError, "tintClothingItemLayer expects a string, a ptColor, an unsigned 8-bit int, and an optional boolean");
PYTHON_RETURN_ERROR;
}
if (!pyColor::Check(tintObj))
{
PyErr_SetString(PyExc_TypeError, "tintClothingItemLayer expects a string, a ptColor, an unsigned 8-bit int, and an optional boolean");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
pyColor* tint = pyColor::ConvertFrom(tintObj);
PYTHON_RETURN_BOOL(self->fThis->TintClothingItemLayerU(clothingNameStr.c_str(), *tint, layer, update != 0));
}
PYTHON_METHOD_DEFINITION(ptAvatar, getTintClothingItem, args)
{
char* clothingName = NULL;
unsigned char layer = 1;
if (!PyArg_ParseTuple(args, "s|B", &clothingName, &layer))
{
PyErr_SetString(PyExc_TypeError, "getTintClothingItem expects a string and an optional unsigned 8-bit int");
PYTHON_RETURN_NONE;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
return self->fThis->GetTintClothingItemL(clothingNameStr.c_str(), layer);
}
PYTHON_METHOD_DEFINITION(ptAvatar, tintSkin, args)
{
PyObject* tintObj = NULL;
char update = 1;
if (!PyArg_ParseTuple(args, "O|b", &tintObj, &update))
{
PyErr_SetString(PyExc_TypeError, "tintSkin expects a ptColor and an optional boolean");
PYTHON_RETURN_NONE;
}
if (!pyColor::Check(tintObj))
{
PyErr_SetString(PyExc_TypeError, "tintSkin expects a ptColor and an optional boolean");
PYTHON_RETURN_NONE;
}
pyColor* tint = pyColor::ConvertFrom(tintObj);
self->fThis->TintSkinU(*tint, update != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAvatar, getTintSkin)
{
return self->fThis->GetTintSkin();
}
PYTHON_METHOD_DEFINITION(ptAvatar, enterSubWorld, args)
{
PyObject* sceneObj = NULL;
if (!PyArg_ParseTuple(args, "O", &sceneObj))
{
PyErr_SetString(PyExc_TypeError, "enterSubWorld expects a ptSceneObject");
PYTHON_RETURN_ERROR;
}
if (!pySceneObject::Check(sceneObj))
{
PyErr_SetString(PyExc_TypeError, "enterSubWorld expects a ptSceneObject");
PYTHON_RETURN_ERROR;
}
pySceneObject* target = pySceneObject::ConvertFrom(sceneObj);
self->fThis->EnterSubWorld(*target);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptAvatar, exitSubWorld, ExitSubWorld)
PYTHON_METHOD_DEFINITION(ptAvatar, setMorph, args)
{
char* clothingName = NULL;
unsigned char layer;
float value;
if (!PyArg_ParseTuple(args, "sBf", &clothingName, &layer, &value))
{
PyErr_SetString(PyExc_TypeError, "setMorph expects a string, unsigned 8-bit int, and a float");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
self->fThis->SetMorph(clothingNameStr.c_str(), layer, value);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, getMorph, args)
{
char* clothingName = NULL;
unsigned char layer;
if (!PyArg_ParseTuple(args, "sB", &clothingName, &layer))
{
PyErr_SetString(PyExc_TypeError, "getMorph expects a string, and an unsignd 8-bit int");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
return PyFloat_FromDouble(self->fThis->GetMorph(clothingNameStr.c_str(), layer));
}
PYTHON_METHOD_DEFINITION(ptAvatar, setSkinBlend, args)
{
unsigned char layer;
float value;
if (!PyArg_ParseTuple(args, "Bf", &layer, &value))
{
PyErr_SetString(PyExc_TypeError, "setSkinBlend expects an unsigned 8-bit int and a float");
PYTHON_RETURN_ERROR;
}
self->fThis->SetSkinBlend(layer, value);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, getSkinBlend, args)
{
unsigned char layer;
if (!PyArg_ParseTuple(args, "B", &layer))
{
PyErr_SetString(PyExc_TypeError, "getSkinBlend expects an unsigned 8-bit int");
PYTHON_RETURN_ERROR;
}
return PyFloat_FromDouble(self->fThis->GetSkinBlend(layer));
}
PYTHON_BASIC_METHOD_DEFINITION(ptAvatar, saveClothing, SaveClothing)
PYTHON_METHOD_DEFINITION(ptAvatar, getUniqueMeshList, args)
{
long clothingType;
if (!PyArg_ParseTuple(args, "l", &clothingType))
{
PyErr_SetString(PyExc_TypeError, "getUniqueMeshList expects a long");
PYTHON_RETURN_ERROR;
}
std::vector<PyObject*> clothingList = self->fThis->GetUniqueMeshList(clothingType);
PyObject* retVal = PyList_New(clothingList.size());
for (int i = 0; i < clothingList.size(); i++)
PyList_SetItem(retVal, i, clothingList[i]); // steals the ref, so no need to decref
return retVal;
}
PYTHON_METHOD_DEFINITION(ptAvatar, getAllWithSameMesh, args)
{
char* clothingName = NULL;
if (!PyArg_ParseTuple(args, "s", &clothingName))
{
PyErr_SetString(PyExc_TypeError, "getAllWithSameMesh expects a string");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
std::vector<PyObject*> clothingList = self->fThis->GetAllWithSameMesh(clothingNameStr.c_str());
PyObject* retVal = PyList_New(clothingList.size());
for (int i = 0; i < clothingList.size(); i++)
PyList_SetItem(retVal, i, clothingList[i]); // steals the ref, so no need to decref
return retVal;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAvatar, getWardrobeClothingList)
{
std::vector<PyObject*> clothingList = self->fThis->GetWardrobeClothingList();
PyObject* retVal = PyList_New(clothingList.size());
for (int i = 0; i < clothingList.size(); i++)
PyList_SetItem(retVal, i, clothingList[i]); // steals the ref, so no need to decref
return retVal;
}
PYTHON_METHOD_DEFINITION(ptAvatar, addWardrobeClothingItem, args)
{
char* clothingName = NULL;
PyObject* tint1Obj = NULL;
PyObject* tint2Obj = NULL;
if (!PyArg_ParseTuple(args, "sOO", &clothingName, &tint1Obj, &tint2Obj))
{
PyErr_SetString(PyExc_TypeError, "addWardrobeClothingItem expects a string and two ptColor objects");
PYTHON_RETURN_ERROR;
}
if ((!pyColor::Check(tint1Obj)) || (!pyColor::Check(tint2Obj)))
{
PyErr_SetString(PyExc_TypeError, "addWardrobeClothingItem expects a string and two ptColor objects");
PYTHON_RETURN_ERROR;
}
std::string clothingNameStr = clothingName; // convert to string (for safety)
pyColor* tint1 = pyColor::ConvertFrom(tint1Obj);
pyColor* tint2 = pyColor::ConvertFrom(tint2Obj);
self->fThis->AddWardrobeClothingItem(clothingNameStr.c_str(), *tint1, *tint2);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, setReplyKey, args)
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "setReplyKey expects a ptKey object");
PYTHON_RETURN_NONE;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "setReplyKey expects a ptKey object");
PYTHON_RETURN_NONE;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->SetSenderKey(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAvatar, getCurrentMode)
{
return PyInt_FromLong(self->fThis->GetCurrentMode());
}
PYTHON_METHOD_DEFINITION(ptAvatar, registerForBehaviorNotify, args)
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "registerForBehaviorNotify expects a ptKey object");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "registerForBehaviorNotify expects a ptKey object");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->RegisterForBehaviorNotify(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, unRegisterForBehaviorNotify, args)
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "unRegisterForBehaviorNotify expects a ptKey object");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "unRegisterForBehaviorNotify expects a ptKey object");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->UnRegisterForBehaviorNotify(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAvatar, playSimpleAnimation, args)
{
char* animName = NULL;
if (!PyArg_ParseTuple(args, "s", &animName))
{
PyErr_SetString(PyExc_TypeError, "playSimpleAnimation expects a string object");
PYTHON_RETURN_ERROR;
}
std::string animNameStr = animName; // convert to a string (for safety)
self->fThis->PlaySimpleAnimation(animNameStr.c_str());
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptAvatar)
PYTHON_METHOD(ptAvatar, netForce, "Params: forceFlag\nSpecify whether this object needs to use messages that are forced to the network\n"
"- This is to be used if your Python program is running on only one client\n"
"Such as a game master, only running on the client that owns a particular object"),
PYTHON_METHOD(ptAvatar, oneShot, "Params: seekKey,duration,usePhysicsFlag,animationName,drivableFlag,reversibleFlag\nPlays a one-shot animation on the avatar"),
PYTHON_METHOD(ptAvatar, runBehavior, "Params: behaviorKey,netForceFlag\nRuns a behavior on the avatar. Can be a single or multi-stage behavior."),
PYTHON_METHOD(ptAvatar, runBehaviorSetNotify, "Params: behaviorKey,replyKey,netForceFlag\nSame as runBehavior, except send notifications to specified keyed object"),
PYTHON_METHOD(ptAvatar, nextStage, "Params: behaviorKey,transitionTime,setTimeFlag,newTime,SetDirectionFlag,isForward,netForce\nTells a multistage behavior to go to the next stage (Why does Matt like so many parameters?)"),
PYTHON_METHOD(ptAvatar, previousStage, "Params: behaviorKey,transitionTime,setTimeFlag,newTime,SetDirectionFlag,isForward,netForce\nTells a multistage behavior to go to the previous stage"),
PYTHON_METHOD(ptAvatar, gotoStage, "Params: behaviorKey,stage,transitionTime,setTimeFlag,newTime,SetDirectionFlag,isForward,netForce\nTells a multistage behavior to go to a particular stage"),
PYTHON_METHOD_NOARGS(ptAvatar, getAvatarClothingGroup, "Returns what clothing group the avatar belongs to.\n"
"It is also a means to determine if avatar is male or female"),
PYTHON_METHOD(ptAvatar, getEntireClothingList, "Params: clothing_type\nGets the entire list of clothing available. 'clothing_type' not used\n"
"NOTE: should use getClosetClothingList"),
PYTHON_METHOD(ptAvatar, getClosetClothingList, "Params: clothing_type\nReturns a list of clothes for the avatar that are in specified clothing group."),
PYTHON_METHOD_NOARGS(ptAvatar, getAvatarClothingList, "Returns a list of clothes that the avatar is currently wearing."),
PYTHON_METHOD(ptAvatar, getMatchingClothingItem, "Params: clothingName\nFinds the matching clothing item that goes with 'clothingName'\n"
"Used to find matching left and right gloves and shoes."),
PYTHON_METHOD(ptAvatar, wearClothingItem, "Params: clothing_name,update=1\nTells the avatar to wear a particular item of clothing.\n"
"And optionally hold update until later (for applying tinting before wearing)."),
PYTHON_METHOD(ptAvatar, removeClothingItem, "Params: clothing_name,update=1\nTells the avatar to remove a particular item of clothing."),
PYTHON_METHOD(ptAvatar, tintClothingItem, "Params: clothing_name,tint,update=1\nTells the avatar to tint(color) a particular item of clothing that they are already wearing.\n"
"'tint' is a ptColor object"),
PYTHON_METHOD(ptAvatar, tintClothingItemLayer, "Params: clothing_name,tint,layer,update=1\nTells the avatar to tint(color) a particular layer of a particular item of clothing."),
PYTHON_METHOD(ptAvatar, getTintClothingItem, "Params: clothing_name,layer=1\nReturns a ptColor of a particular item of clothing that the avatar is wearing.\n"
"The color will be a ptColor object."),
PYTHON_METHOD(ptAvatar, tintSkin, "Params: tint,update=1\nTints all of the skin on the avatar, with the ptColor tint"),
PYTHON_METHOD_NOARGS(ptAvatar, getTintSkin, "Returns a ptColor of the current skin tint for the avatar"),
PYTHON_METHOD(ptAvatar, enterSubWorld, "Params: sceneobject\nPlaces the avatar into the subworld of the ptSceneObject specified"),
PYTHON_BASIC_METHOD(ptAvatar, exitSubWorld, "Exits the avatar from the subWorld where it was"),
PYTHON_METHOD(ptAvatar, setMorph, "Params: clothing_name,layer,value\nSet the morph value (clipped between -1 and 1)"),
PYTHON_METHOD(ptAvatar, getMorph, "Params: clothing_name,layer\nGet the current morph value"),
PYTHON_METHOD(ptAvatar, setSkinBlend, "Params: layer,value\nSet the skin blend (value between 0 and 1)"),
PYTHON_METHOD(ptAvatar, getSkinBlend, "Params: layer\nGet the current skin blend value"),
PYTHON_BASIC_METHOD(ptAvatar, saveClothing, "Saves the current clothing options (including morphs) to the vault"),
PYTHON_METHOD(ptAvatar, getUniqueMeshList, "Params: clothing_type\nReturns a list of unique clothing items of the desired type (different meshes)"),
PYTHON_METHOD(ptAvatar, getAllWithSameMesh, "Params: clothing_name\nReturns a lilst of all clothing items that use the same mesh as the specified one"),
PYTHON_METHOD_NOARGS(ptAvatar, getWardrobeClothingList, "Return a list of items that are in the avatars closet"),
PYTHON_METHOD(ptAvatar, addWardrobeClothingItem, "Params: clothing_name,tint1,tint2\nTo add a clothing item to the avatar's wardrobe (closet)"),
PYTHON_METHOD(ptAvatar, setReplyKey, "Params: key\nSets the sender's key"),
PYTHON_METHOD_NOARGS(ptAvatar, getCurrentMode, "Returns current brain mode for avatar"),
PYTHON_METHOD(ptAvatar, registerForBehaviorNotify, "Params: selfKey\nThis will register for behavior notifies from the avatar"),
PYTHON_METHOD(ptAvatar, unRegisterForBehaviorNotify, "Params: selfKey\nThis will unregister behavior notifications"),
PYTHON_METHOD(ptAvatar, playSimpleAnimation, "Params: animName\nPlay simple animation on avatar"),
PYTHON_END_METHODS_TABLE;
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetBehaviorLoopCount, args, "Params: behaviorKey,stage,loopCount,netForce\nThis will set the loop count for a particular stage in a multistage behavior")
{
PyObject* keyObj = NULL;
long stage, loopCount;
char netForce;
if (!PyArg_ParseTuple(args, "Ollb", &keyObj, &stage, &loopCount, &netForce))
{
PyErr_SetString(PyExc_TypeError, "PtSetBehaviorLoopCount expects a ptKey, two longs, and a boolean");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetBehaviorLoopCount expects a ptKey, two longs, and a boolean");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyAvatar::SetLoopCount(*key, stage, loopCount, netForce != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtChangeAvatar, args, "Params: gender\nChange the local avatar's gender (or clothing type)")
{
char* gender = NULL;
if (!PyArg_ParseTuple(args, "s", &gender))
{
PyErr_SetString(PyExc_TypeError, "PtChangeAvatar expects a string");
PYTHON_RETURN_ERROR;
}
std::string genderStr = gender; // convert to string (for safety)
cyAvatar::ChangeAvatar(genderStr.c_str());
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtChangePlayerName, args, "Params: name\nChange the local avatar's name")
{
char* name = NULL;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "PtChangePlayerName expects a string");
PYTHON_RETURN_ERROR;
}
std::string nameStr = name; // convert to string (for safety)
cyAvatar::ChangePlayerName(nameStr.c_str());
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtEmoteAvatar, args, "Params: emote\nPlay an emote on the local avatar (netpropagated)")
{
char* emote = NULL;
if (!PyArg_ParseTuple(args, "s", &emote))
{
PyErr_SetString(PyExc_TypeError, "PtEmoteAvatar expects a string");
PYTHON_RETURN_ERROR;
}
std::string emoteStr = emote; // convert to string (for safety)
PYTHON_RETURN_BOOL(cyAvatar::Emote(emoteStr.c_str()));
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarSitOnGround, "Tells the local avatar to sit on ground and enter sit idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::Sit());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarEnterLookingAtKI, "Tells the local avatar to enter looking at KI idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::EnterKiMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarExitLookingAtKI, "Tells the local avatar to exit looking at KI idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::ExitKiMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarEnterUsePersBook, "Tells the local avatar to enter using their personal book idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::EnterPBMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarExitUsePersBook, "Tells the local avatar to exit using their personal book idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::ExitPBMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarEnterAFK, "Tells the local avatar to enter AwayFromKeyboard idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::EnterAFKMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAvatarExitAFK, "Tells the local avatar to exit AwayFromKeyboard idle loop (netpropagated)")
{
PYTHON_RETURN_BOOL(cyAvatar::ExitAFKMode());
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtDisableMovementKeys, cyAvatar::DisableMovementControls, "Disable avatar movement input")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtEnableMovementKeys, cyAvatar::EnableMovementControls, "Enable avatar movement input")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtDisableMouseMovement, cyAvatar::DisableMouseMovement, "Disable avatar mouse movement input")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtEnableMouseMovement, cyAvatar::EnableMouseMovement, "Enable avatar mouse movement input")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtDisableAvatarJump, cyAvatar::DisableAvatarJump, "Disable the ability of the avatar to jump")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtEnableAvatarJump, cyAvatar::EnableAvatarJump, "Enable the ability of the avatar to jump")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtDisableForwardMovement, cyAvatar::DisableForwardMovement, "Disable the ability of the avatar to move forward")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtEnableForwardMovement, cyAvatar::EnableForwardMovement, "Enable the ability of the avatar to move forward")
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtLocalAvatarRunKeyDown, "Returns true if the run key is being held down for the local avatar")
{
PYTHON_RETURN_BOOL(cyAvatar::LocalAvatarRunKeyDown());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtLocalAvatarIsMoving, "Returns true if the local avatar is moving (a movement key is held down)")
{
PYTHON_RETURN_BOOL(cyAvatar::LocalAvatarIsMoving());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetMouseTurnSensitivity, args, "Params: sensitivity\nSet the mouse sensitivity")
{
float sensitivity;
if (!PyArg_ParseTuple(args, "f", &sensitivity))
{
PyErr_SetString(PyExc_TypeError, "PtSetMouseTurnSensitivity expects a floating point value");
PYTHON_RETURN_ERROR;
}
cyAvatar::SetMouseTurnSensitivity(sensitivity);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetMouseTurnSensitivity, "Returns the sensitivity")
{
return PyFloat_FromDouble(cyAvatar::GetMouseTurnSensitivity());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsCurrentBrainHuman, "Returns whether the local avatar current brain is the human brain")
{
PYTHON_RETURN_BOOL(cyAvatar::IsCurrentBrainHuman());
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtAvatarSpawnNext, cyAvatar::SpawnNext, "Send the avatar to the next spawn point")
// Type structure definition
PLASMA_DEFAULT_TYPE(ptAvatar, "Plasma avatar class");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptAvatar, cyAvatar)
static PyObject* New(PyObject* sender, PyObject* recvr = nil)
{
ptAvatar* newObj = (ptAvatar*)ptAvatar_type.tp_new(&ptAvatar_type, NULL, NULL);
pyKey* senderKey = pyKey::ConvertFrom(sender);
pyKey* recvrKey = pyKey::ConvertFrom(recvr);
newObj->fThis->SetSender(senderKey->getKey());
newObj->fThis->AddRecvr(recvrKey->getKey());
newObj->fThis->SetNetForce(false);
return (PyObject*) newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptAvatar, cyAvatar)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAvatar, cyAvatar)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyAvatar::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAvatar);
PYTHON_CLASS_IMPORT_END(m);
}
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaMethods - the python method definitions
//
void cyAvatar::AddPlasmaMethods(std::vector<PyMethodDef> &methods)
{
// static/global functions (to the local avatar)
PYTHON_GLOBAL_METHOD(methods, PtSetBehaviorLoopCount);
PYTHON_GLOBAL_METHOD(methods, PtChangeAvatar);
PYTHON_GLOBAL_METHOD(methods, PtChangePlayerName);
PYTHON_GLOBAL_METHOD(methods, PtEmoteAvatar);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarSitOnGround);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarEnterLookingAtKI);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarExitLookingAtKI);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarEnterUsePersBook);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarExitUsePersBook);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarEnterAFK);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAvatarExitAFK);
// Suspend avatar input
PYTHON_BASIC_GLOBAL_METHOD(methods, PtDisableMovementKeys);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtEnableMovementKeys);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtDisableMouseMovement);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtEnableMouseMovement);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtDisableAvatarJump);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtEnableAvatarJump);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtDisableForwardMovement);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtEnableForwardMovement);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtLocalAvatarRunKeyDown);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtLocalAvatarIsMoving);
PYTHON_GLOBAL_METHOD(methods, PtSetMouseTurnSensitivity);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetMouseTurnSensitivity);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsCurrentBrainHuman);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtAvatarSpawnNext);
}
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaConstantsClasses - the python constants definitions
//
void cyAvatar::AddPlasmaConstantsClasses(PyObject *m)
{
PYTHON_ENUM_START(PtBrainModes);
PYTHON_ENUM_ELEMENT(PtBrainModes, kGeneric, plAvBrainGeneric::kGeneric);
PYTHON_ENUM_ELEMENT(PtBrainModes, kLadder, plAvBrainGeneric::kLadder);
PYTHON_ENUM_ELEMENT(PtBrainModes, kSit, plAvBrainGeneric::kSit);
PYTHON_ENUM_ELEMENT(PtBrainModes, kSitOnGround, plAvBrainGeneric::kSitOnGround);
PYTHON_ENUM_ELEMENT(PtBrainModes, kEmote, plAvBrainGeneric::kEmote);
PYTHON_ENUM_ELEMENT(PtBrainModes, kAFK, plAvBrainGeneric::kAFK);
PYTHON_ENUM_ELEMENT(PtBrainModes, kNonGeneric, plAvBrainGeneric::kNonGeneric);
PYTHON_ENUM_END(m, PtBrainModes);
PYTHON_ENUM_START(PtBehaviorTypes);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeStandingJump, plHBehavior::kBehaviorTypeStandingJump);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeWalkingJump, plHBehavior::kBehaviorTypeWalkingJump);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeRunningJump, plHBehavior::kBehaviorTypeRunningJump);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeAnyJump, plHBehavior::kBehaviorTypeAnyJump);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeRunningImpact, plHBehavior::kBehaviorTypeRunningImpact);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeGroundImpact, plHBehavior::kBehaviorTypeGroundImpact);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeAnyImpact, plHBehavior::kBehaviorTypeAnyImpact);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeIdle, plHBehavior::kBehaviorTypeIdle);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeWalk, plHBehavior::kBehaviorTypeWalk);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeRun, plHBehavior::kBehaviorTypeRun);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeWalkBack, plHBehavior::kBehaviorTypeWalkBack);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeTurnLeft, plHBehavior::kBehaviorTypeTurnLeft);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeTurnRight, plHBehavior::kBehaviorTypeTurnRight);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeSidestepLeft, plHBehavior::kBehaviorTypeSidestepLeft);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeSidestepRight, plHBehavior::kBehaviorTypeSidestepRight);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeFall, plHBehavior::kBehaviorTypeFall);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeMovingTurnLeft, plHBehavior::kBehaviorTypeMovingTurnLeft);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeMovingTurnRight, plHBehavior::kBehaviorTypeMovingTurnRight);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeLinkIn, plHBehavior::kBehaviorTypeLinkIn);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeLinkOut, plHBehavior::kBehaviorTypeLinkOut);
PYTHON_ENUM_END(m, PtBehaviorTypes);
}

View File

@ -0,0 +1,370 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyCamera.h"
#include "pnMessage/plCameraMsg.h"
#include "plMessage/plInputEventMsg.h"
#include "pnKeyedObject/plFixedKey.h"
#include "pnKeyedObject/plUoid.h"
#include "hsResMgr.h"
#include "pyKey.h"
#include "plgDispatch.h"
#include "pfCamera/plVirtualCamNeu.h"
#include "pfCamera/plCameraModifier.h"
#include "pfCamera/plCameraBrain.h"
cyCamera::cyCamera()
{
// get _the_ virtual camera
plUoid pU( kVirtualCamera1_KEY );
hsResMgr* hrm = hsgResMgr::ResMgr();
if ( hrm)
fTheCam = hrm->FindKey( pU );
else
fTheCam = nil;
}
// setters
void cyCamera::SetSender(plKey &sender)
{
fSender = sender;
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Push
// PARAMETERS :
//
// PURPOSE : Save the current state of the virtual camera
//
// NOTE: doesn't work by itself at the moment
//
void cyCamera::Push(pyKey& newCamKey)
{
// create message
plCameraMsg* pMsg = TRACKED_NEW plCameraMsg;
if ( fSender )
pMsg->SetSender(fSender);
// if we're sending to the virtual camera
if ( fTheCam )
pMsg->AddReceiver(fTheCam);
else
// otherwise, broadcast by type
pMsg->SetBCastFlag(plMessage::kBCastByType);
// set command to do the transition
pMsg->SetCmd(plCameraMsg::kResponderTrigger);
pMsg->SetCmd(plCameraMsg::kRegionPushCamera);
// set the new camera
pMsg->SetNewCam(newCamKey.getKey());
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Pop
// PARAMETERS :
//
// PURPOSE : Restore the state of the virtual camera with a previously saved setting
//
void cyCamera::Pop(pyKey& oldCamKey)
{
// create message
plCameraMsg* pMsg = TRACKED_NEW plCameraMsg;
if ( fSender )
pMsg->SetSender(fSender);
// if we're sending to the virtual camera
if ( fTheCam )
pMsg->AddReceiver(fTheCam);
else
// otherwise, broadcast by type
pMsg->SetBCastFlag(plMessage::kBCastByType);
// set command to undo the camera... somehow not saying ResponderTrigger but Push means Pop...whatever
pMsg->SetCmd(plCameraMsg::kRegionPushCamera);
// set the new camera
pMsg->SetNewCam(oldCamKey.getKey());
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : ControlKey
// PARAMETERS : controlKey - what command key to simulate being hit
// : activate - whether its being pressed or released (activated or deactivated)
//
// PURPOSE : Send controlKey commands to the virtual camera (should be like a pass thru)
//
void cyCamera::ControlKey(Int32 controlKey, hsBool activated)
{
// make sure that we have a virtual camera to send this to
if ( fTheCam )
{
plControlEventMsg* pMsg = TRACKED_NEW plControlEventMsg;
// set sender if there is one
if ( fSender )
pMsg->SetSender(fSender);
// if we're sending to the virtual camera
pMsg->AddReceiver(fTheCam);
// set the control key and activateFlag
pMsg->SetControlCode((ControlEventCode)controlKey);
pMsg->SetControlActivated(activated);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : TransitionTo
// PARAMETERS : newCamKey - what to switch the camera to
// : time - how long it takes to transition to new camera
//
// PURPOSE : Transition to a new camera (position and settings)
//
void cyCamera::TransitionTo(pyKey& newCamKey, double time, hsBool save)
{
// create message
plCameraMsg* pMsg = TRACKED_NEW plCameraMsg;
if ( fSender )
pMsg->SetSender(fSender);
// must have a receiver!
if ( fTheCam )
{
pMsg->AddReceiver(fTheCam);
// set command to do the transition
pMsg->SetCmd(plCameraMsg::kTransitionTo);
// set the new camera
pMsg->SetNewCam(newCamKey.getKey());
// set the transition time
pMsg->SetTransTime(time);
// test to see if they want to save
if ( save )
pMsg->SetCmd(plCameraMsg::kPush);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyCamera::SetEnableFirstPersonOverride(hsBool state)
{
// must have a receiver!
if ( fTheCam )
{
// create message
plCameraMsg* pMsg = TRACKED_NEW plCameraMsg;
if ( fSender )
pMsg->SetSender(fSender);
pMsg->AddReceiver(fTheCam);
// set command to do the transition
pMsg->SetCmd(plCameraMsg::kPythonSetFirstPersonOverrideEnable);
// set the state
pMsg->SetActivated(state);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyCamera::UndoFirstPerson()
{
// create message
plCameraMsg* pMsg = TRACKED_NEW plCameraMsg;
if ( fSender )
pMsg->SetSender(fSender);
// must have a receiver!
if ( fTheCam )
{
pMsg->AddReceiver(fTheCam);
// set command to do the transition
pMsg->SetCmd(plCameraMsg::kPythonUndoFirstPerson);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
hsScalar cyCamera::GetFOV()
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
plCameraModifier1* curCam = virtCam->GetCurrentCamera();
if ( curCam )
{
return curCam->GetFOVh();
}
}
}
return 0.0;
}
void cyCamera::SetFOV(hsScalar fov, double t)
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
plCameraModifier1* curCam = virtCam->GetCurrentCamera();
if ( curCam )
{
plCameraBrain1* camBrain = curCam->GetBrain();
if (camBrain)
{
camBrain->SetFOVGoal(fov,t);
}
}
}
}
}
void cyCamera::SetSmootherCam(hsBool state)
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
if (state)
{
virtCam->fUseAccelOverride = false;
}
else
{
virtCam->fAccel = 50.0;
virtCam->fDecel = 50.0;
virtCam->fVel = 100.0;
virtCam->fUseAccelOverride = true;
}
}
}
}
hsBool cyCamera::IsSmootherCam()
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
if ( virtCam->fUseAccelOverride )
return false;
else
return true;
}
}
return false;
}
void cyCamera::SetWalkAndVerticalPan(hsBool state)
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
if (state)
virtCam->WalkPan3rdPerson = true;
else
virtCam->WalkPan3rdPerson = false;
}
}
}
hsBool cyCamera::IsWalkAndVerticalPan()
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
return virtCam->WalkPan3rdPerson;
}
}
return false;
}
void cyCamera::SetStayInFirstPerson(hsBool state)
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
if (state)
virtCam->StayInFirstPersonForever = true;
else
virtCam->StayInFirstPersonForever = false;
}
}
}
hsBool cyCamera::IsStayInFirstPerson()
{
if ( fTheCam )
{
plVirtualCam1* virtCam = plVirtualCam1::ConvertNoRef( fTheCam->ObjectIsLoaded() );
if ( virtCam )
{
return virtCam->StayInFirstPersonForever;
}
}
return false;
}
void cyCamera::SetAspectRatio(float aspectratio)
{
plVirtualCam1::SetAspectRatio(aspectratio);
}
float cyCamera::GetAspectRatio()
{
return plVirtualCam1::GetAspectRatio();
}
void cyCamera::RefreshFOV()
{
plVirtualCam1::SetFOV(plVirtualCam1::GetFOVw(), plVirtualCam1::GetFOVh());
}

View File

@ -0,0 +1,107 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyCamera_h
#define cyCamera_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyCamera
//
// PURPOSE: Class wrapper to map camera functions to plasma2 message
//
#include "hsTypes.h"
#include "pnKeyedObject/plKey.h"
class pyKey;
#include <python.h>
#include "pyGlueHelpers.h"
class cyCamera
{
protected:
plKey fSender;
plKey fTheCam;
cyCamera();
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptCamera);
PYTHON_CLASS_NEW_DEFINITION;
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyCamera object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyCamera); // converts a PyObject to a cyCamera (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
// setters
void SetSender(plKey &sender);
// Save the current state of the virtual camera
// NOTE: doesn't work by itself at the moment
virtual void Push(pyKey& newCamKey);
// Restore the state of the virtual camera with a previously saved setting
virtual void Pop(pyKey& oldCamKey);
// Send controlKey commands to the virtual camera (should be like a pass thru)
virtual void ControlKey(Int32 controlKey, hsBool activated);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TransitionTo
// PARAMETERS : newCamKey - what to switch the camera to
// : time - how long it takes to transition to new camera
//
// PURPOSE : Transition to a new camera (position and settings)
//
virtual void TransitionTo(pyKey& newCamKey, double time, hsBool save);
virtual void SetEnableFirstPersonOverride(hsBool state);
virtual void EnableFirstPersonOverride() { SetEnableFirstPersonOverride(true); }
virtual void DisableFirstPersonOverride() { SetEnableFirstPersonOverride(false); }
virtual void UndoFirstPerson();
virtual hsScalar GetFOV();
virtual void SetFOV(hsScalar fov, double t);
virtual void SetSmootherCam(hsBool state);
virtual hsBool IsSmootherCam();
virtual void SetWalkAndVerticalPan(hsBool state);
virtual hsBool IsWalkAndVerticalPan();
virtual void SetStayInFirstPerson(hsBool state);
virtual hsBool IsStayInFirstPerson();
virtual void SetAspectRatio(float aspectratio);
virtual float GetAspectRatio();
virtual void RefreshFOV();
};
#endif // cyCamera_h

View File

@ -0,0 +1,261 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyCamera.h"
#include "pyKey.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptCamera, cyCamera);
PYTHON_DEFAULT_NEW_DEFINITION(ptCamera, cyCamera)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptCamera)
PYTHON_INIT_DEFINITION(ptCamera, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_METHOD_DEFINITION(ptCamera, save, args)
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "save expects a ptKey object");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "save expects a ptKey object");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->Push(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptCamera, restore, args)
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "restore expects a ptKey object");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "restore expects a ptKey object");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->Pop(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptCamera, controlKey, args)
{
long controlKey;
char activateFlag;
if (!PyArg_ParseTuple(args, "lb", &controlKey, &activateFlag))
{
PyErr_SetString(PyExc_TypeError, "controlKey expects a long and a boolean");
PYTHON_RETURN_ERROR;
}
self->fThis->ControlKey(controlKey, activateFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptCamera, set, args)
{
PyObject* keyObj = NULL;
double time;
char save;
if (!PyArg_ParseTuple(args, "Odb", &keyObj, &time, &save))
{
PyErr_SetString(PyExc_TypeError, "set expects a ptKey, double, and a boolean");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "set expects a ptKey, double, and a boolean");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
self->fThis->TransitionTo(*key, time, save != 0);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptCamera, enableFirstPersonOverride, EnableFirstPersonOverride)
PYTHON_BASIC_METHOD_DEFINITION(ptCamera, disableFirstPersonOverride, DisableFirstPersonOverride)
PYTHON_BASIC_METHOD_DEFINITION(ptCamera, undoFirstPerson, UndoFirstPerson)
PYTHON_METHOD_DEFINITION_NOARGS(ptCamera, getFOV)
{
return PyFloat_FromDouble(self->fThis->GetFOV());
}
PYTHON_METHOD_DEFINITION(ptCamera, setFOV, args)
{
float fov;
double time;
if (!PyArg_ParseTuple(args, "fd", &fov, &time))
{
PyErr_SetString(PyExc_TypeError, "setFOV expects a float and a double");
PYTHON_RETURN_ERROR;
}
self->fThis->SetFOV(fov, time);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptCamera, setSmootherCam, args)
{
char state;
if (!PyArg_ParseTuple(args, "b", &state))
{
PyErr_SetString(PyExc_TypeError, "setSmootherCam expects a boolean");
PYTHON_RETURN_ERROR;
}
self->fThis->SetSmootherCam(state != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptCamera, isSmootherCam)
{
PYTHON_RETURN_BOOL(self->fThis->IsSmootherCam());
}
PYTHON_METHOD_DEFINITION(ptCamera, setWalkAndVerticalPan, args)
{
char state;
if (!PyArg_ParseTuple(args, "b", &state))
{
PyErr_SetString(PyExc_TypeError, "setWalkAndVerticalPan expects a boolean");
PYTHON_RETURN_ERROR;
}
self->fThis->SetWalkAndVerticalPan(state != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptCamera, isWalkAndVerticalPan)
{
PYTHON_RETURN_BOOL(self->fThis->IsWalkAndVerticalPan());
}
PYTHON_METHOD_DEFINITION(ptCamera, setStayInFirstPerson, args)
{
char state;
if (!PyArg_ParseTuple(args, "b", &state))
{
PyErr_SetString(PyExc_TypeError, "setStayInFirstPerson expects a boolean");
PYTHON_RETURN_ERROR;
}
self->fThis->SetStayInFirstPerson(state != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptCamera, isStayInFirstPerson)
{
PYTHON_RETURN_BOOL(self->fThis->IsStayInFirstPerson());
}
PYTHON_METHOD_DEFINITION_NOARGS(ptCamera, getAspectRatio)
{
return PyFloat_FromDouble(self->fThis->GetAspectRatio());
}
PYTHON_METHOD_DEFINITION(ptCamera, setAspectRatio, args)
{
float aspect;
if (!PyArg_ParseTuple(args, "f", &aspect))
{
PyErr_SetString(PyExc_TypeError, "setAspectRatio expects a float");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAspectRatio(aspect);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptCamera, refreshFOV)
{
self->fThis->RefreshFOV();
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptCamera)
PYTHON_METHOD(ptCamera, save, "Params: cameraKey\nSaves the current camera and sets the camera to cameraKey"),
PYTHON_METHOD(ptCamera, restore, "Params: cameraKey\nRestores camera to saved one"),
PYTHON_METHOD(ptCamera, controlKey, "Params: controlKey,activateFlag\nSend a control key to the camera as if it was hit by the user.\n"
"This is for sending things like pan-up, pan-down, zoom-in, etc."),
PYTHON_METHOD(ptCamera, set, "Params: cameraKey,time,save\nDO NOT USE"),
PYTHON_BASIC_METHOD(ptCamera, enableFirstPersonOverride, "Allows the user to override the camera and go to a first person camera."),
PYTHON_BASIC_METHOD(ptCamera, disableFirstPersonOverride, "Does _not_ allow the user to override the camera to go to first person camera."),
PYTHON_BASIC_METHOD(ptCamera, undoFirstPerson, "If the user has overridden the camera to be in first person, this will take them out of first person.\n"
"If the user didn't override the camera, then this will do nothing."),
PYTHON_METHOD_NOARGS(ptCamera, getFOV, "Returns the current camera's FOV(h)"),
PYTHON_METHOD(ptCamera, setFOV, "Params: fov, time\nSets the current cameras FOV (based on h)"),
PYTHON_METHOD(ptCamera, setSmootherCam, "Params: state\nSet the faster cams thing"),
PYTHON_METHOD_NOARGS(ptCamera, isSmootherCam, "Returns true if we are using the faster cams thing"),
PYTHON_METHOD(ptCamera, setWalkAndVerticalPan, "Params: state\nSet Walk and chew gum"),
PYTHON_METHOD_NOARGS(ptCamera, isWalkAndVerticalPan, "Returns true if we are walking and chewing gum"),
PYTHON_METHOD(ptCamera, setStayInFirstPerson, "Params: state\nSet Stay In First Person Always"),
PYTHON_METHOD_NOARGS(ptCamera, isStayInFirstPerson, "Are we staying in first person?"),
PYTHON_METHOD_NOARGS(ptCamera, getAspectRatio, "Get the global aspect ratio"),
PYTHON_METHOD(ptCamera, setAspectRatio, "Params: aspect\nSet the global aspect ratio"),
PYTHON_METHOD_NOARGS(ptCamera, refreshFOV, "Refreshes the FOV"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptCamera, "Plasma camera class");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptCamera, cyCamera)
PYTHON_CLASS_CHECK_IMPL(ptCamera, cyCamera)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptCamera, cyCamera)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyCamera::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptCamera);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,105 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyDraw.h"
#include "plgDispatch.h"
#include "hsBitVector.h"
#include "pnMessage/plEnableMsg.h"
cyDraw::cyDraw(plKey sender, plKey recvr)
{
SetSender(sender);
AddRecvr(recvr);
fNetForce = false;
}
// setters
void cyDraw::SetSender(plKey &sender)
{
fSender = sender;
}
void cyDraw::AddRecvr(plKey &recvr)
{
if ( recvr != nil )
fRecvr.Append(recvr);
}
void cyDraw::SetNetForce(hsBool state)
{
// set our flag
fNetForce = state;
}
void cyDraw::EnableT(hsBool state)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plEnableMsg* pMsg = TRACKED_NEW plEnableMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// set the interface to the draw
pMsg->SetCmd(plEnableMsg::kDrawable);
pMsg->AddType(plEnableMsg::kDrawable);
pMsg->SetBCastFlag(plMessage::kPropagateToModifiers);
// which way are we doin' it?
if ( state )
pMsg->SetCmd(plEnableMsg::kEnable);
else
pMsg->SetCmd(plEnableMsg::kDisable);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyDraw::Enable()
{
EnableT(true);
}
void cyDraw::Disable()
{
EnableT(false);
}

View File

@ -0,0 +1,70 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyDraw_h
#define cyDraw_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyDraw
//
// PURPOSE: Class wrapper to map draw functions to plasma2 message
//
#include "hsTemplates.h"
#include "pnKeyedObject/plKey.h"
#include <python.h>
#include "pyGlueHelpers.h"
class cyDraw
{
protected:
plKey fSender;
hsTArray<plKey> fRecvr;
hsBool fNetForce;
cyDraw(plKey sender=nil,const plKey recvr=nil);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptDraw);
static PyObject *New(PyObject *sender = NULL, PyObject* recvr = NULL);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyDraw object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyDraw); // converts a PyObject to a cyDraw (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
// setters
void SetSender(plKey &sender);
void AddRecvr(plKey &recvr);
virtual void SetNetForce(hsBool state);
// Enable draw
virtual void EnableT(hsBool state);
virtual void Enable();
virtual void Disable();
};
#endif // cyDraw_h

View File

@ -0,0 +1,109 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyDraw.h"
#include "pyKey.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptDraw, cyDraw);
PYTHON_DEFAULT_NEW_DEFINITION(ptDraw, cyDraw)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptDraw)
PYTHON_NO_INIT_DEFINITION(ptDraw)
PYTHON_METHOD_DEFINITION(ptDraw, netForce, args)
{
char forceFlag;
if (!PyArg_ParseTuple(args, "b", &forceFlag))
{
PyErr_SetString(PyExc_TypeError, "netForce requires a boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetNetForce(forceFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptDraw, enable, args)
{
char state = 1;
if (!PyArg_ParseTuple(args, "|b", &state))
{
PyErr_SetString(PyExc_TypeError, "enable expects an optional boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->EnableT(state != 0);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptDraw, disable, Disable)
PYTHON_START_METHODS_TABLE(ptDraw)
PYTHON_METHOD(ptDraw, netForce, "Params: forceFlag\nSpecify whether this object needs to use messages that are forced to the network\n"
"- This is to be used if your Python program is running on only one client\n"
"Such as a game master, only running on the client that owns a particular object"),
PYTHON_METHOD(ptDraw, enable, "Params: state=1\nSets the draw enable for the sceneobject attached"),
PYTHON_BASIC_METHOD(ptDraw, disable, "Disables the draw on the sceneobject attached\n"
"In other words, makes it invisible"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptDraw, "Plasma Draw class");
// required functions for PyObject interoperability
PyObject *cyDraw::New(PyObject *sender, PyObject *recvr)
{
ptDraw *newObj = (ptDraw*)ptDraw_type.tp_new(&ptDraw_type, NULL, NULL);
if (sender != NULL)
{
pyKey *senderKey = pyKey::ConvertFrom(sender);
newObj->fThis->SetSender(senderKey->getKey());
}
if (recvr != NULL)
{
pyKey *recvrKey = pyKey::ConvertFrom(recvr);
newObj->fThis->AddRecvr(recvrKey->getKey());
}
newObj->fThis->fNetForce = false;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptDraw, cyDraw)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptDraw, cyDraw)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyDraw::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptDraw);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,81 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyInputInterface.h"
#include "plMessage/plInputIfaceMgrMsg.h"
#include "plInputCore/plTelescopeInputInterface.h"
#include "plgDispatch.h"
cyInputInterface::cyInputInterface() :
fTelescopeInterface(nil)
{
}
cyInputInterface::~cyInputInterface()
{
if (fTelescopeInterface)
hsRefCnt_SafeUnRef( fTelescopeInterface );
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Push interface functions
// PARAMETERS :
//
// PURPOSE : create and push a specialized input interface onto the control stack.
// : for now we only have the telescope...
//
//
void cyInputInterface::PushTelescopeInterface()
{
if (!fTelescopeInterface)
{
fTelescopeInterface = TRACKED_NEW plTelescopeInputInterface;
plInputIfaceMgrMsg* pMsg = TRACKED_NEW plInputIfaceMgrMsg(plInputIfaceMgrMsg::kAddInterface);
pMsg->SetIFace(fTelescopeInterface);
pMsg->Send();
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Pop
// PARAMETERS :
//
// PURPOSE : Remove and delete the interface we have on the stack
//
void cyInputInterface::PopTelescope()
{
if (fTelescopeInterface)
{
plInputIfaceMgrMsg* pMsg = TRACKED_NEW plInputIfaceMgrMsg(plInputIfaceMgrMsg::kRemoveInterface);
pMsg->SetIFace(fTelescopeInterface);
pMsg->Send();
hsRefCnt_SafeUnRef( fTelescopeInterface );
fTelescopeInterface = nil;
}
}

View File

@ -0,0 +1,70 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyInputInterface_h
#define cyInputInterface_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyInputInterface
//
// PURPOSE: Class wrapper to map InputInterface functions to plasma2 message
//
#include <python.h>
#include "pyGlueHelpers.h"
class plInputInterface;
class cyInputInterface
{
protected:
plInputInterface* fTelescopeInterface;
cyInputInterface();
public:
~cyInputInterface();
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptInputInterface);
PYTHON_CLASS_NEW_DEFINITION;
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyInputInterface object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyInputInterface); // converts a PyObject to a cyInputInterface (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
// setters
// we should add a ::Push_X_Interface function for any special type
// of interface we might want to set... for now there's just the telescope...
void PushTelescopeInterface();
void PopTelescope();
/////////////////////////////////////////////////////////////////////////////
};
#endif // cyInputInterface_h

View File

@ -0,0 +1,67 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "HeadSpin.h"
#include "cyInputInterface.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptInputInterface, cyInputInterface);
PYTHON_DEFAULT_NEW_DEFINITION(ptInputInterface, cyInputInterface)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptInputInterface)
PYTHON_INIT_DEFINITION(ptInputInterface, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_BASIC_METHOD_DEFINITION(ptInputInterface, pushTelescope, PushTelescopeInterface)
PYTHON_BASIC_METHOD_DEFINITION(ptInputInterface, popTelescope, PopTelescope)
PYTHON_START_METHODS_TABLE(ptInputInterface)
PYTHON_BASIC_METHOD(ptInputInterface, pushTelescope, "pushes on the telescope interface"),
PYTHON_BASIC_METHOD(ptInputInterface, popTelescope, "pops off the telescope interface and gos back to previous interface"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptInputInterface, "Plasma input interface class");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptInputInterface, cyInputInterface)
PYTHON_CLASS_CHECK_IMPL(ptInputInterface, cyInputInterface)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptInputInterface, cyInputInterface)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyInputInterface::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptInputInterface);
PYTHON_CLASS_IMPORT_END(m);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,920 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyMisc_h
#define cyMisc_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyMisc
//
// PURPOSE: Class wrapper to map misc functions, such as the console
//
class pyKey;
class pySceneObject;
class pyPlayer;
class pyImage;
class pyDniCoordinates;
class pyColor;
class pyAgeInfoStruct;
class pyPoint3;
#include <python.h>
#include "hsTypes.h"
#include "hsStlUtils.h"
#include "pnUtils/pnUtils.h"
class pyGUIDialog;
class plPipeline;
class plDisplayMode;
struct PipelineParams;
class cyMisc
{
// game playing to get the pipeline from the client when we can't really
// this is only for the C++ side
// The pipeline is set in the plClient
static plPipeline* fPipeline;
static UInt32 fUniqueNumber;
static UInt32 fPythonLoggingLevel;
public:
// periodically do things
static void Update( double secs );
// the python definitions
static void AddPlasmaMethods(std::vector<PyMethodDef> &methods);
static void AddPlasmaMethods2(std::vector<PyMethodDef> &methods);
static void AddPlasmaMethods3(std::vector<PyMethodDef> &methods);
static void AddPlasmaMethods4(std::vector<PyMethodDef> &methods);
static void AddPlasmaConstantsClasses(PyObject *m);
static void SetPipeline( plPipeline *pipe ) { fPipeline = pipe; }
static plPipeline *GetPipeline( void ) { return fPipeline; }
#if 1
//
// TEMP SCREEN PRINT CODE FOR NON-DBG TEXT DISPLAY
//
public:
static void PrintToScreen(const char* msg);
#endif
enum PythonDebugPrintLevels
{
kNoLevel = 0,
kDebugDump = 1,
kWarningLevel = 2,
kErrorLevel = 3,
kAssertLevel = 4
};
enum LOSObjectType
{
kClickables,
kCameraBlockers,
kCustom,
kShootable
};
static UInt32 GetPythonLoggingLevel();
static void SetPythonLoggingLevel(UInt32 new_level);
/////////////////////////////////////////////////////////////////////////////
//
// Function : Console
// PARAMETERS : command - string of console commmand to execute
//
// PURPOSE : Execute a console command from a python script,
// optionally propagate over the net
//
static void Console(const char* command);
static void ConsoleNet(const char* command, hsBool netForce);
/////////////////////////////////////////////////////////////////////////////
//
// Function : FindSceneObject
// PARAMETERS : name - string of name of the sceneobject
// : ageName - string of the name of the age to look in
//
// PURPOSE : Execute a console command from a python script,
// optionally propagate over the net
//
static PyObject* FindSceneObject(const char* name, const char* ageName); // returns pySceneObject
static PyObject* FindActivator(const char* name); // returns pyKey
/////////////////////////////////////////////////////////////////////////////
//
// Function : PopUpConsole
// PARAMETERS : command - string of console commmand to execute
//
// PURPOSE : Execute a console command from a python script
//
static void PopUpConsole(const char* command);
/////////////////////////////////////////////////////////////////////////////
//
// Function : TimerCallback
// PARAMETERS : command - string of console commmand to execute
//
// PURPOSE : Execute a console command from a python script
//
static void TimerCallback(pyKey& selfkey, hsScalar time, UInt32 id);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ClearTimerCallbacks
// PARAMETERS : key and (optional) timer id
//
// PURPOSE : clears timer callbacks
//
static void ClearTimerCallbacks(pyKey& selfkey);
/////////////////////////////////////////////////////////////////////////////
//
// Function : AttachObject
// PARAMETERS : child object
// : to be attached to parent object
//
// PURPOSE : Attach an object to another object, knowing only their pyKeys
//
static void AttachObject(pyKey& ckey, pyKey& pkey);
static void AttachObjectSO(pySceneObject& cobj, pySceneObject& pobj);
/////////////////////////////////////////////////////////////////////////////
//
// Function : DetachObject
// PARAMETERS : child object
// : to be attached to parent object
//
// PURPOSE : Attach an object to another object, knowing only their pyKeys
//
static void DetachObject(pyKey& ckey, pyKey& pkey);
static void DetachObjectSO(pySceneObject& cobj, pySceneObject& pobj);
/////////////////////////////////////////////////////////////////////////////
//
// Function : LinkToAge
// PARAMETERS :
//
// PURPOSE : LinkToAge
//
// STATUS : Depreciated. Use plNetLinkingMgr or pyNetLinkingMgr instead.
//
/// static void LinkToAge(pyKey &selfkey, const char *AgeName,const char *SpawnPointName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetDirtySyncStateServer
// PARAMETERS :
//
// PURPOSE : set the Python modifier to be dirty and asked to be saved out
//
static void SetDirtySyncState(pyKey &selfkey, const char* SDLStateName, UInt32 sendFlags);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetDirtySyncStateClients
// PARAMETERS :
//
// PURPOSE : set the Python modifier to be dirty and asked to be saved out
// specifies that state should be sent to other clients as well as server
//
static void SetDirtySyncStateWithClients(pyKey &selfkey, const char* SDLStateName, UInt32 sendFlags);
/////////////////////////////////////////////////////////////////////////////
//
// Function : EnableControlKeyEvents & DisableControlKeyEvents
// PARAMETERS : none
//
// PURPOSE : register and unregister for control key events
//
static void EnableControlKeyEvents(pyKey &selfkey);
static void DisableControlKeyEvents(pyKey &selfkey);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetClientName
// PARAMETERS : avatar key
//
// PURPOSE : Return the net client (account) name of the player whose avatar
// key is provided.
//
static hsBool WasLocallyNotified(pyKey &selfkey);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetClientName
// PARAMETERS : avatar key
//
// PURPOSE : Return the net client (account) name of the player whose avatar
// key is provided.
//
static const char* GetClientName(pyKey &avKey);
static PyObject* cyMisc::GetAvatarKeyFromClientID(int clientID); // returns pyKey
static int cyMisc::GetLocalClientID();
static int cyMisc::GetClientIDFromAvatarKey(pyKey& avatar);
static hsBool cyMisc::ValidateKey(pyKey& key);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetClientName
// PARAMETERS :
//
// PURPOSE : Return the local net client (account) name
//
static const char* GetLocalClientName();
//
// Get Current age information - DEPRECIATED. Use ptDniInfoSource() object instead.
//
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetAgeName
// Function : GetAgeTime
// PARAMETERS :
//
// PURPOSE : Return the age name of the current age the local player is in
// : Return the current coordinates of the player within this age
// : Return the current time with the current age the player is in
//
static const char* GetAgeName();
static PyObject* GetAgeInfo(); // returns pyAgeInfoStruct
static const char* GetPrevAgeName();
static PyObject* GetPrevAgeInfo();
// current time in current age
static UInt32 GetAgeTime( void );
static UInt32 GetDniTime(void);
static UInt32 ConvertGMTtoDni(UInt32 time);
static UInt32 GetServerTime( void ); // returns the current server time in GMT
static float GetAgeTimeOfDayPercent(void);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ExcludeRegionSet
// PARAMETERS : key - of the exclude region, ie. where to send the message
// state - what state of to set at:
//
// PURPOSE : Sets the state of an exclude region
//
enum
{
kExRegRelease = 0,
kExRegClear = 1,
};
static void ExcludeRegionSet(pyKey& sender, pyKey& exKey, UInt16 state);
static void ExcludeRegionSetNow(pyKey& sender, pyKey& exKey, UInt16 state);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetSeconds
// PARAMETERS :
//
// PURPOSE : Return the nunber of seconds elapsed
//
static double GetSeconds();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetSysSeconds
// PARAMETERS :
//
// PURPOSE : Return the number of system seconds elapsed
//
static double GetSysSeconds();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetDelSysSeconds
// PARAMETERS :
//
// PURPOSE : Return the frame delta seconds
//
static hsScalar GetDelSysSeconds();
/////////////////////////////////////////////////////////////////////////////
//
// Function : LoadDialog
// PARAMETERS :
//
// PURPOSE : Loads the dialog by name
// : optionally sets the receiver key for the GUINotifyMsg
//
static void LoadDialog(const char* name);
static void LoadDialogK(const char* name, pyKey& modKey);
static void LoadDialogKA(const char* name, pyKey& rKey, const char* ageName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : UnLoadDialog
// PARAMETERS :
//
// PURPOSE : UnLoads the dialog by name
// : optionally sets the receiver key for the GUINotifyMsg
//
static void UnloadDialog(const char* name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : IsDialogLoaded
// PARAMETERS :
//
// PURPOSE : Test to see if a dialog is loaded (according to the dialog manager)
//
static hsBool IsDialogLoaded(const char* name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ShowDialog
// Function : HideDialog
// PARAMETERS :
//
// PURPOSE : Show or Hide a dialog by name
//
static void ShowDialog(const char* name);
static void HideDialog(const char* name);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetDialogFromTagID
// PARAMETERS :
//
// PURPOSE : Return the frame delta seconds
//
static PyObject* GetDialogFromTagID(UInt32 tag); // returns pyGUIDialog
static PyObject* GetDialogFromString(const char* name); // returns pyGUIDialog
/////////////////////////////////////////////////////////////////////////////
//
// Function : IsGUIModal
// PARAMETERS :
//
// PURPOSE : Returns true if the GUI is currently modal (and therefore blocking input)
//
static bool IsGUIModal();
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetLocalAvatar
// PARAMETERS :
//
// PURPOSE : Return a pySceneobject of the local Avatar
//
static PyObject* GetLocalAvatar(); // returns pySceneObject
static PyObject* GetLocalPlayer(); // returns pyPlayer
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetPlayerList
// Function : GetPlayerListDistanceSorted
// PARAMETERS :
//
// PURPOSE : Get a list of players (other than self) that are playing the game
// : optionally get it sorted by distance
//
// RETURNS : Python object list of pyPlayer s
//
static std::vector<PyObject*> GetPlayerList(); // list of pyPlayer
static std::vector<PyObject*> GetPlayerListDistanceSorted(); // list of pyPlayer
static UInt32 GetMaxListenListSize();
static hsScalar GetMaxListenDistSq();
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendRTChat
// PARAMETERS : from - is a pyPlayer of the person who is sending this
// : tolist - is a python list object, if empty then broadcast message
// : message - text string to send to others
// : flags - the flags of destiny... whatever that means
//
// PURPOSE : To send a real time chat message to a particualr user, a list of users
// : or broadcast it to everyone (within hearing distance?)
//
// RETURNS : the flags that were sent with the message (may be modified)
//
static UInt32 SendRTChat(pyPlayer& from, const std::vector<pyPlayer*> & tolist, const char* message, UInt32 flags);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendKIMessage
// PARAMETERS : command - the command type
// : value - extra value
//
// PURPOSE : Send message to the KI, to tell it things to do
//
// RETURNS : nothing
//
static void SendKIMessage(UInt32 command, hsScalar value);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendKIMessageS
// PARAMETERS : command - the command type
// : value - extra value as a string
//
// PURPOSE : Send message to the KI, to tell it things to do
//
// RETURNS : nothing
//
static void SendKIMessageS(UInt32 command, const wchar_t* value);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendKIMessageI
// PARAMETERS : command - the command type
// : value - extra value as an Int32
//
// PURPOSE : Send message to the KI, to tell it things to do
//
// RETURNS : nothing
//
static void SendKIMessageI(UInt32 command, Int32 value);
static void SendKIGZMarkerMsg(Int32 markerNumber, pyKey& sender);
static void SendKIRegisterImagerMsg(const char* imagerName, pyKey& sender);
/////////////////////////////////////////////////////////////////////////////
//
// Function : YesNoDialog
// PARAMETERS : sender - sender's key (to get the reply)
// : value - extra value
//
// PURPOSE : Send message to the KI, to tell it things to do
//
// RETURNS : nothing
//
static void YesNoDialog(pyKey& sender, const char* thestring);
static void YesNoDialog(pyKey& sender, std::wstring thestring);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RateIt
// PARAMETERS : chonicleName - where to store the rating
// : thestring - the message in the RateIt dialog
// : onceFlag - flag to tell whether this is a onetime thing or ask everytime
//
// PURPOSE : Send message to the KI to tell it to ask the user to Rate something
//
// RETURNS : nothing
//
static void RateIt(const char* chronicleName, const char* thestring, hsBool onceFlag);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetPrivateChatList
// PARAMETERS : key - who's joining
//
// PURPOSE : Lock the local avatar into private vox messaging, and / or add new memebers to his chat list
//
// RETURNS : nothing
//
static void SetPrivateChatList(const std::vector<pyPlayer*> & tolist);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RemovePrivateChatMember
// PARAMETERS : key - who's joining
//
// PURPOSE : Remove the local avatar from private vox messaging, and / or clear memebers from his chat list
//
// RETURNS : nothing
//
static void ClearPrivateChatList(pyKey& member);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ClearCameraStack
// PARAMETERS :
//
// PURPOSE : knocks all the cameras off the current stack
//
static void cyMisc::ClearCameraStack();
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendPetitionToCCR
// PARAMETERS : message - message to send to the CCR ("please help me!")
//
// PURPOSE : Send a petition to the CCR for help or questions
//
static void SendPetitionToCCR(const char* message);
static void SendPetitionToCCRI(const char* message, UInt8 reason,const char* title);
/////////////////////////////////////////////////////////////////////////////
//
// Function : SendChatToCCR
// PARAMETERS : message - message to send to the CCR ("please help me!")
//
// PURPOSE : Send a petition to the CCR for help or questions
//
static void SendChatToCCR(const char* message,Int32 CCRPlayerID);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetNumRemotePlayers
//
// PURPOSE : return the number of remote players connected
//
static int GetNumRemotePlayers();
/////////////////////////////////////////////////////////////////////////////
//
// Function : Paging functions
// PARAMETERS : nodeName - name of the page to load
//
// PURPOSE : page in, or out a paritcular node
//
static void PageInNodes(const std::vector<std::string> & nodeNames, const char* age);
static void PageOutNode(const char* nodeName);
/////////////////////////////////////////////////////////////////////////////
//
// Function : LimitAvatarLOD
// PARAMETERS : LODlimit - number of to limit the LOD to
//
// PURPOSE : sets the avatar LOD limit
//
static void LimitAvatarLOD(int LODlimit);
/////////////////////////////////////////////////////////////////////////////
//
// Function : Set fog default functions
// PARAMETERS : floats - the parameters
//
// PURPOSE : sets the fog defaults
//
static void FogSetDefColor(pyColor& color);
static void FogSetDefLinear(float start, float end, float density);
static void FogSetDefExp(float end, float density);
static void FogSetDefExp2(float end, float density);
static void SetClearColor(float red, float green, float blue);
/////////////////////////////////////////////////////////////////////////////
//
// Function : Enable / disable cursor fade for avatar
// PARAMETERS :
//
// PURPOSE : turns avatar fade out on / off
//
static void EnableAvatarCursorFade();
static void DisableAvatarCursorFade();
static void FadeLocalPlayer(hsBool fade);
/////////////////////////////////////////////////////////////////////////////
//
// Function : Put the interface into 'offer book mode'
// PARAMETERS :
//
// PURPOSE :
//
static void EnableOfferBookMode(pyKey& selfkey, const char* ageFileName, const char* ageInstanceName);
static void DisableOfferBookMode();
static void NotifyOffererPublicLinkAccepted(UInt32 offerer);
static void NotifyOffererPublicLinkRejected(UInt32 offerer);
static void NotifyOffererPublicLinkCompleted(UInt32 offerer);
static void ToggleAvatarClickability(hsBool on);
static void SetShareSpawnPoint(const char* spawnPoint);
static void SetShareAgeInstanceGuid(const Uuid& guid);
//////////////////////////////////////////////////////////////////////////////
//
// Function : IsCCRAwayStatus
// PARAMETERS :
//
// PURPOSE : Returns current status of CCR dept
//
static hsBool IsCCRAwayStatus();
//////////////////////////////////////////////////////////////////////////////
//
// Function : AmCCR
// PARAMETERS :
//
// PURPOSE : Returns true if local player is a CCR
//
static hsBool AmCCR();
//////////////////////////////////////////////////////////////////////////////
//
// Function : AcceptInviteInGame
// PARAMETERS : Friend's Name, Invite Key
//
// PURPOSE : Send's a VaultTask to the server to perform the invite
//
static void AcceptInviteInGame(const char* friendName, const char* inviteKey);
//////////////////////////////////////////////////////////////////////////////
//
// Function : GetLanguage
// PARAMETERS :
//
// PURPOSE : Returns the current language the game is in
//
static int GetLanguage();
//////////////////////////////////////////////////////////////////////////////
//
// Function : UsingUnicode
// PARAMETERS :
//
// PURPOSE : Returns true if the current language uses Unicode (like Japanese)
//
static bool UsingUnicode();
//////////////////////////////////////////////////////////////////////////////
//
// Function : RequestLOSScreen
// PARAMETERS : lots...
//
// PURPOSE : To request an LOS from a point on the screen
//
static bool RequestLOSScreen(pyKey &selfkey, Int32 ID, hsScalar xPos, hsScalar yPos, hsScalar distance, int what, int reportType);
//////////////////////////////////////////////////////////////////////////////
//
// Function : CheckVisLOS
// PARAMETERS : StartPoint, EndPoint
//
// PURPOSE : Check is there is something visible in the path from StartPoint to EndPoint
//
static PyObject* CheckVisLOS(pyPoint3 startPoint, pyPoint3 endPoint);
static PyObject* CheckVisLOSFromCursor();
//////////////////////////////////////////////////////////////////////////////
//
// Function : particle system management
//
static void TransferParticlesToKey(pyKey& fromKey, pyKey& toKey, int numParticles);
static void SetParticleDissentPoint(float x, float y, float z, pyKey& particles);
static void SetParticleOffset(float x, float y, float z, pyKey& particles);
static void KillParticles(float time, float pct, pyKey& particles);
static int GetNumParticles(pyKey& host);
static void SetLightColorValue(pyKey& light, std::string lightName, hsScalar r, hsScalar g, hsScalar b, hsScalar a);
static void SetLightAnimationOn(pyKey& light, std::string lightName, hsBool start);
//////////////////////////////////////////////////////////////////////////////
//
// Function : RegisterForControlEventMessages
// PARAMETERS : switch on or off, registrant
//
// PURPOSE : let you get control event messages at will (for pseudo-GUI's like the psnl bookshelf or clft imager)
static void RegisterForControlEventMessages(hsBool on, pyKey& k);
//////////////////////////////////////////////////////////////////////////////
//
// Function : IsSinglePlayerMode
// And : IsDemoMode
// PARAMETERS :
//
// PURPOSE : Returns whether the game is in Single Player mode
// And : returns whether the game in in Demo mode
//
static bool IsSinglePlayerMode();
static bool IsDemoMode();
//////////////////////////////////////////////////////////////////////////////
//
// Function : IsInternalRelease
// PARAMETERS :
//
// PURPOSE : Returns true if we are running an internal build
//
static bool IsInternalRelease();
//////////////////////////////////////////////////////////////////////////////
//
// Function : IsEnterChatModeKeyBound
// PARAMETERS :
//
// PURPOSE : Returns whether the EnterChatMode is bound to a key
//
static bool IsEnterChatModeKeyBound();
//////////////////////////////////////////////////////////////////////////////
//
// Function : ShootBulletFromScreen
// PARAMETERS : lots...
//
// PURPOSE : Shoots from screen coordinates, a bullet and makes a mark on objects that know about bullet holes
//
static void ShootBulletFromScreen(pyKey &selfkey, hsScalar xPos, hsScalar yPos, hsScalar radius, hsScalar range);
//////////////////////////////////////////////////////////////////////////////
//
// Function : ShootBulletFromObject
// PARAMETERS : lots...
//
// PURPOSE : Shoots from an object, a bullet and makes a mark on objects that know about bullet holes
//
static void ShootBulletFromObject(pyKey &selfkey, pySceneObject* sobj, hsScalar radius, hsScalar range);
//////////////////////////////////////////////////////////////////////////////
//
// Function : GetPublicAgeList
// PARAMETERS : ageName, callback object
//
// PURPOSE : Get the list of public ages for the given age name.
//
static void GetPublicAgeList( const char * ageName, PyObject * cbObject=nil );
//////////////////////////////////////////////////////////////////////////////
//
// Function : CreatePublicAge
// PARAMETERS : ageInfo, callback object
//
// PURPOSE : Add a public age to the list of available ones.
//
static void CreatePublicAge( pyAgeInfoStruct * ageInfo, PyObject * cbObject=nil );
//////////////////////////////////////////////////////////////////////////////
//
// Function : RemovePublicAge
// PARAMETERS : ageInstanceGuid, callback object
//
// PURPOSE : Remove a public age from the list of available ones.
//
static void RemovePublicAge( const char * ageInstanceGuid, PyObject * cbObject=nil );
//////////////////////////////////////////////////////////////////////////////
//
// Function : GetKILevel
//
// PURPOSE : returns the ki level of the local player
//
static int GetKILevel(); // return local player's ki level
//////////////////////////////////////////////////////////////////////////////
//
//
// PURPOSE : these functions are for saving / restoring the camera stack
//
static int GetNumCameras();
static const char* GetCameraNumber(int number);
static void RebuildCameraStack(const char* name, const char* ageName);
static void PyClearCameraStack();
static void RecenterCamera();
static bool IsFirstPerson();
//////////////////////////////////////////////////////////////////////////////
//
// Function : FadeIn and FadeOut
//
// PURPOSE : fade screen in and out
//
static void FadeIn(float lenTime, bool holdFlag, bool noSound = 0);
static void FadeOut(float lenTime, bool holdFlag, bool noSound = 0);
//////////////////////////////////////////////////////////////////////////////
//
// Function : Disable / Enable global clickability
//
// PURPOSE : globally enable or disable ALL clickables on this local client
//
static void SetClickability(hsBool b);
//////////////////////////////////////////////////////////////////////////////
//
// Function : Debug build only: Assert if condition is false.
//
// PURPOSE : debugging
//
static void DebugAssert( bool cond, const char * msg );
//////////////////////////////////////////////////////////////////////////////
//
// Function : Set a python object to be called back after a certain amount of time.
// Python object should have this method: def onAlarm(self,context)
//
// PURPOSE : script can trigger itself over time w/o having to specify it in the dataset.
//
static void SetAlarm( float secs, PyObject * cb, UInt32 cbContext );
//////////////////////////////////////////////////////////////////////////////
//
// Function : Save Screen Shot
//
// PURPOSE : captures the screen and saves it as a jpeg
//
static void SaveScreenShot(const char* fileName, int x = 640, int y = 480, int quality = 75);
//////////////////////////////////////////////////////////////////////////////
//
// Function : Start a screen capture
//
// PURPOSE : This starts a screen capture in motion. It will be capture on the next
// update and a plCaptureRenderMsg when its ready
//
static void StartScreenCapture(pyKey& selfkey);
static void StartScreenCaptureWH(pyKey& selfkey, UInt16 width, UInt16 height);
//////////////////////////////////////////////////////////////////////////////
//
// Function : wear maintainer suit
//
// PURPOSE : puts the maintainer suit on or off the avatar
//
static void WearMaintainerSuit(pyKey& key, hsBool wear);
static void WearDefaultClothing(pyKey& key);
static void WearDefaultClothingType(pyKey& key, UInt32 type);
//////////////////////////////////////////////////////////////////////////////
//
// Function : Fake link to object
//
// PURPOSE : takes an avatar key and an object key and fake-links the avatar
// to that object's position. appears to be a link to other players
//
static void FakeLinkToObject(pyKey& avatar, pyKey& object);
static void FakeLinkToObjectNamed(const char* name);
//////////////////////////////////////////////////////////////////////////////
//
// Function : Spawn an avatar
//
// PURPOSE : takes the name of an avatar model and a sceneobject key and
// spawns the avatar at that point
//
static PyObject* LoadAvatarModel(const char* modelName, pyKey& object, const char* userStr); // returns pyKey
static void UnLoadAvatarModel(pyKey& avatar);
///////////////////////////////////////////////////////////////////////////////
//
// Function : Hide/show the mouse cursor
//
// PURPOSE : forces the mouse cursor to hide/show, overrides pretty much
// everything and should only be used if "normal" methods don't
// work (like ptGUIMouseOff)
static void ForceCursorHidden();
static void ForceCursorShown();
///////////////////////////////////////////////////////////////////////////////
//
// Function : GetLocalizedString
//
// PURPOSE : Returns the specified localized string with the parameters
// properly replaced (the list is a list of unicode strings) Name
// is in "Age.Set.Name" format
//
static std::wstring GetLocalizedString(std::wstring name, const std::vector<std::wstring> & arguments);
static void EnablePlanarReflections(bool enable = true);
static void SetGraphicsOptions(int Width, int Height, int ColorDepth, hsBool Windowed, int NumAASamples, int MaxAnisotropicSamples, hsBool VSync);
static void GetSupportedDisplayModes(std::vector<plDisplayMode> *res);
static int GetDesktopWidth();
static int GetDesktopHeight();
static int GetDesktopColorDepth();
static PipelineParams *GetDefaultDisplayParams();
static bool DumpLogs(const std::wstring & folder);
static bool FileExists(const std::wstring & filename);
static bool CreateDir(const std::wstring & directory);
static std::wstring GetUserPath();
static std::wstring GetInitPath();
static void SetBehaviorNetFlags(pyKey & behKey, hsBool netForce, hsBool netProp);
static void SendFriendInvite(const wchar email[], const wchar toName[]);
static PyObject* PyGuidGenerate();
static PyObject* GetAIAvatarsByModelName(const char* name);
static void ForceVaultNodeUpdate(unsigned nodeId);
static void VaultDownload(unsigned nodeId);
};
#endif // cyMisc_h

View File

@ -0,0 +1,522 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyMisc.h"
#include "pyGlueHelpers.h"
#include "pyKey.h"
#include "pyPlayer.h"
#include "hsUtils.h"
#include <python.h>
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAgeName, "DEPRECIATED - use ptDniInfoSource instead")
{
return PyString_FromString(cyMisc::GetAgeName());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAgeInfo, "Returns ptAgeInfoStruct of the current Age")
{
return cyMisc::GetAgeInfo();
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAgeTime, "DEPRECIATED - use ptDniInfoSource instead")
{
return PyLong_FromUnsignedLong(cyMisc::GetAgeTime());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetPrevAgeName, "Returns filename of previous age visited")
{
return PyString_FromString(cyMisc::GetPrevAgeName());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetPrevAgeInfo, "Returns ptAgeInfoStruct of previous age visited")
{
return cyMisc::GetPrevAgeInfo();
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetDniTime, "Returns current D'Ni time")
{
return PyLong_FromUnsignedLong(cyMisc::GetDniTime());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetServerTime, "Returns the current time on the server (which is GMT)")
{
return PyLong_FromUnsignedLong(cyMisc::GetServerTime());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGMTtoDniTime, args, "Params: gtime\nConverts GMT time (passed in) to D'Ni time")
{
unsigned long gtime;
if (!PyArg_ParseTuple(args, "l", &gtime))
{
PyErr_SetString(PyExc_TypeError, "PtGMTtoDniTime expects a long");
PYTHON_RETURN_ERROR;
}
return PyLong_FromUnsignedLong(cyMisc::ConvertGMTtoDni(gtime));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetClientName, args, "Params: avatarKey=None\nThis will return the name of the client that is owned by the avatar\n"
"- avatarKey is the ptKey of the avatar to get the client name of.\n"
"If avatarKey is omitted then the local avatar is used")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "|O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetClientName expects an optional ptKey");
PYTHON_RETURN_ERROR;
}
if (keyObj != NULL)
{
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetClientName expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
return PyString_FromString(cyMisc::GetClientName(*key));
}
else
return PyString_FromString(cyMisc::GetLocalClientName());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetLocalAvatar, "This will return a ptSceneobject of the local avatar\n"
"- if there is no local avatar a NameError exception will happen.")
{
return cyMisc::GetLocalAvatar();
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetLocalPlayer, "Returns a ptPlayer object of the local player")
{
return cyMisc::GetLocalPlayer();
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetPlayerList, "Returns a list of ptPlayer objects of all the remote players")
{
std::vector<PyObject*> playerList = cyMisc::GetPlayerList();
PyObject* retVal = PyList_New(playerList.size());
for (int i = 0; i < playerList.size(); i++)
PyList_SetItem(retVal, i, playerList[i]); // steals the ref
return retVal;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetPlayerListDistanceSorted, "Returns a list of ptPlayers, sorted by distance")
{
std::vector<PyObject*> playerList = cyMisc::GetPlayerListDistanceSorted();
PyObject* retVal = PyList_New(playerList.size());
for (int i = 0; i < playerList.size(); i++)
PyList_SetItem(retVal, i, playerList[i]); // steals the ref
return retVal;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtMaxListenListSize, "Returns the maximum listen number of players")
{
return PyLong_FromUnsignedLong(cyMisc::GetMaxListenListSize());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtMaxListenDistSq, "Returns the maximum distance (squared) of the listen range")
{
return PyFloat_FromDouble(cyMisc::GetMaxListenDistSq());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetAvatarKeyFromClientID, args, "Params: clientID\nFrom an integer that is the clientID, find the avatar and return its ptKey")
{
int clientID;
if (!PyArg_ParseTuple(args, "i", &clientID))
{
PyErr_SetString(PyExc_TypeError, "PtGetAvatarKeyFromClientID expects an integer");
PYTHON_RETURN_ERROR;
}
return cyMisc::GetAvatarKeyFromClientID(clientID);
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetClientIDFromAvatarKey, args, "Params: avatarKey\nFrom a ptKey that points at an avatar, return the players clientID (integer)")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetClientIDFromAvatarKey expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetClientIDFromAvatarKey expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey *key = pyKey::ConvertFrom(keyObj);
return PyInt_FromLong(cyMisc::GetClientIDFromAvatarKey(*key));
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetNumRemotePlayers, "Returns the number of remote players in this Age with you.")
{
return PyInt_FromLong(cyMisc::GetNumRemotePlayers());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtValidateKey, args, "Params: key\nReturns true(1) if 'key' is valid and loaded,\n"
"otherwise returns false(0)")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtValidateKey expects an object");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PYTHON_RETURN_BOOL(false);
}
pyKey* key = pyKey::ConvertFrom(keyObj);
PYTHON_RETURN_BOOL(cyMisc::ValidateKey(*key));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendRTChat, args, "Params: fromPlayer,toPlayerList,message,flags\nSends a realtime chat message to the list of ptPlayers\n"
"If toPlayerList is an empty list, it is a broadcast message")
{
PyObject* fromPlayerObj = NULL;
PyObject* toPlayerListObj = NULL;
char* message = NULL;
unsigned long msgFlags;
if (!PyArg_ParseTuple(args, "OOsl", &fromPlayerObj, &toPlayerListObj, &message, &msgFlags))
{
PyErr_SetString(PyExc_TypeError, "PtSendRTChat expects a ptPlayer, a list of ptPlayers, a string, and a long");
PYTHON_RETURN_ERROR;
}
if (!pyPlayer::Check(fromPlayerObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendRTChat expects a ptPlayer, a list of ptPlayers, a string, and a long");
PYTHON_RETURN_ERROR;
}
pyPlayer* fromPlayer = pyPlayer::ConvertFrom(fromPlayerObj);
std::vector<pyPlayer*> toPlayerList;
if (PyList_Check(toPlayerListObj))
{
int listSize = PyList_Size(toPlayerListObj);
for (int i = 0; i < listSize; i++)
{
PyObject* listItem = PyList_GetItem(toPlayerListObj, i);
if (!pyPlayer::Check(listItem))
{
PyErr_SetString(PyExc_TypeError, "PtSendRTChat expects a ptPlayer, a list of ptPlayers, a string, and a long");
PYTHON_RETURN_ERROR;
}
toPlayerList.push_back(pyPlayer::ConvertFrom(listItem));
}
}
else
{
PyErr_SetString(PyExc_TypeError, "PtSendRTChat expects a ptPlayer, a list of ptPlayers, a string, and a long");
PYTHON_RETURN_ERROR;
}
return PyLong_FromUnsignedLong(cyMisc::SendRTChat(*fromPlayer, toPlayerList, message, msgFlags));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendKIMessage, args, "Params: command,value\nSends a command message to the KI frontend.\n"
"See PlasmaKITypes.py for list of commands")
{
unsigned long command;
PyObject* val;
if (!PyArg_ParseTuple(args, "lO", &command, &val))
{
PyErr_SetString(PyExc_TypeError, "PtSendKIMessage expects a long and either a float or a string");
PYTHON_RETURN_ERROR;
}
if (PyString_Check(val))
{
char* strValue = PyString_AsString(val);
wchar_t* temp = hsStringToWString(strValue);
cyMisc::SendKIMessageS(command, temp);
delete [] temp;
}
else if (PyUnicode_Check(val))
{
int len = PyUnicode_GetSize(val);
wchar_t* buffer = TRACKED_NEW wchar_t[len + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)val, buffer, len);
buffer[len] = L'\0';
cyMisc::SendKIMessageS(command, buffer);
delete [] buffer;
}
else if (PyFloat_Check(val))
{
float floatValue = (float)PyFloat_AsDouble(val);
cyMisc::SendKIMessage(command, floatValue);
}
else if (PyInt_Check(val))
{
// accepting an int if people get lazy
float floatValue = (float)PyInt_AsLong(val);
cyMisc::SendKIMessage(command, floatValue);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtSendKIMessage expects a long and either a float or a string");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendKIMessageInt, args, "Params: command,value\nSame as PtSendKIMessage except the value is guaranteed to be a UInt32\n"
"(for things like player IDs)")
{
unsigned long command;
long val;
if (!PyArg_ParseTuple(args, "ll", &command, &val))
{
PyErr_SetString(PyExc_TypeError, "PtSendKIMessageInt expects two longs");
PYTHON_RETURN_ERROR;
}
cyMisc::SendKIMessageI(command, val);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtLoadAvatarModel, args, "Params: modelName, spawnPoint, userStr = \"\"\nLoads an avatar model at the given spawn point. Assigns the user specified string to it.")
{
char* modelName;
PyObject* keyObj = NULL;
PyObject* userStrObj = NULL;
if (!PyArg_ParseTuple(args, "sO|O", &modelName, &keyObj, &userStrObj))
{
PyErr_SetString(PyExc_TypeError, "PtLoadAvatarModel expects a string, a ptKey, and an optional string");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtLoadAvatarModel expects a string, a ptKey, and an optional string");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
std::string userStr = "";
// convert name from a string or unicode string
if (userStrObj)
{
if (PyUnicode_Check(userStrObj))
{
int len = PyUnicode_GetSize(userStrObj);
wchar_t* buffer = TRACKED_NEW wchar_t[len + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)userStrObj, buffer, len);
buffer[len] = L'\0';
char* temp = hsWStringToString(buffer);
delete [] buffer;
userStr = temp;
delete [] temp;
}
else if (PyString_Check(userStrObj))
userStr = PyString_AsString(userStrObj);
else
{
PyErr_SetString(PyExc_TypeError, "PtLoadAvatarModel expects a string, a ptKey, and an optional string");
PYTHON_RETURN_ERROR;
}
}
return cyMisc::LoadAvatarModel(modelName, *key, userStr.c_str());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtUnLoadAvatarModel, args, "Params: avatarKey\nUnloads the specified avatar model")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtUnLoadAvatarModel expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtUnLoadAvatarModel expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::UnLoadAvatarModel(*key);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtForceCursorHidden, cyMisc::ForceCursorHidden, "Forces the cursor to hide, overriding everything.\n"
"Only call if other methods won't work. The only way to show the cursor after this call is PtForceMouseShown()")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtForceCursorShown, cyMisc::ForceCursorShown, "Forces the cursor to show, overriding everything.\n"
"Only call if other methods won't work. This is the only way to show the cursor after a call to PtForceMouseHidden()")
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetLocalizedString, args, "Params: name, arguments=None\nReturns the localized string specified by name "
"(format is Age.Set.Name) and substitutes the arguments in the list of strings passed in as arguments.")
{
PyObject* nameObj = NULL;
PyObject* argObj = NULL;
if (!PyArg_ParseTuple(args, "O|O", &nameObj, &argObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetLocalizedString expects a unicode string and a list of unicode strings");
PYTHON_RETURN_ERROR;
}
std::wstring name;
std::vector<std::wstring> argList;
// convert name from a string or unicode string
if (PyUnicode_Check(nameObj))
{
int len = PyUnicode_GetSize(nameObj);
wchar_t* buffer = TRACKED_NEW wchar_t[len + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)nameObj, buffer, len);
buffer[len] = L'\0';
name = buffer;
delete [] buffer;
}
else if (PyString_Check(nameObj))
{
char* temp = PyString_AsString(nameObj);
wchar_t* wTemp = hsStringToWString(temp);
name = wTemp;
delete [] wTemp;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtGetLocalizedString expects a unicode string and a list of unicode strings");
PYTHON_RETURN_ERROR;
}
if (argObj != NULL) // NULL is valid... but won't fill the args vector
{
// convert args from a list of strings or unicode strings
if (!PyList_Check(argObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetLocalizedString expects a unicode string and a list of unicode strings");
PYTHON_RETURN_ERROR;
}
int len = PyList_Size(argObj);
for (int curItem = 0; curItem < len; curItem++)
{
PyObject* item = PyList_GetItem(argObj, curItem);
std::wstring arg = L"INVALID ARG";
if (item == Py_None) // none is allowed, but treated as a blank string
arg = L"";
else if (PyUnicode_Check(item))
{
int strLen = PyUnicode_GetSize(item);
wchar_t* buffer = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)item, buffer, strLen);
buffer[strLen] = L'\0';
arg = buffer;
delete [] buffer;
}
else if (PyString_Check(item))
{
char* temp = PyString_AsString(item);
wchar_t* wTemp = hsStringToWString(temp);
arg = wTemp;
delete [] wTemp;
}
// everything else won't throw an error, but will show up as INVALID ARG in the string
argList.push_back(arg);
}
}
std::wstring retVal = cyMisc::GetLocalizedString(name, argList);
return PyUnicode_FromWideChar(retVal.c_str(), retVal.length());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtDumpLogs, args, "Params: folder\nDumps all current log files to the specified folder (a sub-folder to the log folder)")
{
PyObject* folderObj = NULL;
if (!PyArg_ParseTuple(args, "O|O", &folderObj))
{
PyErr_SetString(PyExc_TypeError, "PtDumpLogs expects a unicode or standard string");
PYTHON_RETURN_ERROR;
}
// convert folder from a string or unicode string
if (PyUnicode_Check(folderObj))
{
int len = PyUnicode_GetSize(folderObj);
wchar_t* buffer = TRACKED_NEW wchar_t[len + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)folderObj, buffer, len);
buffer[len] = L'\0';
bool retVal = cyMisc::DumpLogs(buffer);
delete [] buffer;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(folderObj))
{
char* temp = PyString_AsString(folderObj);
wchar_t* wTemp = hsStringToWString(temp);
bool retVal = cyMisc::DumpLogs(wTemp);
delete [] wTemp;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtDumpLogs expects a unicode or standard string");
PYTHON_RETURN_ERROR;
}
}
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaMethods - the python method definitions
//
void cyMisc::AddPlasmaMethods(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeName);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeInfo);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeTime);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetPrevAgeName);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetPrevAgeInfo);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetDniTime);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetServerTime);
PYTHON_GLOBAL_METHOD(methods, PtGMTtoDniTime);
PYTHON_GLOBAL_METHOD(methods, PtGetClientName);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetLocalAvatar);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetLocalPlayer);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetPlayerList);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetPlayerListDistanceSorted);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtMaxListenListSize);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtMaxListenDistSq);
PYTHON_GLOBAL_METHOD(methods, PtGetAvatarKeyFromClientID);
PYTHON_GLOBAL_METHOD(methods, PtGetClientIDFromAvatarKey);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetNumRemotePlayers);
PYTHON_GLOBAL_METHOD(methods, PtValidateKey);
PYTHON_GLOBAL_METHOD(methods, PtSendRTChat);
PYTHON_GLOBAL_METHOD(methods, PtSendKIMessage);
PYTHON_GLOBAL_METHOD(methods, PtSendKIMessageInt);
PYTHON_GLOBAL_METHOD(methods, PtLoadAvatarModel);
PYTHON_GLOBAL_METHOD(methods, PtUnLoadAvatarModel);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtForceCursorHidden);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtForceCursorShown);
PYTHON_GLOBAL_METHOD(methods, PtGetLocalizedString);
PYTHON_GLOBAL_METHOD(methods, PtDumpLogs);
AddPlasmaMethods2(methods);
AddPlasmaMethods3(methods);
AddPlasmaMethods4(methods);
}

View File

@ -0,0 +1,514 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyMisc.h"
#include "pyGlueHelpers.h"
#include "pyKey.h"
#include "pyColor.h"
#include "pyPlayer.h"
#include "pyEnum.h"
// for enums
#include "plNetCommon\plNetCommon.h"
#include "plResMgr\plLocalization.h"
#include "plMessage\plLOSRequestMsg.h"
#include <python.h>
PYTHON_GLOBAL_METHOD_DEFINITION(PtYesNoDialog, args, "Params: selfkey,dialogMessage\nThis will display a Yes/No dialog to the user with the text dialogMessage\n"
"This dialog _has_ to be answered by the user.\n"
"And their answer will be returned in a Notify message.")
{
PyObject* keyObj = NULL;
PyObject* dialogMsgObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &keyObj, &dialogMsgObj))
{
PyErr_SetString(PyExc_TypeError, "PtYesNoDialog expects a ptKey and a string or unicode string");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtYesNoDialog expects a ptKey and a string or unicode string");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
if (PyUnicode_Check(dialogMsgObj))
{
int len = PyUnicode_GetSize(dialogMsgObj);
wchar_t* text = TRACKED_NEW wchar_t[len + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)dialogMsgObj, text, len);
text[len] = L'\0';
cyMisc::YesNoDialog(*key, text);
delete [] text;
PYTHON_RETURN_NONE;
}
else if (PyString_Check(dialogMsgObj))
{
char* text = PyString_AsString(dialogMsgObj);
cyMisc::YesNoDialog(*key, text);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "PtYesNoDialog expects a ptKey and a string or unicode string");
PYTHON_RETURN_ERROR;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtRateIt, args, "Params: chronicleName,dialogPrompt,onceFlag\nShows a dialog with dialogPrompt and stores user input rating into chronicleName")
{
char* chronicleName;
char* dialogPrompt;
char onceFlag;
if (!PyArg_ParseTuple(args, "ssb", &chronicleName, &dialogPrompt, &onceFlag))
{
PyErr_SetString(PyExc_TypeError, "PtRateIt expects two strings and a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::RateIt(chronicleName, dialogPrompt, onceFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtExcludeRegionSet, args, "Params: senderKey,regionKey,state\nThis will set the state of an exclude region\n"
"- 'senderKey' is a ptKey of the PythonFile component\n"
"- 'regionKey' is a ptKey of the exclude region\n"
"- 'state' is either kExRegRelease or kExRegClear")
{
PyObject* senderObj = NULL;
PyObject* regionObj = NULL;
unsigned short stateVal;
if (!PyArg_ParseTuple(args, "OOh", &senderObj, &regionObj, &stateVal))
{
PyErr_SetString(PyExc_TypeError, "PtExcludeRegionSet expects two ptKeys and a short");
PYTHON_RETURN_ERROR;
}
if ((!pyKey::Check(senderObj)) || (!pyKey::Check(regionObj)))
{
PyErr_SetString(PyExc_TypeError, "PtExcludeRegionSet expects two ptKeys and a short");
PYTHON_RETURN_ERROR;
}
pyKey* sender = pyKey::ConvertFrom(senderObj);
pyKey* region = pyKey::ConvertFrom(regionObj);
cyMisc::ExcludeRegionSet(*sender, *region, stateVal);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtExcludeRegionSetNow, args, "Params: senderKey,regionKey,state\nThis will set the state of an exclude region immediately on the server\n"
"- 'senderKey' is a ptKey of the PythonFile component\n"
"- 'regionKey' is a ptKey of the exclude region\n"
"- 'state' is either kExRegRelease or kExRegClear")
{
PyObject* senderObj = NULL;
PyObject* regionObj = NULL;
unsigned short stateVal;
if (!PyArg_ParseTuple(args, "OOh", &senderObj, &regionObj, &stateVal))
{
PyErr_SetString(PyExc_TypeError, "PtExcludeRegionSetNow expects two ptKeys and a short");
PYTHON_RETURN_ERROR;
}
if ((!pyKey::Check(senderObj)) || (!pyKey::Check(regionObj)))
{
PyErr_SetString(PyExc_TypeError, "PtExcludeRegionSetNow expects two ptKeys and a short");
PYTHON_RETURN_ERROR;
}
pyKey* sender = pyKey::ConvertFrom(senderObj);
pyKey* region = pyKey::ConvertFrom(regionObj);
cyMisc::ExcludeRegionSetNow(*sender, *region, stateVal);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtAcceptInviteInGame, args, "Params: friendName,inviteKey\nSends a VaultTask to the server to perform the invite")
{
char* friendName;
char* inviteKey;
if (!PyArg_ParseTuple(args, "ss", &friendName, &inviteKey))
{
PyErr_SetString(PyExc_TypeError, "PtAcceptInviteInGame expects two strings");
PYTHON_RETURN_ERROR;
}
cyMisc::AcceptInviteInGame(friendName, inviteKey);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetTime, "Returns the number of seconds since the game was started.")
{
return PyFloat_FromDouble(cyMisc::GetSeconds());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetGameTime, "Returns the system game time (frame based) in seconds.")
{
return PyFloat_FromDouble(cyMisc::GetSysSeconds());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetFrameDeltaTime, "Returns the amount of time that has elapsed since last frame.")
{
return PyFloat_FromDouble(cyMisc::GetDelSysSeconds());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtPageInNode, args, "Params: nodeName, ageName=\"\"\nPages in node, or a list of nodes")
{
PyObject* nodeNameObj = NULL;
char* ageName = NULL;
if (!PyArg_ParseTuple(args, "O|s", &nodeNameObj, &ageName))
{
PyErr_SetString(PyExc_TypeError, "PtPageInNode expects a string or list of strings, and optionally a string");
PYTHON_RETURN_ERROR;
}
std::vector<std::string> nodeNames;
if (PyString_Check(nodeNameObj))
{
nodeNames.push_back(PyString_AsString(nodeNameObj));
}
else if (PyList_Check(nodeNameObj))
{
int num = PyList_Size(nodeNameObj);
for (int i = 0; i < num; i++)
{
PyObject* listItem = PyList_GetItem(nodeNameObj, i);
if (!PyString_Check(listItem))
{
PyErr_SetString(PyExc_TypeError, "PtPageInNode expects a string or list of strings, and optionally a string");
PYTHON_RETURN_ERROR;
}
nodeNames.push_back(PyString_AsString(listItem));
}
}
else
{
PyErr_SetString(PyExc_TypeError, "PtPageInNode expects a string or list of strings, and optionally a string");
PYTHON_RETURN_ERROR;
}
cyMisc::PageInNodes(nodeNames, ageName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtPageOutNode, args, "Params: nodeName\nPages out a node")
{
char* nodeName;
if (!PyArg_ParseTuple(args, "s", &nodeName))
{
PyErr_SetString(PyExc_TypeError, "PtPageOutNode expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::PageOutNode(nodeName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtLimitAvatarLOD, args, "Params: LODlimit\nSets avatar's LOD limit")
{
int lodLimit;
if (!PyArg_ParseTuple(args, "i", &lodLimit))
{
PyErr_SetString(PyExc_TypeError, "PtLimitAvatarLOD expects an integer");
PYTHON_RETURN_ERROR;
}
cyMisc::LimitAvatarLOD(lodLimit);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFogSetDefColor, args, "Params: color\nSets default fog color")
{
PyObject* colorObj = NULL;
if (!PyArg_ParseTuple(args, "O", &colorObj))
{
PyErr_SetString(PyExc_TypeError, "PtFogSetDefColor expects a ptColor object");
PYTHON_RETURN_ERROR;
}
if (!pyColor::Check(colorObj))
{
PyErr_SetString(PyExc_TypeError, "PtFogSetDefColor expects a ptColor object");
PYTHON_RETURN_ERROR;
}
pyColor* color = pyColor::ConvertFrom(colorObj);
cyMisc::FogSetDefColor(*color);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFogSetDefLinear, args, "Params: start,end,density\nSet linear fog values")
{
float start, end, density;
if (!PyArg_ParseTuple(args, "fff", &start, &end, &density))
{
PyErr_SetString(PyExc_TypeError, "PtFogSetDefLinear expects three floats");
PYTHON_RETURN_ERROR;
}
cyMisc::FogSetDefLinear(start, end, density);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFogSetDefExp, args, "Params: end,density\nSet exp fog values")
{
float end, density;
if (!PyArg_ParseTuple(args, "ff", &end, &density))
{
PyErr_SetString(PyExc_TypeError, "PtFogSetDefExp expects three floats");
PYTHON_RETURN_ERROR;
}
cyMisc::FogSetDefExp(end, density);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFogSetDefExp2, args, "Params: end,density\nSet exp2 fog values")
{
float end, density;
if (!PyArg_ParseTuple(args, "ff", &end, &density))
{
PyErr_SetString(PyExc_TypeError, "PtFogSetDefExp2 expects three floats");
PYTHON_RETURN_ERROR;
}
cyMisc::FogSetDefExp2(end, density);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtLoadDialog, args, "Params: dialogName,selfKey=None,ageName=\"\"\nLoads a GUI dialog by name and optionally set the Notify proc key\n"
"If the dialog is already loaded then it won't load it again")
{
char* dialogName;
PyObject* keyObj = NULL;
char* ageName = NULL;
if (!PyArg_ParseTuple(args, "s|Os", &dialogName, &keyObj, &ageName))
{
PyErr_SetString(PyExc_TypeError, "PtLoadDialog expects a string, and optionally a ptKey and second string");
PYTHON_RETURN_ERROR;
}
if (keyObj)
{
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtLoadDialog expects a string, and optionally a ptKey and second string");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
if (ageName)
cyMisc::LoadDialogKA(dialogName, *key, ageName);
else
cyMisc::LoadDialogK(dialogName, *key);
}
else
cyMisc::LoadDialog(dialogName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtUnloadDialog, args, "Params: dialogName\nThis will unload the GUI dialog by name. If not loaded then nothing will happen")
{
char* dialogName;
if (!PyArg_ParseTuple(args, "s", &dialogName))
{
PyErr_SetString(PyExc_TypeError, "PtUnloadDialog expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::UnloadDialog(dialogName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtIsDialogLoaded, args, "Params: dialogName\nTest to see if a GUI dialog is loaded, by name")
{
char* dialogName;
if (!PyArg_ParseTuple(args, "s", &dialogName))
{
PyErr_SetString(PyExc_TypeError, "PtIsDialogLoaded expects a string");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_BOOL(cyMisc::IsDialogLoaded(dialogName));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtShowDialog, args, "Params: dialogName\nShow a GUI dialog by name (does not load dialog)")
{
char* dialogName;
if (!PyArg_ParseTuple(args, "s", &dialogName))
{
PyErr_SetString(PyExc_TypeError, "PtShowDialog expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::ShowDialog(dialogName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtHideDialog, args, "Params: dialogName\nHide a GUI dialog by name (does not unload dialog)")
{
char* dialogName;
if (!PyArg_ParseTuple(args, "s", &dialogName))
{
PyErr_SetString(PyExc_TypeError, "PtHideDialog expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::HideDialog(dialogName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetDialogFromTagID, args, "Params: tagID\nReturns the dialog associated with the tagID")
{
unsigned long tagID;
if (!PyArg_ParseTuple(args, "l", &tagID))
{
PyErr_SetString(PyExc_TypeError, "PtGetDialogFromTagID expects a long");
PYTHON_RETURN_ERROR;
}
return cyMisc::GetDialogFromTagID(tagID);
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetDialogFromString, args, "Params: dialogName\nGet a ptGUIDialog from its name")
{
char* dialogName;
if (!PyArg_ParseTuple(args, "s", &dialogName))
{
PyErr_SetString(PyExc_TypeError, "PtHideDialog expects a string");
PYTHON_RETURN_ERROR;
}
return cyMisc::GetDialogFromString(dialogName);
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsGUIModal, "Returns true if the GUI is displaying a modal dialog and blocking input")
{
PYTHON_RETURN_BOOL(cyMisc::IsGUIModal());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendPrivateChatList, args, "Params: chatList\nLock the local avatar into private vox messaging, and / or add new members to his chat list")
{
PyObject* chatListObj = NULL;
if (!PyArg_ParseTuple(args, "O", &chatListObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendPrivateChatList expects a list of ptPlayers");
PYTHON_RETURN_ERROR;
}
std::vector<pyPlayer*> chatList;
if (PyList_Check(chatListObj))
{
int listSize = PyList_Size(chatListObj);
for (int i = 0; i < listSize; i++)
{
PyObject* listItem = PyList_GetItem(chatListObj, i);
if (!pyPlayer::Check(listItem))
{
PyErr_SetString(PyExc_TypeError, "PtSendPrivateChatList expects a list of ptPlayers");
PYTHON_RETURN_ERROR;
}
chatList.push_back(pyPlayer::ConvertFrom(listItem));
}
}
else
{
PyErr_SetString(PyExc_TypeError, "PtSendPrivateChatList expects a list of ptPlayers");
PYTHON_RETURN_ERROR;
}
cyMisc::SetPrivateChatList(chatList);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtClearPrivateChatList, args, "Params: memberKey\nRemove the local avatar from private vox messaging, and / or clear members from his chat list")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtClearPrivateChatList expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtClearPrivateChatList expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::ClearPrivateChatList(*key);
PYTHON_RETURN_NONE;
}
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaMethods - the python method definitions
//
void cyMisc::AddPlasmaMethods2(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD(methods, PtYesNoDialog);
PYTHON_GLOBAL_METHOD(methods, PtRateIt);
PYTHON_GLOBAL_METHOD(methods, PtExcludeRegionSet);
PYTHON_GLOBAL_METHOD(methods, PtExcludeRegionSetNow);
PYTHON_GLOBAL_METHOD(methods, PtAcceptInviteInGame);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetTime);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetGameTime);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetFrameDeltaTime);
PYTHON_GLOBAL_METHOD(methods, PtPageInNode);
PYTHON_GLOBAL_METHOD(methods, PtPageOutNode);
PYTHON_GLOBAL_METHOD(methods, PtLimitAvatarLOD);
PYTHON_GLOBAL_METHOD(methods, PtFogSetDefColor);
PYTHON_GLOBAL_METHOD(methods, PtFogSetDefLinear);
PYTHON_GLOBAL_METHOD(methods, PtFogSetDefExp);
PYTHON_GLOBAL_METHOD(methods, PtFogSetDefExp2);
PYTHON_GLOBAL_METHOD(methods, PtLoadDialog);
PYTHON_GLOBAL_METHOD(methods, PtUnloadDialog);
PYTHON_GLOBAL_METHOD(methods, PtIsDialogLoaded);
PYTHON_GLOBAL_METHOD(methods, PtShowDialog);
PYTHON_GLOBAL_METHOD(methods, PtHideDialog);
PYTHON_GLOBAL_METHOD(methods, PtGetDialogFromTagID);
PYTHON_GLOBAL_METHOD(methods, PtGetDialogFromString);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsGUIModal);
PYTHON_GLOBAL_METHOD(methods, PtSendPrivateChatList);
PYTHON_GLOBAL_METHOD(methods, PtClearPrivateChatList);
}
void cyMisc::AddPlasmaConstantsClasses(PyObject *m)
{
PYTHON_ENUM_START(PtCCRPetitionType);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kGeneralHelp,plNetCommon::PetitionTypes::kGeneralHelp);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kBug, plNetCommon::PetitionTypes::kBug);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kFeedback, plNetCommon::PetitionTypes::kFeedback);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kExploit, plNetCommon::PetitionTypes::kExploit);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kHarass, plNetCommon::PetitionTypes::kHarass);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kStuck, plNetCommon::PetitionTypes::kStuck);
PYTHON_ENUM_ELEMENT(PtCCRPetitionType, kTechnical, plNetCommon::PetitionTypes::kTechnical);
PYTHON_ENUM_END(m, PtCCRPetitionType);
PYTHON_ENUM_START(PtLanguage);
PYTHON_ENUM_ELEMENT(PtLanguage, kEnglish, plLocalization::kEnglish);
PYTHON_ENUM_ELEMENT(PtLanguage, kFrench, plLocalization::kFrench);
PYTHON_ENUM_ELEMENT(PtLanguage, kGerman, plLocalization::kGerman);
PYTHON_ENUM_ELEMENT(PtLanguage, kSpanish, plLocalization::kSpanish);
PYTHON_ENUM_ELEMENT(PtLanguage, kItalian, plLocalization::kItalian);
PYTHON_ENUM_ELEMENT(PtLanguage, kJapanese, plLocalization::kJapanese);
PYTHON_ENUM_ELEMENT(PtLanguage, kNumLanguages, plLocalization::kNumLanguages);
PYTHON_ENUM_END(m, PtLanguage);
PYTHON_ENUM_START(PtLOSReportType);
PYTHON_ENUM_ELEMENT(PtLOSReportType, kReportHit, plLOSRequestMsg::kReportHit);
PYTHON_ENUM_ELEMENT(PtLOSReportType, kReportMiss, plLOSRequestMsg::kReportMiss);
PYTHON_ENUM_ELEMENT(PtLOSReportType, kReportHitOrMiss, plLOSRequestMsg::kReportHitOrMiss);
PYTHON_ENUM_END(m, PtLOSReportType);
PYTHON_ENUM_START(PtLOSObjectType);
PYTHON_ENUM_ELEMENT(PtLOSObjectType, kClickables, kClickables);
PYTHON_ENUM_ELEMENT(PtLOSObjectType, kCameraBlockers, kCameraBlockers);
PYTHON_ENUM_ELEMENT(PtLOSObjectType, kCustom, kCustom);
PYTHON_ENUM_ELEMENT(PtLOSObjectType, kShootable, kShootable);
PYTHON_ENUM_END(m, PtLOSObjectType);
}

View File

@ -0,0 +1,762 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyMisc.h"
#include "pyGlueHelpers.h"
#include "pyKey.h"
#include "pySceneObject.h"
#include <python.h>
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendPetitionToCCR, args, "Params: message,reason=0,title=\"\"\nSends a petition with a message to the CCR group")
{
char* message;
unsigned char reason = 0;
char* title = nil;
if (!PyArg_ParseTuple(args, "s|bs", &message, &reason, &title))
{
PyErr_SetString(PyExc_TypeError, "PtSendPetitionToCCR expects a string, and an optional unsigned 8-bit int and optional string");
PYTHON_RETURN_ERROR;
}
cyMisc::SendPetitionToCCRI(message, reason, title);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendChatToCCR, args, "Params: message,CCRPlayerID\nSends a chat message to a CCR that has contacted this player")
{
char* message;
long CCRPlayerID;
if (!PyArg_ParseTuple(args, "sl", &message, &CCRPlayerID))
{
PyErr_SetString(PyExc_TypeError, "PtSendChatToCCR expects a string and a long");
PYTHON_RETURN_ERROR;
}
cyMisc::SendChatToCCR(message, CCRPlayerID);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetPythonLoggingLevel, "Returns the current level of python logging")
{
return PyLong_FromUnsignedLong(cyMisc::GetPythonLoggingLevel());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetPythonLoggingLevel, args, "Params: level\nSets the current level of python logging")
{
unsigned long level;
if (!PyArg_ParseTuple(args, "l", &level))
{
PyErr_SetString(PyExc_TypeError, "PtSetPythonLoggingLevel expects an unsigned long");
PYTHON_RETURN_ERROR;
}
cyMisc::SetPythonLoggingLevel(level);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtConsole, args, "Params: command\nThis will execute 'command' as if it were typed into the Plasma console.")
{
char* command;
if (!PyArg_ParseTuple(args, "s", &command))
{
PyErr_SetString(PyExc_TypeError, "PtConsole expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::Console(command);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtConsoleNet, args, "Params: command,netForce\nThis will execute 'command' on the console, over the network, on all clients.\n"
"If 'netForce' is true then force command to be sent over the network.")
{
char* command;
char netForce;
if (!PyArg_ParseTuple(args, "sb", &command, &netForce))
{
PyErr_SetString(PyExc_TypeError, "PtConsoleNet expects a string and a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::ConsoleNet(command, netForce != 0);
PYTHON_RETURN_NONE;
}
#if 1
// TEMP
PYTHON_GLOBAL_METHOD_DEFINITION(PtPrintToScreen, args, "Params: message\nPrints 'message' to the status log, for debug only.")
{
char* message;
if (!PyArg_ParseTuple(args, "s", &message))
{
PyErr_SetString(PyExc_TypeError, "PtPrintToScreen expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::PrintToScreen(message);
PYTHON_RETURN_NONE;
}
#endif
PYTHON_GLOBAL_METHOD_DEFINITION(PtAtTimeCallback, args, "Params: selfkey,time,id\nThis will create a timer callback that will call OnTimer when complete\n"
"- 'selfkey' is the ptKey of the PythonFile component\n"
"- 'time' is how much time from now (in seconds) to call back\n"
"- 'id' is an integer id that will be returned in the OnTimer call")
{
PyObject* keyObj = NULL;
float time;
unsigned long id;
if (!PyArg_ParseTuple(args, "Ofl", &keyObj, &time, &id))
{
PyErr_SetString(PyExc_TypeError, "PtAtTimeCallback expects a ptKey, a float, and an unsigned long");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtAtTimeCallback expects a ptKey, a float, and an unsigned long");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::TimerCallback(*key, time, id);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtClearTimerCallbacks, args, "Params: key\nThis will remove timer callbacks to the specified key")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtClearTimerCallbacks expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtClearTimerCallbacks expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::ClearTimerCallbacks(*key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFindSceneobject, args, "Params: name,ageName\nThis will try to find a sceneobject based on its name and what age its in\n"
"- it will return a ptSceneObject if found"
"- if not found then a NameError exception will happen")
{
char* name;
char* ageName;
if (!PyArg_ParseTuple(args, "ss", &name, &ageName))
{
PyErr_SetString(PyExc_TypeError, "PtFindSceneobject expects two strings");
PYTHON_RETURN_ERROR;
}
return cyMisc::FindSceneObject(name, ageName);
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFindActivator, args, "Params: name\nThis will try to find an activator based on its name\n"
"- it will return a ptKey if found"
"- it will return None if not found")
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "PtFindActivator expects a string");
PYTHON_RETURN_ERROR;
}
return cyMisc::FindActivator(name);
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtClearCameraStack, cyMisc::ClearCameraStack, "Clears the camera stack")
PYTHON_GLOBAL_METHOD_DEFINITION(PtWasLocallyNotified, args, "Params: selfKey\nReturns 1 if the last notify was local or 0 if the notify originated on the network")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtWasLocallyNotified expects a ptKey");
PYTHON_RETURN_NONE;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtWasLocallyNotified expects a ptKey");
PYTHON_RETURN_NONE;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
PYTHON_RETURN_BOOL(cyMisc::WasLocallyNotified(*key));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtAttachObject, args, "Params: child,parent\nAttach child to parent based on ptKey or ptSceneobject\n"
"- childKey is the ptKey or ptSceneobject of the one being attached\n"
"- parentKey is the ptKey or ptSceneobject of the one being attached to\n"
"(both arguments must be ptKeys or ptSceneobjects, you cannot mix types)")
{
PyObject* childObj = NULL;
PyObject* parentObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &childObj, &parentObj))
{
PyErr_SetString(PyExc_TypeError, "PtAttachObject expects either two ptKeys or two ptSceneobjects");
PYTHON_RETURN_ERROR;
}
if ((pyKey::Check(childObj)) && (pyKey::Check(parentObj)))
{
pyKey* child = pyKey::ConvertFrom(childObj);
pyKey* parent = pyKey::ConvertFrom(parentObj);
cyMisc::AttachObject(*child, *parent);
}
else if ((pySceneObject::Check(childObj)) && (pySceneObject::Check(parentObj)))
{
pySceneObject* child = pySceneObject::ConvertFrom(childObj);
pySceneObject* parent = pySceneObject::ConvertFrom(parentObj);
cyMisc::AttachObjectSO(*child, *parent);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtAttachObject expects either two ptKeys or two ptSceneobjects");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtDetachObject, args, "Params: child,parent\nDetach child from parent based on ptKey or ptSceneobject\n"
"- child is the ptKey or ptSceneobject of the one being detached\n"
"- parent is the ptKey or ptSceneobject of the one being detached from\n"
"(both arguments must be ptKeys or ptSceneobjects, you cannot mix types)")
{
PyObject* childObj = NULL;
PyObject* parentObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &childObj, &parentObj))
{
PyErr_SetString(PyExc_TypeError, "PtDetachObject expects either two ptKeys or two ptSceneobjects");
PYTHON_RETURN_ERROR;
}
if ((pyKey::Check(childObj)) && (pyKey::Check(parentObj)))
{
pyKey* child = pyKey::ConvertFrom(childObj);
pyKey* parent = pyKey::ConvertFrom(parentObj);
cyMisc::DetachObject(*child, *parent);
}
else if ((pySceneObject::Check(childObj)) && (pySceneObject::Check(parentObj)))
{
pySceneObject* child = pySceneObject::ConvertFrom(childObj);
pySceneObject* parent = pySceneObject::ConvertFrom(parentObj);
cyMisc::DetachObjectSO(*child, *parent);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtDetachObject expects either two ptKeys or two ptSceneobjects");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_NONE;
}
/*PYTHON_GLOBAL_METHOD_DEFINITION(PtLinkToAge, args, "Params: selfKey,ageName,spawnPointName\nDEPRECIATED: Links you to the specified age and spawnpoint")
{
PyObject* keyObj = NULL;
char* ageName;
char* spawnPointName;
if (!PyArg_ParseTuple(args, "Oss", &keyObj, &ageName, &spawnPointName))
{
PyErr_SetString(PyExc_TypeError, "PtLinkToAge expects a ptKey, and two strings");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtLinkToAge expects a ptKey, and two strings");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::LinkToAge(*key, ageName, spawnPointName);
PYTHON_RETURN_NONE;
}*/
PYTHON_GLOBAL_METHOD_DEFINITION(PtDirtySynchState, args, "Params: selfKey,SDLStateName,flags\nDO NOT USE - handled by ptSDL")
{
PyObject* keyObj = NULL;
char* SDLStateName;
unsigned long flags;
if (!PyArg_ParseTuple(args, "Osl", &keyObj, &SDLStateName, &flags))
{
PyErr_SetString(PyExc_TypeError, "PtDirtySynchState expects a ptKey, a string, and an unsigned long");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtDirtySynchState expects a ptKey, a string, and an unsigned long");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SetDirtySyncState(*key, SDLStateName, flags);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtDirtySynchClients, args, "Params: selfKey,SDLStateName,flags\nDO NOT USE - handled by ptSDL")
{
PyObject* keyObj = NULL;
char* SDLStateName;
unsigned long flags;
if (!PyArg_ParseTuple(args, "Osl", &keyObj, &SDLStateName, &flags))
{
PyErr_SetString(PyExc_TypeError, "PtDirtySynchClients expects a ptKey, a string, and an unsigned long");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtDirtySynchClients expects a ptKey, a string, and an unsigned long");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SetDirtySyncStateWithClients(*key, SDLStateName, flags);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtEnableControlKeyEvents, args, "Params: selfKey\nEnable control key events to call OnControlKeyEvent(controlKey,activateFlag)")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtEnableControlKeyEvents expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtEnableControlKeyEvents expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::EnableControlKeyEvents(*key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtDisableControlKeyEvents, args, "Params: selfKey\nDisable the control key events from calling OnControlKeyEvent")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtDisableControlKeyEvents expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtDisableControlKeyEvents expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::DisableControlKeyEvents(*key);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtEnableAvatarCursorFade, cyMisc::EnableAvatarCursorFade, "Enable the avatar cursor fade")
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtDisableAvatarCursorFade, cyMisc::DisableAvatarCursorFade, "Disable the avatar cursor fade")
PYTHON_GLOBAL_METHOD_DEFINITION(PtFadeLocalAvatar, args, "Params: fade\nFade (or unfade) the local avatar")
{
char fade;
if (!PyArg_ParseTuple(args, "b", &fade))
{
PyErr_SetString(PyExc_TypeError, "PtFadeLocalAvatar expects a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::FadeLocalPlayer(fade != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetOfferBookMode, args, "Params: selfkey,ageFilename,ageInstanceName\nPut us into the offer book interface")
{
PyObject* keyObj = NULL;
char* ageFilename;
char* ageInstanceName;
if (!PyArg_ParseTuple(args, "Oss", &keyObj, &ageFilename, &ageInstanceName))
{
PyErr_SetString(PyExc_TypeError, "PtSetOfferBookMode expects a ptKey, and two strings");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetOfferBookMode expects a ptKey, and two strings");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::EnableOfferBookMode(*key, ageFilename, ageInstanceName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetShareSpawnPoint, args, "Params: spawnPoint\nThis sets the desired spawn point for the receiver to link to")
{
char* spawnPoint;
if (!PyArg_ParseTuple(args, "s", &spawnPoint))
{
PyErr_SetString(PyExc_TypeError, "PtSetShareSpawnPoint expects a string");
PYTHON_RETURN_ERROR;
}
cyMisc::SetShareSpawnPoint(spawnPoint);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetShareAgeInstanceGuid, args, "Params: instanceGuid\nThis sets the desired age instance guid for the receiver to link to")
{
char* guidStr;
if (!PyArg_ParseTuple(args, "s", &guidStr))
{
PyErr_SetString(PyExc_TypeError, "PtSetShareAgeInstanceGuid expects a string");
PYTHON_RETURN_ERROR;
}
Uuid guid;
if (!GuidFromString(guidStr, &guid))
{
PyErr_SetString(PyExc_TypeError, "PtSetShareAgeInstanceGuid string parameter is not a guid string");
PYTHON_RETURN_ERROR;
}
cyMisc::SetShareAgeInstanceGuid(guid);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtNotifyOffererLinkAccepted, args, "Params: offerer\nTell the offerer that we accepted the link offer")
{
unsigned long offerer;
if (!PyArg_ParseTuple(args, "l", &offerer))
{
PyErr_SetString(PyExc_TypeError, "PtNotifyOffererLinkAccepted expects an unsigned long");
PYTHON_RETURN_ERROR;
}
cyMisc::NotifyOffererPublicLinkAccepted(offerer);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtNotifyOffererLinkRejected, args, "Params: offerer\nTell the offerer that we rejected the link offer")
{
unsigned long offerer;
if (!PyArg_ParseTuple(args, "l", &offerer))
{
PyErr_SetString(PyExc_TypeError, "PtNotifyOffererLinkRejected expects an unsigned long");
PYTHON_RETURN_ERROR;
}
cyMisc::NotifyOffererPublicLinkRejected(offerer);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtNotifyOffererLinkCompleted, args, "Params: offerer\nTell the offerer that we completed the link")
{
unsigned long offerer;
if (!PyArg_ParseTuple(args, "l", &offerer))
{
PyErr_SetString(PyExc_TypeError, "PtNotifyOffererLinkCompleted expects an unsigned long");
PYTHON_RETURN_ERROR;
}
cyMisc::NotifyOffererPublicLinkCompleted(offerer);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtClearOfferBookMode, cyMisc::DisableOfferBookMode, "Cancel the offer book interface")
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetLocalClientID, "Returns our local client ID number")
{
return PyInt_FromLong(cyMisc::GetLocalClientID());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsCCRAway, "Returns current status of CCR dept")
{
PYTHON_RETURN_BOOL(cyMisc::IsCCRAwayStatus());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtAmCCR, "Returns true if local player is a CCR")
{
PYTHON_RETURN_BOOL(cyMisc::AmCCR());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtToggleAvatarClickability, args, "Params: on\nTurns on and off our avatar's clickability")
{
char on;
if (!PyArg_ParseTuple(args, "b", &on))
{
PyErr_SetString(PyExc_TypeError, "PtToggleAvatarClickability expects a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::ToggleAvatarClickability(on != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtTransferParticlesToObject, args, "Params: objFrom, objTo, num\nTransfers num particles from objFrom to objTo")
{
PyObject* objFrom = NULL;
PyObject* objTo = NULL;
int num;
if (!PyArg_ParseTuple(args, "OOi", &objFrom, &objTo, &num))
{
PyErr_SetString(PyExc_TypeError, "PtTransferParticlesToObject expects two ptKeys and an int");
PYTHON_RETURN_ERROR;
}
if ((!pyKey::Check(objFrom)) || (!pyKey::Check(objTo)))
{
PyErr_SetString(PyExc_TypeError, "PtTransferParticlesToObject expects two ptKeys and an int");
PYTHON_RETURN_ERROR;
}
pyKey* from = pyKey::ConvertFrom(objFrom);
pyKey* to = pyKey::ConvertFrom(objTo);
cyMisc::TransferParticlesToKey(*from, *to, num);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetParticleDissentPoint, args, "Params: x, y, z, particlesys\nSets the dissent point of the particlesys to x,y,z")
{
float x,y,z;
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "fffO", &x, &y, &z, &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetParticleDissentPoint expects three floats and a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetParticleDissentPoint expects three floats and a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SetParticleDissentPoint(x, y, z, *key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetControlEvents, args, "Params: on, key\nRegisters or unregisters for control event messages")
{
char on;
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "bO", &on, &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetControlEvents expects a boolean and a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetControlEvents expects a boolean and a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::RegisterForControlEventMessages(on != 0, *key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetLanguage, "Returns the current language as a PtLanguage enum")
{
return PyInt_FromLong(cyMisc::GetLanguage());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtUsingUnicode, "Returns true if the current language is a unicode language (like Japanese)")
{
PYTHON_RETURN_BOOL(cyMisc::UsingUnicode());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFakeLinkAvatarToObject, args, "Params: avatar,object\nPseudo-links avatar to object within the same age\n")
{
PyObject* avatarObj = NULL;
PyObject* objectObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &avatarObj, &objectObj))
{
PyErr_SetString(PyExc_TypeError, "PtFakeLinkAvatarToObject expects two ptKeys");
PYTHON_RETURN_ERROR;
}
if ((!pyKey::Check(avatarObj)) || (!pyKey::Check(objectObj)))
{
PyErr_SetString(PyExc_TypeError, "PtFakeLinkAvatarToObject expects two ptKeys");
PYTHON_RETURN_ERROR;
}
pyKey* avatar = pyKey::ConvertFrom(avatarObj);
pyKey* object = pyKey::ConvertFrom(objectObj);
cyMisc::FakeLinkToObject(*avatar, *object);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtWearDefaultClothingType, args, "Params: key,type\nForces the avatar to wear the default clothing of the specified type")
{
PyObject* keyObj = NULL;
unsigned long type;
if (!PyArg_ParseTuple(args, "Ol", &keyObj, &type))
{
PyErr_SetString(PyExc_TypeError, "PtWearDefaultClothingType expects a ptKey and an unsigned long");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtWearDefaultClothingType expects a ptKey and an unsigned long");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::WearDefaultClothingType(*key, type);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFileExists, args, "Params: filename\nReturns true if the specified file exists")
{
PyObject* filenameObj;
if (!PyArg_ParseTuple(args, "O", &filenameObj))
{
PyErr_SetString(PyExc_TypeError, "PtFileExists expects a string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(filenameObj))
{
int strLen = PyUnicode_GetSize(filenameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)filenameObj, text, strLen);
text[strLen] = L'\0';
bool retVal = cyMisc::FileExists(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(filenameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(filenameObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = cyMisc::FileExists(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtFileExists expects a string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtCreateDir, args, "Params: directory\nCreates the directory and all parent folders. Returns false on failure")
{
PyObject* directoryObj;
if (!PyArg_ParseTuple(args, "O", &directoryObj))
{
PyErr_SetString(PyExc_TypeError, "PtCreateDir expects a string");
PYTHON_RETURN_ERROR;
}
if (PyUnicode_Check(directoryObj))
{
int strLen = PyUnicode_GetSize(directoryObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)directoryObj, text, strLen);
text[strLen] = L'\0';
bool retVal = cyMisc::CreateDir(text);
delete [] text;
PYTHON_RETURN_BOOL(retVal);
}
else if (PyString_Check(directoryObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(directoryObj);
wchar_t* wText = hsStringToWString(text);
bool retVal = cyMisc::CreateDir(wText);
delete [] wText;
PYTHON_RETURN_BOOL(retVal);
}
else
{
PyErr_SetString(PyExc_TypeError, "PtCreateDir expects a string");
PYTHON_RETURN_ERROR;
}
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetUserPath, "Returns the unicode path to the client's root user directory. Do NOT convert to a standard string.")
{
std::wstring val = cyMisc::GetUserPath();
return PyUnicode_FromWideChar(val.c_str(), val.length());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetInitPath, "Returns the unicode path to the client's init directory. Do NOT convert to a standard string.")
{
std::wstring val = cyMisc::GetInitPath();
return PyUnicode_FromWideChar(val.c_str(), val.length());
}
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaMethods - the python method definitions
//
void cyMisc::AddPlasmaMethods3(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD(methods, PtSendPetitionToCCR);
PYTHON_GLOBAL_METHOD(methods, PtSendChatToCCR);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetPythonLoggingLevel);
PYTHON_GLOBAL_METHOD(methods, PtSetPythonLoggingLevel);
PYTHON_GLOBAL_METHOD(methods, PtConsole);
PYTHON_GLOBAL_METHOD(methods, PtConsoleNet);
#if 1
// TEMP
PYTHON_GLOBAL_METHOD(methods, PtPrintToScreen);
#endif
PYTHON_GLOBAL_METHOD(methods, PtAtTimeCallback);
PYTHON_GLOBAL_METHOD(methods, PtClearTimerCallbacks);
PYTHON_GLOBAL_METHOD(methods, PtFindSceneobject);
PYTHON_GLOBAL_METHOD(methods, PtFindActivator);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtClearCameraStack);
PYTHON_GLOBAL_METHOD(methods, PtWasLocallyNotified);
PYTHON_GLOBAL_METHOD(methods, PtAttachObject);
PYTHON_GLOBAL_METHOD(methods, PtDetachObject);
//PYTHON_GLOBAL_METHOD(methods, PtLinkToAge);
PYTHON_GLOBAL_METHOD(methods, PtDirtySynchState);
PYTHON_GLOBAL_METHOD(methods, PtDirtySynchClients);
PYTHON_GLOBAL_METHOD(methods, PtEnableControlKeyEvents);
PYTHON_GLOBAL_METHOD(methods, PtDisableControlKeyEvents);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtEnableAvatarCursorFade);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtDisableAvatarCursorFade);
PYTHON_GLOBAL_METHOD(methods, PtFadeLocalAvatar);
PYTHON_GLOBAL_METHOD(methods, PtSetOfferBookMode);
PYTHON_GLOBAL_METHOD(methods, PtSetShareSpawnPoint);
PYTHON_GLOBAL_METHOD(methods, PtSetShareAgeInstanceGuid);
PYTHON_GLOBAL_METHOD(methods, PtNotifyOffererLinkAccepted);
PYTHON_GLOBAL_METHOD(methods, PtNotifyOffererLinkRejected);
PYTHON_GLOBAL_METHOD(methods, PtNotifyOffererLinkCompleted);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtClearOfferBookMode);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetLocalClientID);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsCCRAway);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtAmCCR);
PYTHON_GLOBAL_METHOD(methods, PtToggleAvatarClickability);
PYTHON_GLOBAL_METHOD(methods, PtTransferParticlesToObject);
PYTHON_GLOBAL_METHOD(methods, PtSetParticleDissentPoint);
PYTHON_GLOBAL_METHOD(methods, PtGetControlEvents);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetLanguage);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtUsingUnicode);
PYTHON_GLOBAL_METHOD(methods, PtFakeLinkAvatarToObject);
PYTHON_GLOBAL_METHOD(methods, PtWearDefaultClothingType);
PYTHON_GLOBAL_METHOD(methods, PtFileExists);
PYTHON_GLOBAL_METHOD(methods, PtCreateDir);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetUserPath);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetInitPath);
}

View File

@ -0,0 +1,838 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyMisc.h"
#include "pyGlueHelpers.h"
#include "pyKey.h"
#include "pySceneObject.h"
#include "pyAgeInfoStruct.h"
#include "pyGeometry3.h"
#include "NucleusLib/inc/plPipeline.h"
#include "pnNetBase/pnNetBase.h"
#include <python.h>
PYTHON_GLOBAL_METHOD_DEFINITION(PtRequestLOSScreen, args, "Params: selfKey,ID,xPos,yPos,distance,what,reportType\nRequest a LOS check from a point on the screen")
{
PyObject* keyObj = NULL;
long id;
float xPos, yPos, distance;
int what, reportType;
if (!PyArg_ParseTuple(args, "Olfffii", &keyObj, &id, &xPos, &yPos, &distance, &what, &reportType))
{
PyErr_SetString(PyExc_TypeError, "PtRequestLOSScreen expects a ptKey, a long, three floats, and two ints");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtRequestLOSScreen expects a ptKey, a long, three floats, and two ints");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
PYTHON_RETURN_BOOL(cyMisc::RequestLOSScreen(*key, id, xPos, yPos, distance, what, reportType));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtKillParticles, args, "Params: timeRemaining,pctToKill,particleSystem\nTells particleSystem to kill pctToKill percent of its particles")
{
float timeRemaining, pctToKill;
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "ffO", &timeRemaining, &pctToKill, &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtKillParticles expects two floats and a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtKillParticles expects two floats and a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::KillParticles(timeRemaining, pctToKill, *key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetNumParticles, args, "Params: key\nKey is the key of scene object host to particle system")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetNumParticles expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtGetNumParticles expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
return PyInt_FromLong(cyMisc::GetNumParticles(*key));
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetParticleOffset, args, "Params: x,y,z,particlesys\nSets the particlesys particle system's offset")
{
float x,y,z;
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "fffO", &x, &y, &z, &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetParticleOffset expects three floats and a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetParticleOffset expects three floats and a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SetParticleOffset(x, y, z, *key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetLightValue, args, "Params: key,name,r,g,b,a\n Key is the key of scene object host to light. Name is the name of the light to manipulate")
{
PyObject* keyObj = NULL;
PyObject* nameObj = NULL;
float r,g,b,a;
if (!PyArg_ParseTuple(args, "OOffff", &keyObj, &nameObj, &r, &g, &b, &a))
{
PyErr_SetString(PyExc_TypeError, "PtSetLightValue expects a ptKey, a string, and four floats");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetLightValue expects a ptKey, a string, and four floats");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
std::string name = "";
if (PyUnicode_Check(nameObj))
{
int strLen = PyUnicode_GetSize(nameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)nameObj, text, strLen);
text[strLen] = L'\0';
char* cText = hsWStringToString(text);
name = cText;
delete [] cText;
delete [] text;
}
else if (PyString_Check(nameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(nameObj);
name = text;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtSetLightValue expects a ptKey, a string, and four floats");
PYTHON_RETURN_ERROR;
}
cyMisc::SetLightColorValue(*key, name, r, g, b, a);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetLightAnimStart, args, "Params: key,name,start\n Key is the key of scene object host to light, start is a bool. Name is the name of the light to manipulate")
{
PyObject* keyObj = NULL;
PyObject* nameObj = NULL;
char start;
if (!PyArg_ParseTuple(args, "OOb", &keyObj, &nameObj, &start))
{
PyErr_SetString(PyExc_TypeError, "PtSetLightAnimStart expects a ptKey, a string, and a boolean");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetLightAnimStart expects a ptKey, a string, and a boolean");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
std::string name = "";
if (PyUnicode_Check(nameObj))
{
int strLen = PyUnicode_GetSize(nameObj);
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
PyUnicode_AsWideChar((PyUnicodeObject*)nameObj, text, strLen);
text[strLen] = L'\0';
char* cText = hsWStringToString(text);
name = cText;
delete [] cText;
delete [] text;
}
else if (PyString_Check(nameObj))
{
// we'll allow this, just in case something goes weird
char* text = PyString_AsString(nameObj);
name = text;
}
else
{
PyErr_SetString(PyExc_TypeError, "PtSetLightAnimStart expects a ptKey, a string, and a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::SetLightAnimationOn(*key, name, start != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsSinglePlayerMode, "Returns whether the game is in single player mode or not")
{
PYTHON_RETURN_BOOL(cyMisc::IsSinglePlayerMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsDemoMode, "Returns whether the game is in Demo mode or not")
{
PYTHON_RETURN_BOOL(cyMisc::IsDemoMode());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsInternalRelease, "Returns whether the client is an internal build or not")
{
PYTHON_RETURN_BOOL(cyMisc::IsInternalRelease());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtIsEnterChatModeKeyBound, "Returns whether the EnterChatMode is bound to a key")
{
PYTHON_RETURN_BOOL(cyMisc::IsEnterChatModeKeyBound());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtShootBulletFromScreen, args, "Params: selfkey, xPos, yPos, radius, range\nShoots a bullet from a position on the screen")
{
PyObject* keyObj = NULL;
float xPos, yPos, radius, range;
if (!PyArg_ParseTuple(args, "Offff", &keyObj, &xPos, &yPos, &radius, &range))
{
PyErr_SetString(PyExc_TypeError, "PtShootBulletFromScreen expects a ptKey and four floats");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtShootBulletFromScreen expects a ptKey and four floats");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::ShootBulletFromScreen(*key, xPos, yPos, radius, range);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtShootBulletFromObject, args, "Params: selfkey, gunObj, radius, range\nShoots a bullet from an object")
{
PyObject* selfKeyObj = NULL;
PyObject* gunSceneObj = NULL;
float radius, range;
if (!PyArg_ParseTuple(args, "OOff", &selfKeyObj, &gunSceneObj, &radius, &range))
{
PyErr_SetString(PyExc_TypeError, "PtShootBulletFromObject expects a ptKey, a ptSceneobject, and two floats");
PYTHON_RETURN_ERROR;
}
if ((!pyKey::Check(selfKeyObj)) || (!pySceneObject::Check(gunSceneObj)))
{
PyErr_SetString(PyExc_TypeError, "PtShootBulletFromObject expects a ptKey, a ptSceneobject, and two floats");
PYTHON_RETURN_ERROR;
}
pyKey* selfKey = pyKey::ConvertFrom(selfKeyObj);
pySceneObject* gunObj = pySceneObject::ConvertFrom(gunSceneObj);
cyMisc::ShootBulletFromObject(*selfKey, gunObj, radius, range);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetPublicAgeList, args, "Params: ageName, cbObject=None\nGet list of public ages for the given age name.\n"
"cbObject, if supplied should have a method called gotPublicAgeList(self,ageList). ageList is a list of tuple(ptAgeInfoStruct,nPlayersInAge)")
{
char* ageName;
PyObject* cbObject = NULL;
if (!PyArg_ParseTuple(args, "s|O", &ageName, &cbObject))
{
PyErr_SetString(PyExc_TypeError, "PtGetPublicAgeList expects a string and an optional object with a gotPublicAgeList() method");
PYTHON_RETURN_ERROR;
}
cyMisc::GetPublicAgeList(ageName, cbObject);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtCreatePublicAge, args, "Params: ageInfo, cbObject=None\nCreate a public instance of the given age.\n"
"cbObject, if supplied should have a member called publicAgeCreated(self,ageInfo)")
{
PyObject* ageInfoObj = NULL;
PyObject* cbObject = NULL;
if (!PyArg_ParseTuple(args, "O|O", &ageInfoObj, &cbObject))
{
PyErr_SetString(PyExc_TypeError, "PtCreatePublicAge expects a ptAgeInfoStruct object and an optional object with a publicAgeCreated() method");
PYTHON_RETURN_ERROR;
}
if (!pyAgeInfoStruct::Check(ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "PtCreatePublicAge expects a ptAgeInfoStruct object and an optional object with a publicAgeCreated() method");
PYTHON_RETURN_ERROR;
}
pyAgeInfoStruct* ageInfo = pyAgeInfoStruct::ConvertFrom(ageInfoObj);
cyMisc::CreatePublicAge(ageInfo, cbObject);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtRemovePublicAge, args, "Params: ageInstanceGuid, cbObject=None\nRemove a public instance of the given age.\n"
"cbObject, if supplied should have a member called publicAgeRemoved(self,ageInstanceGuid)")
{
char* ageInstanceGUID;
PyObject* cbObject = NULL;
if (!PyArg_ParseTuple(args, "s|O", &ageInstanceGUID, &cbObject))
{
PyErr_SetString(PyExc_TypeError, "PtRemovePublicAge expects a string and an optional object with a publicAgeRemoved() method");
PYTHON_RETURN_ERROR;
}
cyMisc::RemovePublicAge(ageInstanceGUID, cbObject);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetClearColor, args, "Params: red,green,blue\nSet the clear color")
{
float red, green, blue;
if (!PyArg_ParseTuple(args, "fff", &red, &green, &blue))
{
PyErr_SetString(PyExc_TypeError, "PtSetClearColor expects three floats");
PYTHON_RETURN_ERROR;
}
cyMisc::SetClearColor(red, green, blue);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetLocalKILevel, "returns local player's ki level")
{
return PyInt_FromLong(cyMisc::GetKILevel());
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtClearCameraStack, cyMisc::ClearCameraStack, "clears all cameras")
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetCameraNumber, args, "Params: x\nReturns camera x's name from stack")
{
int x;
if (!PyArg_ParseTuple(args, "i", &x))
{
PyErr_SetString(PyExc_TypeError, "PtGetCameraNumber expects an int");
PYTHON_RETURN_ERROR;
}
return PyString_FromString(cyMisc::GetCameraNumber(x));
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetNumCameras, "returns camera stack size")
{
return PyInt_FromLong(cyMisc::GetNumCameras());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtRebuildCameraStack, args, "Params: name,ageName\nPush camera with this name on the stack")
{
char* name;
char* ageName;
if (!PyArg_ParseTuple(args, "ss", &name, &ageName))
{
PyErr_SetString(PyExc_TypeError, "PtRebuildCameraStack expects two strings");
PYTHON_RETURN_ERROR;
}
cyMisc::RebuildCameraStack(name, ageName);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_GLOBAL_METHOD_DEFINITION(PtRecenterCamera, cyMisc::RecenterCamera, "re-centers the camera")
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtFirstPerson, "is the local avatar in first person mode")
{
PYTHON_RETURN_BOOL(cyMisc::IsFirstPerson());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFadeIn, args, "Params: lenTime, holdFlag, noSound=0\nFades screen in for lenTime seconds")
{
float lenTime;
char holdFlag, noSound = 0;
if (!PyArg_ParseTuple(args, "fb|b", &lenTime, &holdFlag, &noSound))
{
PyErr_SetString(PyExc_TypeError, "PtFadeIn expects a float, a boolean, and an optional boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::FadeIn(lenTime, holdFlag != 0, noSound != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtFadeOut, args, "Params: lenTime, holdFlag, noSound=0\nFades screen out for lenTime seconds")
{
float lenTime;
char holdFlag, noSound = 0;
if (!PyArg_ParseTuple(args, "fb|b", &lenTime, &holdFlag, &noSound))
{
PyErr_SetString(PyExc_TypeError, "PtFadeOut expects a float, a boolean, and an optional boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::FadeOut(lenTime, holdFlag != 0, noSound != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetGlobalClickability, args, "Params: enable\nEnable or disable all clickables on the local client")
{
char enable;
if (!PyArg_ParseTuple(args, "b", &enable))
{
PyErr_SetString(PyExc_TypeError, "PtSetGlobalClickability expects a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::SetClickability(enable != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtDebugAssert, args, "Params: cond, msg\nDebug only: Assert if condition is false.")
{
char cond;
char* msg;
if (!PyArg_ParseTuple(args, "bs", &cond, &msg))
{
PyErr_SetString(PyExc_TypeError, "PtDebugAssert expects a boolean and a string");
PYTHON_RETURN_ERROR;
}
cyMisc::DebugAssert(cond != 0, msg);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetAlarm, args, "Params: secs, cbObject, cbContext\nsecs is the amount of time before your alarm goes off.\n"
"cbObject is a python object with the method onAlarm(int context)\ncbContext is an integer.")
{
float secs;
PyObject* cbObject = NULL;
unsigned long cbContext;
if (!PyArg_ParseTuple(args, "fOl", &secs, &cbObject, &cbContext))
{
PyErr_SetString(PyExc_TypeError, "PtSetAlarm expects a float, a object with a onAlarm() method, and an int");
PYTHON_RETURN_ERROR;
}
cyMisc::SetAlarm(secs, cbObject, cbContext);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSaveScreenShot, args, "Params: fileName,width=640,height=480,quality=75\nTakes a screenshot with the specified filename, size, and quality")
{
char* fileName;
int width = 640, height = 480, quality = 75;
if (!PyArg_ParseTuple(args, "s|iii", &fileName, &width, &height, &quality))
{
PyErr_SetString(PyExc_TypeError, "PtSaveScreenShot expects a string, and three optional integers");
PYTHON_RETURN_ERROR;
}
cyMisc::SaveScreenShot(fileName, width, height, quality);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtStartScreenCapture, args, "Params: selfKey,width=800,height=600\nStarts a capture of the screen")
{
PyObject* keyObj = NULL;
unsigned short width = 800, height = 600;
if (!PyArg_ParseTuple(args, "O|hh", &keyObj, &width, &height))
{
PyErr_SetString(PyExc_TypeError, "PtStartScreenCapture expects a ptKey, and two optional unsigned 16-bit ints");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtStartScreenCapture expects a ptKey, and two optional unsigned 16-bit ints");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::StartScreenCaptureWH(*key, width, height);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendKIGZMarkerMsg, args, "Params: markerNumber,sender\nSame as PtSendKIMessageInt except 'sender' could get a notify message back\n")
{
long markerNumber;
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "lO", &markerNumber, &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendKIGZMarkerMsg expects a long and a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendKIGZMarkerMsg expects a long and a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SendKIGZMarkerMsg(markerNumber, *key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendKIRegisterImagerMsg, args, "Params: imagerName, sender\nSends a message to the KI to register the specified imager")
{
char* name;
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "sO", &name, &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendKIRegisterImagerMsg expects a string and a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendKIRegisterImagerMsg expects a string and a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SendKIRegisterImagerMsg(name, *key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtWearMaintainerSuit, args, "Params: key,wearOrNot\nWears or removes the maintainer suit of clothes")
{
PyObject* keyObj = NULL;
char wearOrNot;
if (!PyArg_ParseTuple(args, "Ob", &keyObj, &wearOrNot))
{
PyErr_SetString(PyExc_TypeError, "PtWearMaintainerSuit expects a ptKey and a boolean");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtWearMaintainerSuit expects a ptKey and a boolean");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::WearMaintainerSuit(*key, wearOrNot != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtWearDefaultClothing, args, "Params: key\nForces the avatar to wear the default clothing set")
{
PyObject* keyObj = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtWearDefaultClothing expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtWearDefaultClothing expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::WearDefaultClothing(*key);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAgeTimeOfDayPercent, "Returns the current age time of day as a percent (0 to 1)")
{
return PyFloat_FromDouble(cyMisc::GetAgeTimeOfDayPercent());
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtCheckVisLOS, args, "Params: startPoint,endPoint\nDoes LOS check from start to end")
{
PyObject* startPointObj = NULL;
PyObject* endPointObj = NULL;
if (!PyArg_ParseTuple(args, "OO", &startPointObj, &endPointObj))
{
PyErr_SetString(PyExc_TypeError, "PtCheckVisLOS expects two ptPoint3 objects");
PYTHON_RETURN_ERROR;
}
if ((!pyPoint3::Check(startPointObj)) || (!pyPoint3::Check(endPointObj)))
{
PyErr_SetString(PyExc_TypeError, "PtCheckVisLOS expects two ptPoint3 objects");
PYTHON_RETURN_ERROR;
}
pyPoint3* startPoint = pyPoint3::ConvertFrom(startPointObj);
pyPoint3* endPoint = pyPoint3::ConvertFrom(endPointObj);
return cyMisc::CheckVisLOS(*startPoint, *endPoint);
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtCheckVisLOSFromCursor, "Does LOS check from where the mouse cursor is, into the screen")
{
return cyMisc::CheckVisLOSFromCursor();
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtEnablePlanarReflections, args, "Params: on\nEnables/disables planar reflections")
{
char on;
if (!PyArg_ParseTuple(args, "b", &on))
{
PyErr_SetString(PyExc_TypeError, "PtEnablePlanarReflections expects a boolean");
PYTHON_RETURN_ERROR;
}
cyMisc::EnablePlanarReflections(on != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetSupportedDisplayModes, "Returns a list of supported resolutions")
{
std::vector<plDisplayMode> res;
cyMisc::GetSupportedDisplayModes(&res);
PyObject *retVal = PyList_New(0);
for (std::vector<plDisplayMode>::iterator curArg = res.begin(); curArg != res.end(); ++curArg)
{
PyObject* tup = PyTuple_New(2);
PyTuple_SetItem(tup, 0, PyInt_FromLong((long)(*curArg).Width));
PyTuple_SetItem(tup, 1, PyInt_FromLong((long)(*curArg).Height));
PyList_Append(retVal, tup);
}
return retVal;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetDesktopWidth, "Returns desktop width")
{
return PyInt_FromLong((long)cyMisc::GetDesktopWidth());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetDesktopHeight, "Returns desktop height")
{
return PyInt_FromLong((long)cyMisc::GetDesktopHeight());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetDesktopColorDepth, "Returns desktop ColorDepth")
{
return PyInt_FromLong((long)cyMisc::GetDesktopColorDepth());
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetDefaultDisplayParams, "Returns the default resolution and display settings")
{
PipelineParams *pp = cyMisc::GetDefaultDisplayParams();
PyObject* tup = PyTuple_New(10);
PyTuple_SetItem(tup, 0, PyInt_FromLong((long)pp->Width));
PyTuple_SetItem(tup, 1, PyInt_FromLong((long)pp->Height));
PyTuple_SetItem(tup, 2, PyInt_FromLong((long)pp->Windowed));
PyTuple_SetItem(tup, 3, PyInt_FromLong((long)pp->ColorDepth));
PyTuple_SetItem(tup, 4, PyInt_FromLong((long)pp->AntiAliasingAmount));
PyTuple_SetItem(tup, 5, PyInt_FromLong((long)pp->AnisotropicLevel));
PyTuple_SetItem(tup, 6, PyInt_FromLong((long)pp->TextureQuality));
PyTuple_SetItem(tup, 7, PyInt_FromLong((long)pp->VideoQuality));
PyTuple_SetItem(tup, 8, PyInt_FromLong((long)pp->Shadows));
PyTuple_SetItem(tup, 9, PyInt_FromLong((long)pp->PlanarReflections));
return tup;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetGraphicsOptions, args, "Params: width, height, colordepth, windowed, numAAsamples, numAnisoSamples, VSync\nSet the graphics options")
{
int width = 800, height = 600, colordepth = 32, windowed = 0, numAAsamples = 0, numAnisoSamples = 0, vsync = 0;
if (!PyArg_ParseTuple(args, "iiiiiii", &width, &height, &colordepth, &windowed, &numAAsamples, &numAnisoSamples, &vsync))
{
PyErr_SetString(PyExc_TypeError, "PtSetGraphicsOptions expects a ints for width, height, colordepth, windowed, numAAsamples, numAnisoSamples");
PYTHON_RETURN_ERROR;
}
cyMisc::SetGraphicsOptions(width, height, colordepth, windowed != 0, numAAsamples, numAnisoSamples, vsync != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSetBehaviorNetFlags, args, "Params: behKey, netForce, netProp\nSets net flags on the associated behavior")
{
PyObject* keyObj = NULL;
char netForce;
char netProp;
if (!PyArg_ParseTuple(args, "Obb", &keyObj, &netForce, &netProp))
{
PyErr_SetString(PyExc_TypeError, "PtSetBehaviorNetFlags expects a ptKey, a boolean and a boolean");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObj))
{
PyErr_SetString(PyExc_TypeError, "PtSetBehaviorNetFlags expects a ptKey, a boolean and a boolean");
PYTHON_RETURN_ERROR;
}
pyKey* key = pyKey::ConvertFrom(keyObj);
cyMisc::SetBehaviorNetFlags(*key, netForce != 0, netProp != 0);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtSendFriendInvite, args, "Params: emailAddress, toName = \"Friend\"\nSends an email with invite code")
{
PyObject* emailObj;
PyObject* toNameObj = nil;
if (!PyArg_ParseTuple(args, "O|O", &emailObj, &toNameObj))
{
PyErr_SetString(PyExc_TypeError, "PtSendFriendInvite expects a string and optionally another string");
PYTHON_RETURN_ERROR;
}
wchar emailAddr[kMaxEmailAddressLength];
MemSet(emailAddr, 0, sizeof(emailAddr));
wchar toName[kMaxPlayerNameLength];
MemSet(toName, 0, sizeof(toName));
// Check and see if the email address is ok
int origStrLen = 0;
if (PyUnicode_Check(emailObj))
{
origStrLen = PyUnicode_GET_SIZE(emailObj);
PyUnicode_AsWideChar((PyUnicodeObject*)emailObj, emailAddr, arrsize(emailAddr) - 1);
}
else if (PyString_Check(emailObj))
{
char* cAddr = PyString_AsString(emailObj);
origStrLen = StrLen(cAddr);
StrToUnicode(emailAddr, cAddr, arrsize(emailAddr));
}
else
{
PyErr_SetString(PyExc_TypeError, "PtSendFriendInvite expects a string and optionally another string");
PYTHON_RETURN_ERROR;
}
if (origStrLen >= kMaxEmailAddressLength)
{
PyErr_SetString(PyExc_TypeError, "PtSendFriendInvite: Email address too long");
PYTHON_RETURN_ERROR;
}
// Check if the "to name" field is ok
if (toNameObj)
{
if (PyUnicode_Check(toNameObj))
{
origStrLen = PyUnicode_GET_SIZE(toNameObj);
PyUnicode_AsWideChar((PyUnicodeObject*)toNameObj, toName, arrsize(toName) - 1);
}
else if (PyString_Check(toNameObj))
{
char* cName = PyString_AsString(toNameObj);
origStrLen = StrLen(cName);
StrToUnicode(toName, cName, arrsize(toName));
}
else
StrCopy(toName, L"Friend", arrsize(toName));
}
else
StrCopy(toName, L"Friend", arrsize(toName));
cyMisc::SendFriendInvite(emailAddr, toName);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGuidGenerate, "Returns string representation for a new guid")
{
return cyMisc::PyGuidGenerate();
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtGetAIAvatarsByModelName, args, "Params: modelName\nReturns a list of tuples representing the matching ai avatars")
{
char* modelName;
if (!PyArg_ParseTuple(args, "s", &modelName))
{
PyErr_SetString(PyExc_TypeError, "PtGetAIAvatarsByModelName expects a string");
PYTHON_RETURN_ERROR;
}
return cyMisc::GetAIAvatarsByModelName(modelName);
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtForceVaultNodeUpdate, args, "Params: nodeId\nForces a vault node to update")
{
unsigned nodeId;
if (!PyArg_ParseTuple(args, "I", &nodeId))
{
PyErr_SetString(PyExc_TypeError, "PtForceVaultNodeUpdate expects an unsigned int");
PYTHON_RETURN_ERROR;
}
cyMisc::ForceVaultNodeUpdate(nodeId);
PYTHON_RETURN_NONE;
}
PYTHON_GLOBAL_METHOD_DEFINITION(PtVaultDownload, args, "Params: nodeId\nDownloads the vault tree of the given nodeid")
{
unsigned nodeId;
if (!PyArg_ParseTuple(args, "I", &nodeId))
{
PyErr_SetString(PyExc_TypeError, "PtVaultDownload expects an unsigned int");
PYTHON_RETURN_ERROR;
}
cyMisc::VaultDownload(nodeId);
PYTHON_RETURN_NONE;
}
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaMethods - the python method definitions
//
void cyMisc::AddPlasmaMethods4(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD(methods, PtRequestLOSScreen);
PYTHON_GLOBAL_METHOD(methods, PtKillParticles);
PYTHON_GLOBAL_METHOD(methods, PtGetNumParticles);
PYTHON_GLOBAL_METHOD(methods, PtSetParticleOffset);
PYTHON_GLOBAL_METHOD(methods, PtSetLightValue);
PYTHON_GLOBAL_METHOD(methods, PtSetLightAnimStart);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsSinglePlayerMode);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsDemoMode);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsInternalRelease);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtIsEnterChatModeKeyBound);
PYTHON_GLOBAL_METHOD(methods, PtShootBulletFromScreen);
PYTHON_GLOBAL_METHOD(methods, PtShootBulletFromObject);
PYTHON_GLOBAL_METHOD(methods, PtGetPublicAgeList);
PYTHON_GLOBAL_METHOD(methods, PtCreatePublicAge);
PYTHON_GLOBAL_METHOD(methods, PtRemovePublicAge);
PYTHON_GLOBAL_METHOD(methods, PtSetClearColor);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetLocalKILevel);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtClearCameraStack);
PYTHON_GLOBAL_METHOD(methods, PtGetCameraNumber);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetNumCameras);
PYTHON_GLOBAL_METHOD(methods, PtRebuildCameraStack);
PYTHON_BASIC_GLOBAL_METHOD(methods, PtRecenterCamera);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtFirstPerson);
PYTHON_GLOBAL_METHOD(methods, PtFadeIn);
PYTHON_GLOBAL_METHOD(methods, PtFadeOut);
PYTHON_GLOBAL_METHOD(methods, PtSetGlobalClickability);
PYTHON_GLOBAL_METHOD(methods, PtDebugAssert);
PYTHON_GLOBAL_METHOD(methods, PtSetAlarm);
PYTHON_GLOBAL_METHOD(methods, PtSaveScreenShot);
PYTHON_GLOBAL_METHOD(methods, PtStartScreenCapture);
PYTHON_GLOBAL_METHOD(methods, PtSendKIGZMarkerMsg);
PYTHON_GLOBAL_METHOD(methods, PtSendKIRegisterImagerMsg);
PYTHON_GLOBAL_METHOD(methods, PtWearMaintainerSuit);
PYTHON_GLOBAL_METHOD(methods, PtWearDefaultClothing);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeTimeOfDayPercent);
PYTHON_GLOBAL_METHOD(methods, PtCheckVisLOS);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtCheckVisLOSFromCursor);
PYTHON_GLOBAL_METHOD(methods, PtEnablePlanarReflections);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetSupportedDisplayModes);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetDesktopWidth);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetDesktopHeight);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetDesktopColorDepth);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetDefaultDisplayParams);
PYTHON_GLOBAL_METHOD(methods, PtSetGraphicsOptions);
PYTHON_GLOBAL_METHOD(methods, PtSetBehaviorNetFlags);
PYTHON_GLOBAL_METHOD(methods, PtSendFriendInvite);
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGuidGenerate);
PYTHON_GLOBAL_METHOD(methods, PtGetAIAvatarsByModelName);
PYTHON_GLOBAL_METHOD(methods, PtForceVaultNodeUpdate);
PYTHON_GLOBAL_METHOD(methods, PtVaultDownload);
}

View File

@ -0,0 +1,148 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyParticleSys.h"
#include "hsStream.h"
#include "pnMessage/plMessage.h"
#include "hsResMgr.h"
#include "plgDispatch.h"
#include "plMessage/plParticleUpdateMsg.h"
cyParticleSys::cyParticleSys(plKey sender, plKey recvr)
{
SetSender(sender);
AddRecvr(recvr);
fNetForce = false;
}
// setters
void cyParticleSys::SetSender(plKey &sender)
{
fSender = sender;
}
void cyParticleSys::AddRecvr(plKey &recvr)
{
if ( recvr != nil )
fRecvr.Append(recvr);
}
void cyParticleSys::SetNetForce(hsBool state)
{
// set our flag
fNetForce = state;
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : ISendParticleSysMsg
// PARAMETERS :
//
// PURPOSE : send the message to the Particle System
//
void cyParticleSys::ISendParticleSysMsg(UInt32 param, hsScalar value)
{
plParticleUpdateMsg* pMsg = TRACKED_NEW plParticleUpdateMsg(fSender, nil, nil, param, value);
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
pMsg->SetBCastFlag(plMessage::kPropagateToModifiers);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
plgDispatch::MsgSend(pMsg);
}
/////////////////////////////////////////////////////////////////////////////
//
// All these methods just call the IsendParticleSysMsg to do the real work
//
void cyParticleSys::SetParticlesPerSecond(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamParticlesPerSecond,value);
}
void cyParticleSys::SetInitPitchRange(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamInitPitchRange,value);
}
void cyParticleSys::SetInitYawRange(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamInitYawRange,value);
}
void cyParticleSys::SetVelMin(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamVelMin,value);
}
void cyParticleSys::SetVelMax(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamVelMax,value);
}
void cyParticleSys::SetXSize(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamXSize,value);
}
void cyParticleSys::SetYSize(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamYSize,value);
}
void cyParticleSys::SetScaleMin(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamScaleMin,value);
}
void cyParticleSys::SetScaleMax(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamScaleMax,value);
}
void cyParticleSys::SetGenLife(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamGenLife,value);
}
void cyParticleSys::SetPartLifeMin(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamPartLifeMin,value);
}
void cyParticleSys::SetPartLifeMax(hsScalar value)
{
ISendParticleSysMsg(plParticleUpdateMsg::kParamPartLifeMax,value);
}

View File

@ -0,0 +1,84 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyParticleSys_h
#define cyParticleSys_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyParticleSys
//
// PURPOSE: Class wrapper to for Particle System
//
#include "hsTemplates.h"
#include "pnKeyedObject/plKey.h"
class pyKey;
#include <python.h>
#include "pyGlueHelpers.h"
class cyParticleSys
{
protected:
plKey fSender;
hsTArray<plKey> fRecvr;
hsBool fNetForce;
virtual void ISendParticleSysMsg(UInt32 param, hsScalar value);
cyParticleSys(const plKey sender=nil,const plKey recvr=nil);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptParticle);
static PyObject *New(PyObject *sender = nil, PyObject *recvr = nil);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyParticleSys object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyParticleSys); // converts a PyObject to a cyParticleSys (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
// setters
virtual void SetSender(plKey &sender);
virtual void AddRecvr(plKey &recvr);
virtual void SetNetForce(hsBool state);
virtual void SetParticlesPerSecond(hsScalar value);
virtual void SetInitPitchRange(hsScalar value);
virtual void SetInitYawRange(hsScalar value);
virtual void SetVelMin(hsScalar value);
virtual void SetVelMax(hsScalar value);
virtual void SetXSize(hsScalar value);
virtual void SetYSize(hsScalar value);
virtual void SetScaleMin(hsScalar value);
virtual void SetScaleMax(hsScalar value);
virtual void SetGenLife(hsScalar value);
virtual void SetPartLifeMin(hsScalar value);
virtual void SetPartLifeMax(hsScalar value);
};
#endif // cyParticleSys_h

View File

@ -0,0 +1,131 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyParticleSys.h"
#include "pyKey.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptParticle, cyParticleSys);
PYTHON_DEFAULT_NEW_DEFINITION(ptParticle, cyParticleSys)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptParticle)
PYTHON_NO_INIT_DEFINITION(ptParticle)
PYTHON_METHOD_DEFINITION(ptParticle, netForce, args)
{
char forceFlag;
if (!PyArg_ParseTuple(args, "b", &forceFlag))
{
PyErr_SetString(PyExc_TypeError, "netForce requires a boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetNetForce(forceFlag != 0);
PYTHON_RETURN_NONE;
}
// define a nice little marco to do the grunt work, since all the functions are identical
#define PARTICLE_FUNC(funcName, classFunc) \
PYTHON_METHOD_DEFINITION(ptParticle, funcName, args) \
{ \
float val; \
if (!PyArg_ParseTuple(args, "f", &val)) \
{ \
PyErr_SetString(PyExc_TypeError, #funcName " expects a float"); \
PYTHON_RETURN_ERROR; \
} \
self->fThis->classFunc(val); \
PYTHON_RETURN_NONE; \
}
// now make all the functions using the above macro
PARTICLE_FUNC(setParticlesPerSecond, SetParticlesPerSecond)
PARTICLE_FUNC(setInitPitchRange, SetInitPitchRange)
PARTICLE_FUNC(setInitYawRange, SetInitYawRange)
PARTICLE_FUNC(setVelocityMinimum, SetVelMin)
PARTICLE_FUNC(setVelocityMaximum, SetVelMax)
PARTICLE_FUNC(setWidthSize, SetXSize)
PARTICLE_FUNC(setHeightSize, SetYSize)
PARTICLE_FUNC(setScaleMinimum, SetScaleMin)
PARTICLE_FUNC(setScaleMaximum, SetScaleMax)
PARTICLE_FUNC(setGeneratorLife, SetGenLife)
PARTICLE_FUNC(setParticleLifeMinimum, SetPartLifeMin)
PARTICLE_FUNC(setParticleLifeMaximum, SetPartLifeMax)
PYTHON_START_METHODS_TABLE(ptParticle)
PYTHON_METHOD(ptParticle, netForce, "Params: forceFlag\nSpecify whether this object needs to use messages that are forced to the network\n"
"- This is to be used if your Python program is running on only one client\n"
"Such as a game master, only running on the client that owns a particular object"),
PYTHON_METHOD(ptParticle, setParticlesPerSecond, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setInitPitchRange, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setInitYawRange, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setVelocityMinimum, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setVelocityMaximum, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setWidthSize, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setHeightSize, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setScaleMinimum, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setScaleMaximum, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setGeneratorLife, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setParticleLifeMinimum, "Params: value\nNEEDS DOCSTRING"),
PYTHON_METHOD(ptParticle, setParticleLifeMaximum, "Params: value\nNEEDS DOCSTRING"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptParticle, "Plasma particle system class");
// required functions for PyObject interoperability
PyObject *cyParticleSys::New(PyObject *sender, PyObject *recvr)
{
ptParticle *newObj = (ptParticle*)ptParticle_type.tp_new(&ptParticle_type, NULL, NULL);
if (sender != NULL)
{
pyKey *senderKey = pyKey::ConvertFrom(sender);
newObj->fThis->SetSender(senderKey->getKey());
}
if (recvr != NULL)
{
pyKey *recvrKey = pyKey::ConvertFrom(recvr);
newObj->fThis->AddRecvr(recvrKey->getKey());
}
newObj->fThis->SetNetForce(false);
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptParticle, cyParticleSys)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptParticle, cyParticleSys)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyParticleSys::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptParticle);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,787 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyPhysics.h"
#include "plgDispatch.h"
#include "pnMessage/plEnableMsg.h"
#include "pnMessage/plWarpMsg.h"
#include "plMessage/plSimInfluenceMsg.h"
#include "plMessage/plSimStateMsg.h"
#include "plMessage/plLinearVelocityMsg.h"
#include "plMessage/plAngularVelocityMsg.h"
#include "pyGeometry3.h"
#include "pyMatrix44.h"
#include "pyKey.h"
#include "hsQuat.h"
#include "pnSceneObject/plSceneObject.h"
#include "pnSceneObject/plCoordinateInterface.h"
#include "pnKeyedObject/plKey.h"
cyPhysics::cyPhysics(plKey sender, plKey recvr)
{
SetSender(sender);
AddRecvr(recvr);
fNetForce = false;
}
// setters
void cyPhysics::SetSender(plKey &sender)
{
fSender = sender;
}
void cyPhysics::AddRecvr(plKey &recvr)
{
if ( recvr != nil )
fRecvr.Append(recvr);
}
void cyPhysics::SetNetForce(hsBool state)
{
// set our flag
fNetForce = state;
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Enable
// PARAMETERS :
//
// PURPOSE : Enable physics (must already be there)
//
void cyPhysics::EnableT(hsBool state)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plEnableMsg* pMsg = TRACKED_NEW plEnableMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
// jump back to frame 0
pMsg->SetCmd(plEnableMsg::kPhysical);
// which way are we doin' it?
if ( state )
pMsg->SetCmd(plEnableMsg::kEnable);
else
pMsg->SetCmd(plEnableMsg::kDisable);
// make sure to propagate this to the modifiers to tell things like the clickables to disable.
pMsg->SetBCastFlag(plMessage::kPropagateToModifiers);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyPhysics::Enable()
{
EnableT(true);
}
void cyPhysics::Disable()
{
EnableT(false);
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Enable / Disable Collision
//
// PURPOSE : Enable / Disable collision for terrain and proxy terrain objects
// because using cyPhysics::Enable() does not work for these physical types
//
//
void cyPhysics::EnableCollision()
{
hsAssert(0, "Who uses this?");
/*
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
plEventGroupEnableMsg* pMsg = TRACKED_NEW plEventGroupEnableMsg;
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetFlags(plEventGroupEnableMsg::kCollideOn);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
void cyPhysics::DisableCollision()
{
hsAssert(0, "Who uses this?");
/*
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
plEventGroupEnableMsg* pMsg = TRACKED_NEW plEventGroupEnableMsg;
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetFlags(plEventGroupEnableMsg::kCollideOff);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Warp
// PARAMETERS : pos - the point to translate to
//
// PURPOSE : Suggest to physics engine where you want to place something
//
//
void cyPhysics::Warp(pyPoint3& pos)
{
// create message
PyObject* matObj = pyMatrix44::New();
pyMatrix44* mat = pyMatrix44::ConvertFrom(matObj);
mat->fMatrix.IdentityMatrix();
mat->fMatrix.SetTranslate(&pos.fPoint);
WarpMat(*mat);
Py_DECREF(matObj);
}
// warp v2 - for warping to the matching transform of an object (like a reference point)
void cyPhysics::WarpObj(pyKey& obj)
{
plKey obKey = obj.getKey();
plSceneObject* pObj = plSceneObject::ConvertNoRef(obKey->GetObjectPtr());
if (pObj && pObj->GetCoordinateInterface())
{
// create message
PyObject* matObj = pyMatrix44::New();
pyMatrix44* mat = pyMatrix44::ConvertFrom(matObj);
mat->fMatrix = pObj->GetCoordinateInterface()->GetLocalToWorld();
WarpMat(*mat);
Py_DECREF(matObj);
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : WarpMat
// PARAMETERS : mat - the matrix to translate to
//
// PURPOSE : Suggest to physics engine where you want to place something
//
//
void cyPhysics::WarpMat(pyMatrix44& mat)
{
// must have a receiver!
if ( fRecvr.Count() > 0 )
{
// create message
plWarpMsg* pMsg = TRACKED_NEW plWarpMsg(mat.fMatrix);
pMsg->SetWarpFlags(plWarpMsg::kFlushTransform);
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Move
// PARAMETERS : direction - vector of direction to move towards
// : distance - how far to move in that direction
//
// PURPOSE : Move the object in a direction and distance
// : if the object is physical then warp it
// : otherwise just use the coordinate interface and set the transform
//
void cyPhysics::Move(pyVector3& direction, hsScalar distance)
{
//move each receiver (object) separately
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
// get the object pointer of just the first one in the list
// (We really can't tell which one the user is thinking of if they are
// referring to multiple objects, so the first one in the list will do.)
plSceneObject* obj = plSceneObject::ConvertNoRef(fRecvr[i]->GetObjectPtr());
if ( obj )
{
const plCoordinateInterface* ci = obj->GetCoordinateInterface();
if ( ci )
{
hsVector3 offset = direction.fVector * distance;
hsMatrix44 trans;
trans.MakeTranslateMat(&offset);
hsMatrix44 target_matrix = ci->GetWorldToLocal();
target_matrix = target_matrix * trans;
// see if this has a physical interface, if so, then its physical, therefore use warp
const plSimulationInterface* si = obj->GetSimulationInterface();
if ( si )
{
// create message for each receiver
plWarpMsg* pMsg = TRACKED_NEW plWarpMsg(target_matrix);
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// must have a receiver!
pMsg->AddReceiver(fRecvr[i]);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
else
{
// else just use the coordinate interface
hsMatrix44 w2l;
target_matrix.GetInverse(&w2l);
obj->SetTransform(target_matrix,w2l);
}
}
else
{
char errmsg[256];
sprintf(errmsg,"Sceneobject %s does not have a coordinate interface.",obj->GetKeyName());
PyErr_SetString(PyExc_RuntimeError, errmsg);
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Rotate
// PARAMETERS : rad - radians to rotate
// : axis - axis to rotate around
//
// PURPOSE : Rotate the object
// : if the object is physical then warp it
// : otherwise just use the coordinate interface and set the transform
//
void cyPhysics::Rotate(hsScalar rad, pyVector3& axis)
{
// rotate each receiver (object) separately
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
// get the object pointer of just the first one in the list
// (We really can't tell which one the user is thinking of if they are
// referring to multiple objects, so the first one in the list will do.)
plSceneObject* obj = plSceneObject::ConvertNoRef(fRecvr[i]->GetObjectPtr());
if ( obj )
{
const plCoordinateInterface* ci = obj->GetCoordinateInterface();
if ( ci )
{
hsQuat q(rad, &axis.fVector);
q.Normalize();
hsMatrix44 rot;
q.MakeMatrix(&rot);
hsMatrix44 target_matrix = ci->GetWorldToLocal();
target_matrix = target_matrix * rot;
// see if this has a physical interface, then its physical, therefore use warp
const plSimulationInterface* si = obj->GetSimulationInterface();
if ( si )
{
// create message for each receiver
plWarpMsg* pMsg = TRACKED_NEW plWarpMsg(target_matrix);
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// must have a receiver!
pMsg->AddReceiver(fRecvr[i]);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
else
{
// else just use the coordinate interface
hsMatrix44 w2l;
target_matrix.GetInverse(&w2l);
obj->SetTransform(target_matrix,w2l);
}
}
else
{
char errmsg[256];
sprintf(errmsg,"Sceneobject %s does not have a coordinate interface.",obj->GetKeyName());
PyErr_SetString(PyExc_RuntimeError, errmsg);
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Force
// PARAMETERS :
//
// PURPOSE : apply a force to the center of mass of the receiver
//
//
void cyPhysics::Force(pyVector3& force)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plForceMsg* pMsg = TRACKED_NEW plForceMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetForce(force.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : ForceWithOffset
// PARAMETERS :
//
// PURPOSE : apply a force to the receiver as though it were being impacted at the
// : given point in global space
//
//
void cyPhysics::ForceWithOffset(pyVector3& force, pyPoint3& offset)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plOffsetForceMsg* pMsg = TRACKED_NEW plOffsetForceMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetForce(force.fVector);
pMsg->SetPoint(offset.fPoint);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Torque
// PARAMETERS :
//
// PURPOSE : Apply the given torque force to the body
// : The vector indicates the axes, and the magnitude indicates the strength
//
//
void cyPhysics::Torque(pyVector3& torque)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plTorqueMsg* pMsg = TRACKED_NEW plTorqueMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetTorque(torque.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Impulse
// PARAMETERS :
//
// PURPOSE : Add the given vector to the objects velocity
//
//
void cyPhysics::Impulse(pyVector3& impulse)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plImpulseMsg* pMsg = TRACKED_NEW plImpulseMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetImpulse(impulse.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : ImpulseWithOffset
// PARAMETERS :
//
// PURPOSE : Apply the given impulse to the object at the given point in global space
// : Will impart torque if not applied to center of mass
//
//
void cyPhysics::ImpulseWithOffset(pyVector3& impulse, pyPoint3& offset)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plOffsetImpulseMsg* pMsg = TRACKED_NEW plOffsetImpulseMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetImpulse(impulse.fVector);
pMsg->SetPoint(offset.fPoint);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : AngularImpulse
// PARAMETERS :
//
// PURPOSE : Add the given vector (representing a rotation axis and magnitude)
//
//
void cyPhysics::AngularImpulse(pyVector3& impulse)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plAngularImpulseMsg* pMsg = TRACKED_NEW plAngularImpulseMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetImpulse(impulse.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Damp
// PARAMETERS :
//
// PURPOSE : Decrease all velocities on the given object.
// : A damp factor of 0 nulls them all entirely;
// : A damp factor of 1 leaves them alone.
//
//
void cyPhysics::Damp(hsScalar damp)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plDampMsg* pMsg = TRACKED_NEW plDampMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetDamp(damp);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : ShiftMass
// PARAMETERS :
//
// PURPOSE : Shift the center of mass of the given object by the given
// : amount in the given direction.
//
//
void cyPhysics::ShiftMass(pyVector3& offset)
{
hsAssert(0, "Who uses this?");
// must have a receiver!
/* if ( fRecvr.Count() > 0 )
{
// create message
plShiftMassMsg* pMsg = TRACKED_NEW plShiftMassMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->SetOffset(offset.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
*/
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : Suppress
// PARAMETERS : doSuppress: if true, remove the physical (see below)
// if false, add it back
//
// PURPOSE : Completely remove the physical, but keep it around so it
// can be added back later.
//
//
void cyPhysics::Suppress(bool doSuppress)
{
EnableT(!doSuppress);
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : SetLinearVelocity
// PARAMETERS : velocity
//
// PURPOSE : Change the objects linear velocity to this
//
//
void cyPhysics::SetLinearVelocity(pyVector3& velocity)
{
if ( fRecvr.Count() > 0 )
{
// create message
plLinearVelocityMsg* pMsg = TRACKED_NEW plLinearVelocityMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->Velocity(velocity.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}
void cyPhysics::SetAngularVelocity(pyVector3& angVel)
{
if ( fRecvr.Count() > 0 )
{
// create message
plAngularVelocityMsg* pMsg = TRACKED_NEW plAngularVelocityMsg;
// check if this needs to be network forced to all clients
if (fNetForce )
{
// set the network propagate flag to make sure it gets to the other clients
pMsg->SetBCastFlag(plMessage::kNetPropagate);
pMsg->SetBCastFlag(plMessage::kNetForce);
}
if ( fSender )
pMsg->SetSender(fSender);
// add all our receivers to the message receiver list
int i;
for ( i=0; i<fRecvr.Count(); i++ )
{
pMsg->AddReceiver(fRecvr[i]);
}
pMsg->AngularVelocity(angVel.fVector);
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
}
}

View File

@ -0,0 +1,133 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef cyPhysics_h
#define cyPhysics_h
/////////////////////////////////////////////////////////////////////////////
//
// NAME: cyPhysics
//
// PURPOSE: Class wrapper to map animation functions to plasma2 message
//
#include "hsTemplates.h"
#include "pnKeyedObject/plKey.h"
#include <python.h>
#include "pyGlueHelpers.h"
class pyPoint3;
class pyVector3;
class pyMatrix44;
class pyKey;
class cyPhysics
{
protected:
plKey fSender;
hsTArray<plKey> fRecvr;
hsBool fNetForce;
cyPhysics(plKey sender=nil,plKey recvr=nil);
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptPhysics);
static PyObject *New(PyObject *sender = nil, PyObject *recvr = nil);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a cyPhysics object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(cyPhysics); // converts a PyObject to a cyPhysics (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
// setters
void SetSender(plKey &sender);
void AddRecvr(plKey &recvr);
virtual void SetNetForce(hsBool state);
// Enable physics (must already be there)
virtual void EnableT(hsBool state);
virtual void Enable();
virtual void Disable();
virtual void EnableCollision();
virtual void DisableCollision();
// Suggest to physics engine where you want to place something
virtual void Warp(pyPoint3& pos);
virtual void WarpObj(pyKey& obj);
// Suggest to physics engine where you want to place something
virtual void WarpMat(pyMatrix44& mat);
// Move the object in a direction and distance
// if the object is physical then warp it
// otherwise just use the coordinate interface and set the transform
virtual void Move(pyVector3& direction, hsScalar distance);
// Rotate the object
// if the object is physical then warp it
// otherwise just use the coordinate interface and set the transform
virtual void Rotate(hsScalar rad, pyVector3& axis);
// apply a force to the center of mass of the receiver
virtual void Force(pyVector3& force);
// apply a force to the receiver as though it were being impacted at the
// given point in global space
virtual void ForceWithOffset(pyVector3& force, pyPoint3& offset);
// Apply the given torque force to the body
// The vector indicates the axes, and the magnitude indicates the strength
virtual void Torque(pyVector3& torque);
// Add the given vector to the objects velocity
virtual void Impulse(pyVector3& impulse);
// Apply the given impulse to the object at the given point in global space
// Will impart torque if not applied to center of mass
virtual void ImpulseWithOffset(pyVector3& impulse, pyPoint3& offset);
// Add the given vector (representing a rotation axis and magnitude)
virtual void AngularImpulse(pyVector3& impulse);
// Decrease all velocities on the given object.
// A damp factor of 0 nulls them all entirely;
// A damp factor of 1 leaves them alone.
virtual void Damp(hsScalar damp);
// Shift the center of mass of the given object by the given
// amount in the given direction.
virtual void ShiftMass(pyVector3& offset);
virtual void Suppress(bool doSuppress);
//Set the Linear Velocity of the Object
virtual void SetLinearVelocity(pyVector3& velocity);
virtual void SetAngularVelocity(pyVector3& angVel);
};
#endif // cyPhysics_h

View File

@ -0,0 +1,407 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "cyPhysics.h"
#include "pyKey.h"
#include "pyGeometry3.h"
#include "pyMatrix44.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptPhysics, cyPhysics);
PYTHON_DEFAULT_NEW_DEFINITION(ptPhysics, cyPhysics)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptPhysics)
PYTHON_INIT_DEFINITION(ptPhysics, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_METHOD_DEFINITION(ptPhysics, netForce, args)
{
char forceFlag;
if (!PyArg_ParseTuple(args, "b", &forceFlag))
{
PyErr_SetString(PyExc_TypeError, "netForce requires a boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->SetNetForce(forceFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, enable, args)
{
char stateFlag = 1;
if (!PyArg_ParseTuple(args, "|b", &stateFlag))
{
PyErr_SetString(PyExc_TypeError, "enable expects an optional boolean argument");
PYTHON_RETURN_ERROR;
}
self->fThis->EnableT(stateFlag != 0);
PYTHON_RETURN_NONE;
}
PYTHON_BASIC_METHOD_DEFINITION(ptPhysics, disable, Disable)
PYTHON_BASIC_METHOD_DEFINITION(ptPhysics, disableCollision, DisableCollision)
PYTHON_BASIC_METHOD_DEFINITION(ptPhysics, enableCollision, EnableCollision)
PYTHON_METHOD_DEFINITION(ptPhysics, warp, args)
{
PyObject *positionObject = NULL;
if (!PyArg_ParseTuple(args, "O", &positionObject))
{
PyErr_SetString(PyExc_TypeError, "warp expects a ptPoint3 or ptMatrix44 object");
PYTHON_RETURN_ERROR;
}
if (pyPoint3::Check(positionObject))
{
pyPoint3 *pos = pyPoint3::ConvertFrom(positionObject);
self->fThis->Warp(*pos);
PYTHON_RETURN_NONE;
}
else if (pyMatrix44::Check(positionObject))
{
pyMatrix44 *mat = pyMatrix44::ConvertFrom(positionObject);
self->fThis->WarpMat(*mat);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "warp expects a ptPoint3 or ptMatrix44 object");
PYTHON_RETURN_ERROR;
}
PYTHON_METHOD_DEFINITION(ptPhysics, warpObj, args)
{
PyObject *keyObject = NULL;
if (!PyArg_ParseTuple(args, "O", &keyObject))
{
PyErr_SetString(PyExc_TypeError, "warpObj expects a ptKey");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(keyObject))
{
PyErr_SetString(PyExc_TypeError, "warpObj expects a ptKey");
PYTHON_RETURN_ERROR;
}
pyKey *key = pyKey::ConvertFrom(keyObject);
self->fThis->WarpObj(*key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, move, args)
{
PyObject *directionObject = NULL;
float distance;
if (!PyArg_ParseTuple(args, "Of", &directionObject, &distance))
{
PyErr_SetString(PyExc_TypeError, "move expects a ptVector3 and float");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(directionObject))
{
PyErr_SetString(PyExc_TypeError, "move expects a ptVector3 and float");
PYTHON_RETURN_ERROR;
}
pyVector3 *direction = pyVector3::ConvertFrom(directionObject);
self->fThis->Move(*direction, distance);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, rotate, args)
{
float radians;
PyObject *axisObject = NULL;
if (!PyArg_ParseTuple(args, "fO", &radians, &axisObject))
{
PyErr_SetString(PyExc_TypeError, "rotate expects a float and ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(axisObject))
{
PyErr_SetString(PyExc_TypeError, "rotate expects a float and ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *axis = pyVector3::ConvertFrom(axisObject);
self->fThis->Rotate(radians, *axis);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, force, args)
{
PyObject *forceObject = NULL;
if (!PyArg_ParseTuple(args, "O", &forceObject))
{
PyErr_SetString(PyExc_TypeError, "force expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(forceObject))
{
PyErr_SetString(PyExc_TypeError, "force expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *force = pyVector3::ConvertFrom(forceObject);
self->fThis->Force(*force);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, forceWithOffset, args)
{
PyObject *forceObject = NULL;
PyObject *offsetObject = NULL;
if (!PyArg_ParseTuple(args, "OO", &forceObject, &offsetObject))
{
PyErr_SetString(PyExc_TypeError, "forceWithOffset expects a ptVector3 and a ptPoint3");
PYTHON_RETURN_ERROR;
}
if ((!pyVector3::Check(forceObject)) || (!pyPoint3::Check(offsetObject)))
{
PyErr_SetString(PyExc_TypeError, "forceWithOffset expects a ptVector3 and a ptPoint3");
PYTHON_RETURN_ERROR;
}
pyVector3 *force = pyVector3::ConvertFrom(forceObject);
pyPoint3 *offset = pyPoint3::ConvertFrom(offsetObject);
self->fThis->ForceWithOffset(*force, *offset);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, torque, args)
{
PyObject *torqueObject = NULL;
if (!PyArg_ParseTuple(args, "O", &torqueObject))
{
PyErr_SetString(PyExc_TypeError, "torque expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(torqueObject))
{
PyErr_SetString(PyExc_TypeError, "torque expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *torque = pyVector3::ConvertFrom(torqueObject);
self->fThis->Torque(*torque);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, impulse, args)
{
PyObject *forceObject = NULL;
if (!PyArg_ParseTuple(args, "O", &forceObject))
{
PyErr_SetString(PyExc_TypeError, "impulse expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(forceObject))
{
PyErr_SetString(PyExc_TypeError, "impulse expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *force = pyVector3::ConvertFrom(forceObject);
self->fThis->Impulse(*force);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, impulseWithOffset, args)
{
PyObject *forceObject = NULL;
PyObject *offsetObject = NULL;
if (!PyArg_ParseTuple(args, "OO", &forceObject, &offsetObject))
{
PyErr_SetString(PyExc_TypeError, "impulseWithOffset expects a ptVector3 and a ptPoint3");
PYTHON_RETURN_ERROR;
}
if ((!pyVector3::Check(forceObject)) || (!pyPoint3::Check(offsetObject)))
{
PyErr_SetString(PyExc_TypeError, "impulseWithOffset expects a ptVector3 and a ptPoint3");
PYTHON_RETURN_ERROR;
}
pyVector3 *force = pyVector3::ConvertFrom(forceObject);
pyPoint3 *offset = pyPoint3::ConvertFrom(offsetObject);
self->fThis->ImpulseWithOffset(*force, *offset);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, angularImpulse, args)
{
PyObject *forceObject = NULL;
if (!PyArg_ParseTuple(args, "O", &forceObject))
{
PyErr_SetString(PyExc_TypeError, "angularImpulse expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(forceObject))
{
PyErr_SetString(PyExc_TypeError, "angularImpulse expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *force = pyVector3::ConvertFrom(forceObject);
self->fThis->AngularImpulse(*force);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, damp, args)
{
float damp;
if (!PyArg_ParseTuple(args, "f", &damp))
{
PyErr_SetString(PyExc_TypeError, "damp expects a float");
PYTHON_RETURN_ERROR;
}
self->fThis->Damp(damp);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, shiftMass, args)
{
PyObject *offestObject = NULL;
if (!PyArg_ParseTuple(args, "O", &offestObject))
{
PyErr_SetString(PyExc_TypeError, "shiftMass expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(offestObject))
{
PyErr_SetString(PyExc_TypeError, "shiftMass expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *offset = pyVector3::ConvertFrom(offestObject);
self->fThis->ShiftMass(*offset);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, suppress, args)
{
char doSuppress;
if (!PyArg_ParseTuple(args, "b", &doSuppress))
{
PyErr_SetString(PyExc_TypeError, "suppress expects a boolean");
PYTHON_RETURN_NONE;
}
self->fThis->Suppress(doSuppress != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, setLinearVelocity, args)
{
PyObject *velocity = NULL;
if (!PyArg_ParseTuple(args, "O", &velocity))
{
PyErr_SetString(PyExc_TypeError, "setVelocity expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(velocity))
{
PyErr_SetString(PyExc_TypeError, "setVelocity expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *velocityVec = pyVector3::ConvertFrom(velocity);
self->fThis->SetLinearVelocity(*velocityVec);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptPhysics, setAngularVelocity, args)
{
PyObject *velocity = NULL;
if (!PyArg_ParseTuple(args, "O", &velocity))
{
PyErr_SetString(PyExc_TypeError, "setAngularVelocity expects a ptVector3");
PYTHON_RETURN_ERROR;
}
if (!pyVector3::Check(velocity))
{
PyErr_SetString(PyExc_TypeError, "setAngularVelocity expects a ptVector3");
PYTHON_RETURN_ERROR;
}
pyVector3 *velocityVec = pyVector3::ConvertFrom(velocity);
self->fThis->SetAngularVelocity(*velocityVec);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptPhysics)
PYTHON_METHOD(ptPhysics, netForce, "Params: forceFlag\nSpecify whether this object needs to use messages that are forced to the network\n"
"- This is to be used if your Python program is running on only one client\n"
"Such as a game master, only running on the client that owns a particular object"),
PYTHON_METHOD(ptPhysics, enable, "Params: state=1\nSets the physics enable state for the sceneobject attached"),
PYTHON_BASIC_METHOD(ptPhysics, disable, "Disables physics on the sceneobject attached"),
PYTHON_BASIC_METHOD(ptPhysics, disableCollision, "Disables collision detection on the attached sceneobject"),
PYTHON_BASIC_METHOD(ptPhysics, enableCollision, "Enables collision detection on the attached sceneobject"),
PYTHON_METHOD(ptPhysics, warp, "Params: position\nWarps the sceneobject to a specified location.\n"
"'position' can be a ptPoint3 or a ptMatrix44"),
PYTHON_METHOD(ptPhysics, warpObj, "Params: objkey\nWarps the sceneobject to match the location and orientation of the specified object"),
PYTHON_METHOD(ptPhysics, move, "Params: direction,distance\nMoves the attached sceneobject the specified distance in the specified direction"),
PYTHON_METHOD(ptPhysics, rotate, "Params: radians,axis\nRotates the attached sceneobject the specified radians around the specified axis"),
PYTHON_METHOD(ptPhysics, force, "Params: forceVector\nApplies the specified force to the attached sceneobject"),
PYTHON_METHOD(ptPhysics, forceWithOffset, "Params: forceVector,offsetPt\nApplies the specified offsetted force to the attached sceneobject"),
PYTHON_METHOD(ptPhysics, torque, "Params: torqueVector\nApplies the specified torque to the attached sceneobject"),
PYTHON_METHOD(ptPhysics, impulse, "Params: impulseVector\nAdds the given vector to the attached sceneobject's velocity"),
PYTHON_METHOD(ptPhysics, impulseWithOffset, "Params: impulseVector,offsetPt\nAdds the given vector to the attached sceneobject's velocity\n"
"with the specified offset"),
PYTHON_METHOD(ptPhysics, angularImpulse, "Params: impulseVector\nAdd the given vector (representing a rotation axis and magnitude) to\n"
"the attached sceneobject's velocity"),
PYTHON_METHOD(ptPhysics, damp, "Params: damp\nReduce all velocities on the object (0 = all stop, 1 = no effect)"),
PYTHON_METHOD(ptPhysics, shiftMass, "Params: offsetVector\nShifts the attached sceneobject's center to mass in the specified direction and distance"),
PYTHON_METHOD(ptPhysics, suppress, "Params: doSuppress\nCompletely remove the physical, but keep it around so it\n"
"can be added back later."),
PYTHON_METHOD(ptPhysics, setLinearVelocity, "Params: velocityVector\nSets the objects LinearVelocity to the specified vector"),
PYTHON_METHOD(ptPhysics, setAngularVelocity, "Params: velocityVector\nSets the objects AngularVelocity to the specified vector"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptPhysics, "Plasma physics class");
// required functions for PyObject interoperability
PyObject *cyPhysics::New(PyObject *sender, PyObject *recvr)
{
ptPhysics *newObj = (ptPhysics*)ptPhysics_type.tp_new(&ptPhysics_type, NULL, NULL);
if (sender != NULL)
{
pyKey *senderKey = pyKey::ConvertFrom(sender);
newObj->fThis->SetSender(senderKey->getKey());
}
if (recvr != NULL)
{
pyKey *recvrKey = pyKey::ConvertFrom(recvr);
newObj->fThis->AddRecvr(recvrKey->getKey());
}
newObj->fThis->SetNetForce(false);
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptPhysics, cyPhysics)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptPhysics, cyPhysics)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void cyPhysics::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptPhysics);
PYTHON_CLASS_IMPORT_END(m);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,223 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
//////////////////////////////////////////////////////////////////////
//
// PythonInterface - The Python interface to the Python dll
//
// NOTE: Eventually, this will be made into a separate dll, because there should
// only be one instance of this interface.
//
#include "hsTypes.h"
#include "hsStlUtils.h"
#include <python.h>
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
#include "../../Apps/CyPythonIDE/plCyDebug/plCyDebServer.h"
#endif
class plStatusLog;
class pyKey;
class PythonInterface
{
private:
static Int32 initialized; // count how many times we initialize
// and make sure that many finalize on the way out
static hsBool FirstTimeInit;
static hsBool IsInShutdown; // whether we are _really_ in shutdown mode
static PyMethodDef* plasmaMethods;
static PyObject* plasmaMod; // python object that holds the Plasma module
static PyObject* plasmaConstantsMod; // python object that holds the PlasmaConstants module
static PyObject* plasmaNetConstantsMod; // python object that holds the PlasmaNetConstants module
static PyObject* plasmaVaultConstantsMod; // python object that holds the PlasmaVaultConstants module
static PyMethodDef* plasmaGameMethods;
static PyObject* plasmaGameMod; // python object that holds the PlasmaGame module
static PyObject* plasmaGameConstantsMod; // python object that holds the PlasmaGameConstants module
static PyObject* stdOut; // python object of the stdout file
static PyObject* stdErr; // python object of the err file
static hsBool debug_initialized; // has the debug been initialized yet?
static PyObject* dbgMod; // display module for stdout and stderr
static PyObject* dbgOut;
static PyObject* dbgSlice; // time slice function for the debug window
static plStatusLog* dbgLog;
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
static bool usePythonDebugger;
static bool requestedExit;
static plCyDebServer debugServer;
#endif
public:
// set that we are truly shutting down
static void WeAreInShutdown() { IsInShutdown = true; }
// Initialize the Python dll
static void initPython();
// Initialize the Plasma module
static void AddPlasmaMethods(std::vector<PyMethodDef> &methods);
static void AddPlasmaClasses();
// Initialize the PlasmaConstants module
static void AddPlasmaConstantsClasses();
// Initialize the PlasmaNetConstants module;
static void AddPlasmaNetConstantsClasses();
// Initialize the PlasmaVaultConstants module;
static void AddPlasmaVaultConstantsClasses();
// Initialize the PlasmaGame module
static void AddPlasmaGameMethods(std::vector<PyMethodDef> &methods);
static void AddPlasmaGameClasses();
// Initialize the PlasmaGameConstants module
static void AddPlasmaGameConstantsClasses();
// Initialize the Python to Plasma
static void initDebugInterface();
// Finalize the Python dll, ie. get ready to shut down
static void finiPython();
// give the debug window a time slice
static void debugTimeSlice();
// get the stdout PyObject
static PyObject* GetStdOut();
static PyObject* GetStdErr();
// get the Output to the error file to be displayed
static int getOutputAndReset(std::string* output = nil);
// Writes 'text' to the Python log
static void WriteToLog(const char* text);
// Writes 'text' to stderr specified in the python interface
static void WriteToStdErr(const char* text);
// Find module. If it doesn't exist then don't create, return nil.
static PyObject* FindModule(char* module);
// create a new module with built-ins
static PyObject* CreateModule(char* module);
// checks to see if a specific function is defined in this module
// get an item (probably a function) from the Plasma module
static PyObject* GetPlasmaItem(char* item);
// Determine if the module name is unique
static hsBool IsModuleNameUnique(char* module);
// get an item (probably a function) from a specific module
static PyObject* GetModuleItem(char* item, PyObject* module);
// check a specific module for the define funcitons
static void CheckModuleForFunctions(PyObject* module, char** funcNames, PyObject** funcTable);
// checks to see if a specific function is defined in this instance of a class
// and will fill out the funcTable with object instances of where the funciton is
//
static void CheckInstanceForFunctions(PyObject* instance, char** funcNames, PyObject** funcTable);
// run a python string in a specific module name
// PARAMETERS : command - string of commands to execute in the...
// : filename - filename to say where to code came from
static PyObject* CompileString(char *command, char* filename);
/////////////////////////////////////////////////////////////////////////////
//
// Function : DumpObject
// PARAMETERS : pyobject - string of commands to execute in the...
//
// PURPOSE : marshals an object into a char string
//
static hsBool DumpObject(PyObject* pyobj, char** pickle, Int32* size);
/////////////////////////////////////////////////////////////////////////////
//
// Function : LoadObject
// PARAMETERS : pickle - the pickled object in char string form
// : size - size of the guts to load into an object
//
// PURPOSE : Load a python object from a pickled object
//
static PyObject* LoadObject(char* pickle, Int32 size);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RunStringInteractive
// PARAMETERS : command - string of commands to execute in the...
// : module - module name to run 'command' in
//
// PURPOSE : run a python string in a specific module name
// : Interactive mode (displays results)
//
static hsBool RunStringInteractive(char *command, PyObject* module);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RunString
// PARAMETERS : command - string of commands to execute in the...
// : module - module name to run 'command' in
//
// PURPOSE : run a python string in a specific module name
//
static hsBool RunString(char *command, PyObject* module);
/////////////////////////////////////////////////////////////////////////////
//
// Function : RunPYC
// PARAMETERS : code - compiled code
// : module - module name to run the code in
//
// PURPOSE : run a compiled python code in a specific module name
//
static hsBool RunPYC(PyObject* code, PyObject* module);
/////////////////////////////////////////////////////////////////////////////
//
// Function : GetpyKeyFromPython
// PARAMETERS : pkey - python object that is a pyKey (ptKey) class
//
// PURPOSE : turn a PyObject* into a pyKey*
//
static pyKey* GetpyKeyFromPython(PyObject* pkey);
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
static bool UsePythonDebugger() { return usePythonDebugger; }
static void UsePythonDebugger(bool use) { usePythonDebugger = use; }
static plCyDebServer* PythonDebugger() {return &debugServer;}
static bool DebuggerRequestedExit() {return requestedExit;}
static void DebuggerRequestedExit(bool reqExit) {requestedExit = reqExit;}
#endif
};

View File

@ -0,0 +1,37 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef plPythonCreatable_inc
#define plPythonCreatable_inc
#include "pnFactory/plCreator.h"
#include "plPythonFileMod.h"
REGISTER_CREATABLE( plPythonFileMod );
#include "plPythonSDLModifier.h"
REGISTER_CREATABLE( plPythonSDLModifier );
#endif // plPythonCreatable_inc

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,203 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef _plPythonFileMod_h_
#define _plPythonFileMod_h_
//////////////////////////////////////////////////////////////////////
//
// plPythonFileMod - the 'special' Python File modifier
//
// This modifier will handle the interface to python code that has been file-ized.
//
//////////////////////////////////////////////////////////////////////
#include "pnModifier/plMultiModifier.h"
#include "hsGeometry3.h"
#include "hsResMgr.h"
#include <python.h>
#include "plPythonParameter.h"
class PythonVaultCallback;
class plPythonSDLModifier;
class pyKey;
class pfPythonKeyCatcher;
class plKeyEventMsg;
class plPipeline;
class plPythonFileMod : public plMultiModifier
{
protected:
friend class plPythonSDLModifier;
plPythonSDLModifier* fSDLMod;
hsBool IEval(double secs, hsScalar del, UInt32 dirty);
void IMakeModuleName(char* modulename,plSceneObject* sobj);
char* fPythonFile;
char* fModuleName;
// the list of receivers that want to be notified
hsTArray<plKey> fReceivers;
PyObject* fSelfKey;
plPipeline *fPipe;
// the list of parameters (attributes)
hsTArray<plPythonParameter> fParameters;
// internal data
PyObject* fModule; // python module object
PyObject* fInstance; // python object that the instance of the class to run
static hsBool fAtConvertTime; // flag for when in convert time within Max, don't run code
hsBool fLocalNotify; // True when This Mod was Notified by a local plNotify
hsBool fIsFirstTimeEval; // flag to determine when the first time at the eval,
// so the Python coders can hava a chance to run initialization
// code after the system is up, but before things are displayed
hsBool fAmIAttachedToClone; // is this python file mod attached to a cloned object
// callback class for the KI
PythonVaultCallback *fVaultCallback;
pfPythonKeyCatcher *fKeyCatcher;
struct NamedComponent
{
char* name;
Int32 id;
bool isActivator;
};
hsTArray<NamedComponent> fNamedCompQueue;
virtual void IFindResponderAndAdd(const char *responderName, Int32 id);
virtual void IFindActivatorAndAdd(const char *activatorName, Int32 id);
void ISetKeyValue(const plKey& key, Int32 id);
bool ILoadPythonCode();
enum genref_whats
{
kNotSure = 0,
kAddNotify
};
public:
plPythonFileMod();
~plPythonFileMod();
CLASSNAME_REGISTER( plPythonFileMod );
GETINTERFACE_ANY( plPythonFileMod, plMultiModifier );
plPythonSDLModifier* GetSDLMod() { return fSDLMod; }
hsBool WasLocalNotify() { return fLocalNotify; }
plPipeline* GetPipeline() { return fPipe; }
virtual void SetSourceFile(const char* filename);
virtual int getPythonOutput(std::string* line);
virtual void ReportError();
virtual void DisplayPythonOutput();
static void SetAtConvertTime() { fAtConvertTime=true; }
virtual hsBool AmIAttachedToClone() { return fAmIAttachedToClone; }
virtual void AddToNotifyList(plKey pKey) { fReceivers.Append(pKey); }
virtual Int32 NotifyListCount() { return fReceivers.Count(); }
virtual plKey GetNotifyListItem(Int32 i) { return fReceivers[i]; }
virtual void AddParameter(plPythonParameter param) { fParameters.Append(param); }
virtual Int32 GetParameterListCount() { return fParameters.Count(); }
virtual plPythonParameter GetParameterItem(Int32 i) { return fParameters[i]; }
virtual void AddTarget(plSceneObject* sobj);
virtual void RemoveTarget(plSceneObject* so);
virtual void EnableControlKeyEvents();
virtual void DisableControlKeyEvents();
virtual hsBool MsgReceive(plMessage* msg);
virtual void Read(hsStream* stream, hsResMgr* mgr);
virtual void Write(hsStream* stream, hsResMgr* mgr);
// this is to keep track of what python functions are available and working,
// so there is no need to keep trying and banging our head until its bloody
enum func_num
{
kfunc_FirstUpdate = 0, // these enums _have_ to match the static names in fEventFunctionNames
kfunc_Update,
kfunc_Notify, // OnNotify
kfunc_AtTimer,
kfunc_OnKeyEvent,
kfunc_Load,
kfunc_Save,
kfunc_GUINotify,
kfunc_PageLoad,
kfunc_ClothingUpdate,
kfunc_KIMsg,
kfunc_MemberUpdate,
kfunc_RemoteAvatarInfo,
kfunc_RTChat,
kfunc_VaultEvent,
kfunc_AvatarPage,
kfunc_SDLNotify,
kfunc_OwnershipNotify,
kfunc_AgeVaultEvent,
kfunc_Init,
kfunc_OnCCRMsg,
kfunc_OnServerInitComplete,
kfunc_OnVaultNotify,
kfunc_OnDefaultKeyCaught,
kfunc_OnMarkerMsg,
kfunc_OnBackdoorMsg,
kfunc_OnBehaviorNotify,
kfunc_OnLOSNotify,
kfunc_OnBeginAgeLoad,
kfunc_OnMovieEvent,
kfunc_OnScreenCaptureDone,
kfunc_OnClimbBlockerEvent,
kfunc_OnAvatarSpawn,
kfunc_OnAccountUpdate,
kfunc_gotPublicAgeList,
kfunc_OnGameMgrMsg,
kfunc_OnGameCliMsg,
kfunc_OnAIMsg,
kfunc_lastone
};
// array of matching Python instance where the functions are, if defined
PyObject* fPyFunctionInstances[kfunc_lastone];
// array of the names of the standard functions that can be called
static char* fFunctionNames[];
// The konstant hard-coded name to be used for all global pythonFileMods
static char kGlobalNameKonstant[];
// API for processing discarded keys as the deafult key catcher
void HandleDiscardedKey( plKeyEventMsg *msg );
};
#endif // _plPythonFileMod_h

View File

@ -0,0 +1,60 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef _plPythonHelpers_h_
#define _plPythonHelpers_h_
//////////////////////////////////////////////////////////////////////
//
// plPythonHelpers - helper definitions for plPythonFileMod
//
//////////////////////////////////////////////////////////////////////
// notetrack data structure
typedef struct
{
plKey objKey; // plKey to the object
const char* note_name; // notetrack name
plKey modKey; // the animation modifier plKey that is associated with the notetrack name
} PY_NOTETRACK;
// material animation record structure
typedef struct
{
const char* material_name; // material name
const char* note_name; // notetrack name
plKey modKey; // the animation modifier plKey that is associated with this material animation
} PY_MATERIAL_ANIM;
// material animation record structure
typedef struct
{
const char* sound_name; // the sound name
int sound_index; // the sound index that goes with the sound
} PY_SOUND_IDX;
#endif // _plPythonHelpers_h

View File

@ -0,0 +1,229 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "hsTypes.h"
#include "hsStlUtils.h"
#include "plPythonPack.h"
#include "hsStream.h"
#include "plFile/hsFiles.h"
#include "plFile/plSecureStream.h"
#include "plFile/plStreamSource.h"
#include "hsStlSortUtils.h"
#include "marshal.h"
static const char* kPackFilePath = ".\\Python\\";
struct plPackOffsetInfo
{
UInt32 fOffset;
UInt32 fStreamIndex; // index of the stream object in the plPythonPack object that the file resides in
};
class plPythonPack
{
protected:
std::vector<hsStream*> fPackStreams;
bool fPackNotFound; // No pack file, don't keep trying
typedef std::map<std::string, plPackOffsetInfo> FileOffset;
FileOffset fFileOffsets;
plPythonPack();
public:
~plPythonPack();
static plPythonPack& Instance();
bool Open();
void Close();
PyObject* OpenPacked(const char *fileName);
hsBool IsPackedFile(const char* fileName);
};
PyObject* PythonPack::OpenPythonPacked(const char* fileName)
{
return plPythonPack::Instance().OpenPacked(fileName);
}
hsBool PythonPack::IsItPythonPacked(const char* fileName)
{
return plPythonPack::Instance().IsPackedFile(fileName);
}
plPythonPack::plPythonPack() : fPackNotFound(false)
{
}
plPythonPack::~plPythonPack()
{
Close();
}
plPythonPack& plPythonPack::Instance()
{
static plPythonPack theInstance;
return theInstance;
}
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
bool plPythonPack::Open()
{
if (fPackStreams.size() > 0)
return true;
// We already tried and it wasn't there
if (fPackNotFound)
return false;
fPackNotFound = true;
// Get the names of all the pak files
std::vector<std::wstring> files = plStreamSource::GetInstance()->GetListOfNames(L"python", L".pak");
std::vector<time_t> modTimes; // the modification time for each of the streams (to resolve duplicate file issues)
// grab all the .pak files in the folder
for (int curName = 0; curName < files.size(); curName++)
{
// obtain the stream
hsStream *fPackStream = plStreamSource::GetInstance()->GetFile(files[curName]);
if (fPackStream)
{
fPackStream->Rewind(); // make sure we're at the beginning of the file
fPackNotFound = false;
char* tempFilename = hsWStringToString(files[curName].c_str());
struct stat buf;
time_t curModTime = 0;
if (stat(tempFilename,&buf)==0)
curModTime = buf.st_mtime;
modTimes.push_back(curModTime);
delete [] tempFilename;
// read the index data
int numFiles = fPackStream->ReadSwap32();
UInt32 streamIndex = (UInt32)(fPackStreams.size());
for (int i = 0; i < numFiles; i++)
{
// and pack the index into our own data structure
char* buf = fPackStream->ReadSafeString();
std::string pythonName = buf; // reading a "string" from a hsStream directly into a stl string causes memory loss
delete [] buf;
UInt32 offset = fPackStream->ReadSwap32();
plPackOffsetInfo offsetInfo;
offsetInfo.fOffset = offset;
offsetInfo.fStreamIndex = streamIndex;
if (fFileOffsets.find(pythonName) != fFileOffsets.end())
{
UInt32 index = fFileOffsets[pythonName].fStreamIndex;
if (modTimes[index] < curModTime) // is the existing file older then the new one?
fFileOffsets[pythonName] = offsetInfo; // yup, so replace it with the new info
}
else
fFileOffsets[pythonName] = offsetInfo; // no conflicts, add the info
}
fPackStreams.push_back(fPackStream);
}
}
return !fPackNotFound;
}
void plPythonPack::Close()
{
if (fPackStreams.size() == 0)
return;
int i;
for (i=0; i<fPackStreams.size(); i++)
{
hsStream* fPackStream = fPackStreams[i];
// do NOT close or delete the streams, the preloader will do that for us
fPackStreams[i] = nil;
}
fPackStreams.clear();
fFileOffsets.clear();
}
PyObject* plPythonPack::OpenPacked(const char* fileName)
{
if (!Open())
return nil;
std::string pythonName = fileName;
pythonName += ".py";
FileOffset::iterator it = fFileOffsets.find(pythonName);
if (it != fFileOffsets.end())
{
plPackOffsetInfo offsetInfo = (*it).second;
hsStream* fPackStream = fPackStreams[offsetInfo.fStreamIndex];
fPackStream->SetPosition(offsetInfo.fOffset);
Int32 size = fPackStream->ReadSwap32();
if (size > 0)
{
char *buf = TRACKED_NEW char[size];
UInt32 readSize = fPackStream->Read(size, buf);
hsAssert(readSize <= size, xtl::format("Python PackFile %s: Incorrect amount of data, read %d instead of %d",
fileName, readSize, size).c_str());
// let the python marshal make it back into a code object
PyObject *pythonCode = PyMarshal_ReadObjectFromString(buf, size);
delete [] buf;
return pythonCode;
}
}
return nil;
}
hsBool plPythonPack::IsPackedFile(const char* fileName)
{
if (!Open())
return nil;
std::string pythonName = fileName;
pythonName += ".py";
FileOffset:: iterator it = fFileOffsets.find(pythonName);
if (it != fFileOffsets.end())
return true;
return false;
}

View File

@ -0,0 +1,38 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef plPythonPack_h_inc
#define plPythonPack_h_inc
#include "Python.h"
#include "hsTypes.h"
namespace PythonPack
{
PyObject* OpenPythonPacked(const char* fileName);
hsBool IsItPythonPacked(const char* fileName);
}
#endif // plPythonPack_h_inc

View File

@ -0,0 +1,450 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef plPythonParameter_h_inc
#define plPythonParameter_h_inc
#include "pnKeyedObject/plKey.h"
//
// This is the data for the parameters (or attributes) for the PythonFile components
//
// What is in the records is the id of the attribute and its value
//
// NOTE: Lists of values for parameters will have a specific type that means list
// however, the list of values will not be in one record but many records, with
// the fID being the same.
//
typedef struct plPythonParameter
{
public:
// this is a unique (within one Python mod) id for this parameter
Int32 fID;
// then comes the value, which is a type followed by the data
enum valueType
{
kInt=1,
kFloat,
kBoolean,
kString,
kSceneObject,
kSceneObjectList,
kActivatorList,
kResponderList,
kDynamicText,
kGUIDialog,
kExcludeRegion,
kAnimation,
kAnimationName,
kBehavior,
kMaterial,
kGUIPopUpMenu,
kGUISkin,
kWaterComponent,
kSwimCurrentInterface,
kClusterComponentList,
kMaterialAnimation,
kGrassShaderComponent,
kNone
};
Int32 fValueType; // what type of value (dataType enum)
// the data of the value
union
{
Int32 fIntNumber;
hsScalar fFloatNumber;
hsBool fBool;
char* fString;
} datarecord;
plKey fObjectKey; // the plKey of the scene object (should be part of the union, but unions don't allow complex types)
plPythonParameter()
{
fID = 0;
fValueType = kNone;
}
plPythonParameter(Int32 id)
{
fID = id;
fValueType = kNone;
}
plPythonParameter& operator=(const plPythonParameter& other)
{
return Copy(other);
}
// copy constructor
plPythonParameter(const plPythonParameter& other)
{
fID = 0;
fValueType = kNone;
Copy(other);
}
plPythonParameter& Copy(const plPythonParameter& other)
{
fID = other.fID;
switch ( other.fValueType )
{
case kInt:
SetToInt(other.datarecord.fIntNumber);
break;
case kFloat:
SetToFloat(other.datarecord.fFloatNumber);
break;
case kBoolean:
SetToBoolean(other.datarecord.fBool);
break;
case kString:
SetToString(other.datarecord.fString);
break;
case kSceneObject:
SetToSceneObject(other.fObjectKey);
break;
case kSceneObjectList:
SetToSceneObject(other.fObjectKey,true);
break;
case kActivatorList:
SetToActivator(other.fObjectKey);
break;
case kResponderList:
SetToResponder(other.fObjectKey);
break;
case kDynamicText:
SetToDynamicText(other.fObjectKey);
break;
case kGUIDialog:
SetToGUIDialog(other.fObjectKey);
break;
case kExcludeRegion:
SetToExcludeRegion(other.fObjectKey);
break;
case kAnimation:
SetToAnimation(other.fObjectKey);
break;
case kAnimationName:
SetToAnimationName(other.datarecord.fString);
break;
case kBehavior:
SetToBehavior(other.fObjectKey);
break;
case kMaterial:
SetToMaterial(other.fObjectKey);
break;
case kGUIPopUpMenu:
SetToGUIPopUpMenu(other.fObjectKey);
break;
case kGUISkin:
SetToGUISkin(other.fObjectKey);
break;
case kWaterComponent:
SetToWaterComponent(other.fObjectKey);
break;
case kSwimCurrentInterface:
SetToSwimCurrentInterface(other.fObjectKey);
break;
case kClusterComponentList:
SetToClusterComponent(other.fObjectKey);
break;
case kMaterialAnimation:
SetToMaterialAnimation(other.fObjectKey);
break;
case kGrassShaderComponent:
SetToGrassShaderComponent(other.fObjectKey);
break;
}
return *this;
}
~plPythonParameter()
{
SetToNone();
}
void SetToNone()
{
// remove the string if one was created
if ( fValueType == kString || fValueType == kAnimationName )
delete [] datarecord.fString;
fValueType = kNone;
}
void SetToInt(Int32 number)
{
SetToNone();
fValueType = kInt;
datarecord.fIntNumber = number;
}
void SetToFloat(hsScalar number)
{
SetToNone();
fValueType = kFloat;
datarecord.fFloatNumber = number;
}
void SetToBoolean(hsBool state)
{
SetToNone();
fValueType = kBoolean;
datarecord.fBool = state;
}
void SetToString(const char* string)
{
SetToNone();
fValueType = kString;
datarecord.fString = hsStrcpy(string);
}
void SetToSceneObject(plKey key, hsBool list=false)
{
SetToNone();
if (list)
fValueType = kSceneObjectList;
else
fValueType = kSceneObject;
fObjectKey = key;
}
void SetToActivator(plKey key)
{
SetToNone();
fValueType = kActivatorList;
fObjectKey = key;
}
void SetToResponder(plKey key)
{
SetToNone();
fValueType = kResponderList;
fObjectKey = key;
}
void SetToDynamicText(plKey key)
{
SetToNone();
fValueType = kDynamicText;
fObjectKey = key;
}
void SetToGUIDialog(plKey key)
{
SetToNone();
fValueType = kGUIDialog;
fObjectKey = key;
}
void SetToExcludeRegion(plKey key)
{
SetToNone();
fValueType = kExcludeRegion;
fObjectKey = key;
}
void SetToWaterComponent(plKey key)
{
SetToNone();
fValueType = kWaterComponent;
fObjectKey = key;
}
void SetToSwimCurrentInterface(plKey key)
{
SetToNone();
fValueType = kSwimCurrentInterface;
fObjectKey = key;
}
void SetToAnimation(plKey key)
{
SetToNone();
fValueType = kAnimation;
fObjectKey = key;
}
void SetToAnimationName(const char* string)
{
SetToNone();
fValueType = kAnimationName;
datarecord.fString = hsStrcpy(string);
}
void SetToBehavior(plKey key)
{
SetToNone();
fValueType = kBehavior;
fObjectKey = key;
}
void SetToMaterial(plKey key)
{
SetToNone();
fValueType = kMaterial;
fObjectKey = key;
}
void SetToGUIPopUpMenu(plKey key)
{
SetToNone();
fValueType = kGUIPopUpMenu;
fObjectKey = key;
}
void SetToGUISkin(plKey key)
{
SetToNone();
fValueType = kGUISkin;
fObjectKey = key;
}
void SetToClusterComponent(plKey key)
{
SetToNone();
fValueType = kClusterComponentList;
fObjectKey = key;
}
void SetToMaterialAnimation(plKey key)
{
SetToNone();
fValueType = kMaterialAnimation;
fObjectKey = key;
}
void SetToGrassShaderComponent(plKey key)
{
SetToNone();
fValueType = kGrassShaderComponent;
fObjectKey = key;
}
// read and write routines for export and reading in at runtime
void Read(hsStream *stream, hsResMgr* mgr)
{
SetToNone();
fID = stream->ReadSwap32();
fValueType = stream->ReadSwap32();
// read the different types of data
int count;
switch ( fValueType )
{
case kInt:
datarecord.fIntNumber = stream->ReadSwap32();
break;
case kFloat:
stream->ReadSwap(&datarecord.fFloatNumber);
break;
case kBoolean:
datarecord.fBool = stream->ReadSwap32();
break;
case kString:
case kAnimationName:
count = stream->ReadSwap32();
if ( count != 0 )
{
datarecord.fString = TRACKED_NEW char[count+1];
stream->ReadSwap(count,datarecord.fString);
}
else
datarecord.fString = nil;
break;
case kSceneObject:
case kSceneObjectList:
case kActivatorList:
case kResponderList:
case kDynamicText:
case kGUIDialog:
case kExcludeRegion:
case kAnimation:
case kBehavior:
case kMaterial:
case kGUIPopUpMenu:
case kGUISkin:
case kWaterComponent:
case kSwimCurrentInterface:
case kClusterComponentList:
case kMaterialAnimation:
case kGrassShaderComponent:
fObjectKey = mgr->ReadKey(stream);
break;
}
}
void Write(hsStream * stream, hsResMgr* mgr)
{
int count;
stream->WriteSwap32(fID);
stream->WriteSwap32(fValueType);
switch ( fValueType )
{
case kInt:
stream->WriteSwap32(datarecord.fIntNumber);
break;
case kFloat:
stream->WriteSwap(datarecord.fFloatNumber);
break;
case kBoolean:
stream->WriteSwap32(datarecord.fBool);
break;
case kString:
case kAnimationName:
if ( datarecord.fString != nil )
count = hsStrlen(datarecord.fString)+1;
else
count = 0;
stream->WriteSwap(count);
if ( count != 0 )
stream->WriteSwap(count,datarecord.fString);
break;
case kSceneObject:
case kSceneObjectList:
case kActivatorList:
case kResponderList:
case kDynamicText:
case kGUIDialog:
case kExcludeRegion:
case kAnimation:
case kBehavior:
case kMaterial:
case kGUIPopUpMenu:
case kGUISkin:
case kWaterComponent:
case kSwimCurrentInterface:
case kClusterComponentList:
case kMaterialAnimation:
case kGrassShaderComponent:
mgr->WriteKey(stream, fObjectKey);
break;
}
}
} plPythonParameter;
#endif // plPythonParameter_h_inc

View File

@ -0,0 +1,703 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "hsConfig.h"
#include "plPythonSDLModifier.h"
#include "cyPythonInterface.h"
#include "plPythonFileMod.h"
#include "pyKey.h"
#include "cyMisc.h"
#include "pnSceneObject/plSceneObject.h"
#include "plResMgr/plKeyFinder.h"
#include "plAgeDescription/plAgeDescription.h"
#include "plSDL/plSDL.h"
#include "pnNetCommon/plNetApp.h"
#include "plNetClient/plNetClientMgr.h"
plStateDataRecord * GetAgeSDL()
{
const plPythonSDLModifier * mod = plPythonSDLModifier::FindAgeSDL();
if ( mod )
return mod->GetStateCache();
return nil;
}
#define PyLoggedAssert(cond, text) \
if (!cond) PythonInterface::WriteToLog(text); \
hsAssert(cond, text);
plPythonSDLModifier::plPythonSDLModifier(plPythonFileMod* owner) : fOwner(owner)
{
plStateDescriptor* desc = plSDLMgr::GetInstance()->FindDescriptor(fOwner->fPythonFile, plSDL::kLatestVersion);
if (desc)
{
// Create a Python SDL record with no values set
int numVars = desc->GetNumVars();
for (int i = 0; i < numVars; i++)
{
plVarDescriptor* var = desc->GetVar(i);
const char* name = var->GetName();
int count = var->GetCount();
fMap[name] = SDLObj(nil, count, false);
}
}
}
plPythonSDLModifier::~plPythonSDLModifier()
{
SDLMap::iterator it;
for (it = fMap.begin(); it != fMap.end(); it++)
{
PyObject* obj = it->second.obj;
Py_XDECREF(obj);
}
}
PyObject* plPythonSDLModifier::GetItem(const char* key)
{
SDLMap::iterator it = fMap.find(key);
if (it == fMap.end())
{
char errmsg[256];
sprintf(errmsg,"SDL key %s not found",key);
PyErr_SetString(PyExc_KeyError, errmsg);
PYTHON_RETURN_ERROR;
}
PyObject* val = it->second.obj;
if (!val)
val = PyTuple_New(0);
Py_INCREF(val);
return val;
}
void plPythonSDLModifier::ISetItem(const char* key, PyObject* value)
{
if (!value || !PyTuple_Check(value))
{
PyLoggedAssert(0, "[SDL] Trying to set a tuple value to something that isn't a tuple");
return;
}
SDLMap::iterator it = fMap.find(key);
if (it == fMap.end())
{
PyLoggedAssert(0, "[SDL] Tried to set a nonexistent SDL value");
return;
}
SDLObj& oldObj = it->second;
if (oldObj.size != 0 && PyTuple_Size(value) != oldObj.size)
{
PyLoggedAssert(0, "[SDL] Wrong size for a fixed size SDL value");
return;
}
Py_XDECREF(oldObj.obj);
Py_XINCREF(value);
oldObj.obj = value;
}
void plPythonSDLModifier::SendToClients(const char* key)
{
SDLMap::iterator it = fMap.find(key);
if (it != fMap.end())
it->second.sendToClients = true;
}
void plPythonSDLModifier::SetNotify(pyKey& selfkey, const char* key, float tolerance)
{
AddNotifyForVar(selfkey.getKey(), key, tolerance);
}
void plPythonSDLModifier::SetItem(const char* key, PyObject* value)
{
ISetItem(key, value);
IDirtySynchState(key);
}
void plPythonSDLModifier::SetItemFromSDLVar(plSimpleStateVariable* var)
{
const char* name = var->GetName();
// Get the SDL value in Python format
PyObject* pyVar = ISDLVarToPython(var);
ISetItem(name, pyVar);
Py_XDECREF(pyVar);
// let the sender do the dirty sync state stuff
}
void plPythonSDLModifier::SetDefault(const char* key, PyObject* value)
{
ISetItem(key, value);
}
void plPythonSDLModifier::SetItemIdx(const char* key, int idx, PyObject* value, hsBool sendImmediate)
{
if (!value)
{
PyLoggedAssert(0, "[SDL] Trying to set a value to nil");
return;
}
SDLMap::iterator it = fMap.find(key);
if (it == fMap.end())
{
PyLoggedAssert(0, "[SDL] Tried to set a nonexistent SDL value");
return;
}
PyObject* pyTuple = it->second.obj;
int size = it->second.size;
if (size != 0 && idx >= size)
{
PyLoggedAssert(0, "[SDL] Trying to resize a SDL value that can't be");
return;
}
if (pyTuple)
{
if (PyTuple_Size(pyTuple) <= idx)
{
int oldsize = PyTuple_Size(pyTuple);
_PyTuple_Resize(&pyTuple, idx+1);
// initialize the tuple elements to None, because Python don't like NULLs
int j;
for ( j=oldsize; j<idx+1; j++ )
{
Py_INCREF(Py_None);
PyTuple_SetItem(pyTuple, j, Py_None);
}
}
}
else
{
int newSize = (size == 0) ? idx+1 : size;
pyTuple = PyTuple_New(newSize);
// initialize the tuple elements to None, because Python don't like NULLs
int j;
for ( j=0; j<newSize; j++ )
{
Py_INCREF(Py_None);
PyTuple_SetItem(pyTuple, j, Py_None);
}
it->second.obj = pyTuple;
}
Py_XINCREF(value); // PyTuple_SetItem doesn't increment the ref count
PyTuple_SetItem(pyTuple, idx, value);
IDirtySynchState(key, sendImmediate);
}
const char* plPythonSDLModifier::GetSDLName() const
{
return fOwner->fPythonFile;
}
void plPythonSDLModifier::SetFlags(const char* name, bool sendImmediate, bool skipOwnershipCheck)
{
SDLMap::iterator it = fMap.find(name);
if (it != fMap.end())
{
it->second.sendImmediate = sendImmediate;
it->second.skipLocalCheck = skipOwnershipCheck;
}
}
void plPythonSDLModifier::SetTagString(const char* name, const char* tag)
{
SDLMap::iterator it = fMap.find(name);
if (it != fMap.end())
{
it->second.hintString = tag;
}
}
void plPythonSDLModifier::ISetCurrentStateFrom(const plStateDataRecord* srcState)
{
plStateDataRecord::SimpleVarsList vars;
int num = srcState->GetUsedVars(&vars);
for (int i = 0; i < num; i++)
{
plSimpleStateVariable* var = vars[i];
const char* name = var->GetName();
// Get the SDL value in Python format
PyObject* pyVar = ISDLVarToPython(var);
SetItem(name, pyVar);
Py_XDECREF(pyVar);
}
// Notify the Python code that we updated the SDL record
if (fOwner->fPyFunctionInstances[plPythonFileMod::kfunc_Load] != nil)
{
PyObject* retVal = PyObject_CallMethod(fOwner->fPyFunctionInstances[plPythonFileMod::kfunc_Load],
fOwner->fFunctionNames[plPythonFileMod::kfunc_Load], nil);
if (retVal == nil)
{
#ifndef PLASMA_EXTERNAL_RELEASE
// for some reason this function didn't, remember that and not call it again
fOwner->fPyFunctionInstances[plPythonFileMod::kfunc_Load] = nil;
#endif //PLASMA_EXTERNAL_RELEASE
// if there was an error make sure that the stderr gets flushed so it can be seen
fOwner->ReportError();
}
Py_XDECREF(retVal);
}
// display any output
fOwner->DisplayPythonOutput();
}
void plPythonSDLModifier::IPutCurrentStateIn(plStateDataRecord* dstState)
{
SDLMap::iterator it = fMap.begin();
for (; it != fMap.end(); it++)
{
IPythonVarToSDL(dstState, it->first.c_str());
}
}
void plPythonSDLModifier::IDirtySynchState(const char* name, hsBool sendImmediate)
{
SDLMap::iterator it = fMap.find(name);
if (it != fMap.end())
{
UInt32 flags = 0;
if (it->second.sendToClients)
flags |= kBCastToClients;
if (it->second.sendImmediate)
flags |= kSendImmediately;
if (it->second.skipLocalCheck)
flags |= kSkipLocalOwnershipCheck;
if (sendImmediate)
flags |= kSendImmediately;
GetTarget()->DirtySynchState(fOwner->fPythonFile, flags);
}
}
bool plPythonSDLModifier::IPythonVarIdxToSDL(plSimpleStateVariable* var, int varIdx, int type, PyObject* pyVar,
const char* hintstring)
{
switch (type)
{
case plVarDescriptor::kShort:
case plVarDescriptor::kByte:
case plVarDescriptor::kBool:
case plVarDescriptor::kInt:
if (PyInt_Check(pyVar))
{
int v = PyInt_AsLong(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
else if (PyLong_Check(pyVar))
{
int v = (int)PyLong_AsLong(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
else if (PyFloat_Check(pyVar))
{
int v = (int)PyFloat_AsDouble(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
break;
case plVarDescriptor::kFloat:
if (PyFloat_Check(pyVar))
{
float v = (float)PyFloat_AsDouble(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
// does python think that its an integer? too bad, we'll make it a float anyhow!
else if (PyInt_Check(pyVar))
{
float v = (float)PyInt_AsLong(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
break;
case plVarDescriptor::kString32:
if (PyString_Check(pyVar))
{
char* v = PyString_AsString(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
}
break;
case plVarDescriptor::kKey:
{
pyKey* key = PythonInterface::GetpyKeyFromPython(pyVar);
if ( key )
var->Set(key->getKey(),varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
}
break;
case plVarDescriptor::kDouble:
if (PyFloat_Check(pyVar))
{
double v = PyFloat_AsDouble(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
else if (PyInt_Check(pyVar))
{
double v = (double)PyInt_AsLong(pyVar);
var->Set(v, varIdx);
if (hintstring)
var->GetNotificationInfo().SetHintString(hintstring);
return true;
}
break;
case plVarDescriptor::kAgeTimeOfDay:
break;
default:
hsAssert(0, "Not supported yet");
}
return false;
}
void plPythonSDLModifier::IPythonVarToSDL(plStateDataRecord* state, const char* name)
{
plSimpleStateVariable* var = state->FindVar(name);
PyObject* pyVar = nil;
SDLMap::iterator it = fMap.find(name);
if (it != fMap.end())
pyVar = it->second.obj;
if (!var || !pyVar)
return;
if (PyTuple_Check(pyVar))
{
int count = PyTuple_Size(pyVar);
plSimpleVarDescriptor::Type type = var->GetSimpleVarDescriptor()->GetType();
for (int i = 0; i < count; i++)
{
PyObject* pyVarItem = PyTuple_GetItem(pyVar, i);
if (pyVarItem)
IPythonVarIdxToSDL(var, i, type, pyVarItem,it->second.hintString.c_str());
}
}
}
PyObject* plPythonSDLModifier::ISDLVarIdxToPython(plSimpleStateVariable* var, int type, int idx)
{
switch (type)
{
case plVarDescriptor::kShort:
case plVarDescriptor::kByte:
case plVarDescriptor::kInt:
{
int v;
var->Get(&v, idx);
return PyInt_FromLong(v);
}
case plVarDescriptor::kFloat:
case plVarDescriptor::kAgeTimeOfDay:
{
float v;
var->Get(&v, idx);
return PyFloat_FromDouble(v);
}
case plVarDescriptor::kBool:
{
bool v;
var->Get(&v, idx);
return PyLong_FromLong(v);
}
case plVarDescriptor::kString32:
{
char v[256];
var->Get(v, idx);
return PyString_FromString(v);
}
case plVarDescriptor::kKey:
{
plKey v;
var->Get(&v, idx);
PyObject* keyObj = pyKey::New(v);
return keyObj;
}
case plVarDescriptor::kDouble:
{
double v;
var->Get(&v, idx);
return PyFloat_FromDouble(v);
}
// case plVarDescriptor::kStateDescriptor:
// case plVarDescriptor::kCreatable:
// case plVarDescriptor::kVector3:
// case plVarDescriptor::kPoint3:
// case plVarDescriptor::kRGB:
// case plVarDescriptor::kRGBA:
// case plVarDescriptor::kQuaternion:
default:
hsAssert(0, "Not supported yet");
}
PYTHON_RETURN_NONE;
}
PyObject* plPythonSDLModifier::ISDLVarToPython(plSimpleStateVariable* var)
{
plSimpleVarDescriptor::Type type = var->GetSimpleVarDescriptor()->GetType();
int count = var->GetCount();
PyObject* pyTuple = PyTuple_New(count);
for (int i = 0; i < count; i++)
{
PyObject* varVal = ISDLVarIdxToPython(var, type, i);
PyTuple_SetItem(pyTuple, i, varVal);
}
return pyTuple;
}
bool plPythonSDLModifier::HasSDL(const char* pythonFile)
{
return (plSDLMgr::GetInstance()->FindDescriptor(pythonFile, plSDL::kLatestVersion) != nil);
}
const plSDLModifier *ExternFindAgeSDL()
{
return plPythonSDLModifier::FindAgeSDL();
}
const plPythonSDLModifier *ExternFindAgePySDL()
{
return plPythonSDLModifier::FindAgeSDL();
}
const plPythonSDLModifier* plPythonSDLModifier::FindAgeSDL()
{
const char* ageName = cyMisc::GetAgeName();
if (strcmp(ageName, "") == 0)
return nil; // don't have an age, probably because we're running in max?
// find the Age Global object
plLocation loc = plKeyFinder::Instance().FindLocation(ageName,plAgeDescription::GetCommonPage(plAgeDescription::kGlobal));
if ( loc.IsValid() )
{
plUoid oid(loc,plPythonFileMod::Index(), plPythonFileMod::kGlobalNameKonstant);
if ( oid.IsValid() )
{
plKey key = hsgResMgr::ResMgr()->FindKey(oid);
plPythonFileMod *pfmod = plPythonFileMod::ConvertNoRef(key ? key->ObjectIsLoaded() : nil);
if ( pfmod )
{
plPythonSDLModifier * sdlMod = pfmod->GetSDLMod();
if(sdlMod)
// we found it!
return sdlMod;
plNetClientApp::StaticErrorMsg("pfmod %s has a nil python SDL modifier for age sdl %s",
pfmod->GetKeyName() ? pfmod->GetKeyName() : "?", ageName);
}
else
{
char str[256];
if (!key)
plNetClientApp::StaticErrorMsg("nil key %s for age sdl %s", ageName, oid.StringIze(str));
else
if (!key->ObjectIsLoaded())
plNetClientApp::StaticErrorMsg("key %s not loaded for age sdl %s",
key->GetName() ? key->GetName() : "?", ageName);
else
if (!plPythonFileMod::ConvertNoRef(key->ObjectIsLoaded()))
plNetClientApp::StaticErrorMsg("key %s is not a python file mod for age sdl %s",
key->GetName() ? key->GetName() : "?", ageName);
}
}
else
plNetClientApp::StaticErrorMsg("Invalid plUoid for age sdl %s", ageName);
}
else
plNetClientApp::StaticErrorMsg("Invalid plLocation for age sdl %s", ageName);
// couldn't find one (maybe because we didn't look)
return nil;
}
plKey ExternFindAgeSDLTarget()
{
return plPythonSDLModifier::FindAgeSDLTarget();
}
plKey plPythonSDLModifier::FindAgeSDLTarget()
{
// find the Age Global object
plLocation loc = plKeyFinder::Instance().FindLocation(cyMisc::GetAgeName(),plAgeDescription::GetCommonPage(plAgeDescription::kGlobal));
if ( loc.IsValid() )
{
plUoid oid(loc,plPythonFileMod::Index(), plPythonFileMod::kGlobalNameKonstant);
if ( oid.IsValid() )
{
plKey key = hsgResMgr::ResMgr()->FindKey(oid);
plPythonFileMod *pfmod = plPythonFileMod::ConvertNoRef(key ? key->GetObjectPtr() : nil);
if ( pfmod )
{
if (pfmod->GetTarget(0))
return pfmod->GetTarget(0)->GetKey();
}
}
}
// couldn't find one (maybe because we didn't look)
return nil;
}
/////////////////////////////////////////////
pySDLModifier::pySDLModifier(plPythonSDLModifier* sdlMod)
{
fRecord = sdlMod;
}
PyObject* pySDLModifier::GetAgeSDL()
{
const char* ageName = cyMisc::GetAgeName();
if (strcmp(ageName, "") == 0)
PYTHON_RETURN_NONE; // just return none if the age is blank (running in max?)
const plPythonSDLModifier* ageSDL = plPythonSDLModifier::FindAgeSDL();
if ( ageSDL )
{
return pySDLModifier::New((plPythonSDLModifier*)ageSDL);
}
// didn't find one, throw an exception for the python programmer to chew on
char errmsg[256];
sprintf(errmsg,"Age Global SDL for %s does not exist!",ageName);
plNetClientApp::StaticErrorMsg(errmsg);
PyErr_SetString(PyExc_KeyError, errmsg);
PYTHON_RETURN_ERROR;
}
void pySDLModifier::SetDefault(pySDLModifier& self, std::string key, PyObject* value)
{
self.fRecord->SetDefault(key.c_str(), value);
}
void pySDLModifier::SendToClients(pySDLModifier& self, std::string key)
{
self.fRecord->SendToClients(key.c_str());
}
void pySDLModifier::SetNotify(pySDLModifier& self, pyKey& selfkey, std::string key, float tolerance)
{
self.fRecord->SetNotify(selfkey, key.c_str(), tolerance);
}
PyObject* pySDLModifier::GetItem(pySDLModifier& self, std::string key)
{
return self.fRecord->GetItem(key.c_str());
}
void pySDLModifier::SetItem(pySDLModifier& self, std::string key, PyObject* value)
{
self.fRecord->SetItem(key.c_str(), value);
}
void pySDLModifier::SetItemIdx(pySDLModifier& self, std::string key, int idx, PyObject* value)
{
self.fRecord->SetItemIdx(key.c_str(), idx, value);
}
void pySDLModifier::SetItemIdxImmediate(pySDLModifier& self, std::string key, int idx, PyObject* value)
{
self.fRecord->SetItemIdx(key.c_str(), idx, value, true);
}
void pySDLModifier::SetFlags(pySDLModifier& self, const char* name, bool sendImmediate, bool skipOwnershipCheck)
{
self.fRecord->SetFlags(name,sendImmediate,skipOwnershipCheck);
}
void pySDLModifier::SetTagString(pySDLModifier& self, const char* name, const char* tag)
{
self.fRecord->SetTagString(name,tag);
}

View File

@ -0,0 +1,141 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef plPythonSDLModifier_h_inc
#define plPythonSDLModifier_h_inc
class plPythonFileMod;
class plStateDataRecord;
class plSimpleStateVariable;
#include "hsStlUtils.h"
#include "plModifier/plSDLModifier.h"
#include <python.h>
#include "pyGlueHelpers.h"
// hack for plNetClientVNodeMgr single-player mode SDLHook stuff.
plStateDataRecord * GetAgeSDL();
class pyKey;
//
// The fields of a SDL record in Python format.
// If the Python code changes a value an update is sent automatically
//
class plPythonSDLModifier : public plSDLModifier
{
protected:
class SDLObj
{
public:
PyObject* obj;
int size; // 0 for resizable
bool sendToClients;
bool skipLocalCheck;
bool sendImmediate;
std::string hintString;
SDLObj() : obj(nil), size(-1), sendToClients(false) {}
SDLObj(PyObject* obj, int size, bool sendToClients) : obj(obj), size(size), sendToClients(sendToClients) {}
};
typedef std::map<std::string, SDLObj> SDLMap;
SDLMap fMap;
plPythonFileMod* fOwner;
plPythonSDLModifier() {}
PyObject* ISDLVarToPython(plSimpleStateVariable* var);
PyObject* ISDLVarIdxToPython(plSimpleStateVariable* var, int type, int idx);
void IPythonVarToSDL(plStateDataRecord* state, const char* name);
bool IPythonVarIdxToSDL(plSimpleStateVariable* var, int varIdx, int type, PyObject* pyVar, const char* hintstring);
void ISetItem(const char* key, PyObject* value);
void IDirtySynchState(const char* name, hsBool sendImmediate = false);
void IPutCurrentStateIn(plStateDataRecord* dstState);
void ISetCurrentStateFrom(const plStateDataRecord* srcState);
public:
plPythonSDLModifier(plPythonFileMod* owner);
~plPythonSDLModifier();
CLASSNAME_REGISTER(plPythonSDLModifier);
GETINTERFACE_ANY(plPythonSDLModifier, plSDLModifier);
virtual const char* GetSDLName() const;
virtual void SetItemFromSDLVar(plSimpleStateVariable* var);
static bool HasSDL(const char* pythonFile);
// find the Age global SDL guy... if there is one
static const plPythonSDLModifier* FindAgeSDL();
static plKey FindAgeSDLTarget();
void SetDefault(const char* key, PyObject* value);
void SendToClients(const char* key);
void SetNotify(pyKey& selfkey, const char* key, float tolerance);
PyObject* GetItem(const char* key);
void SetItem(const char* key, PyObject* value);
void SetItemIdx(const char* key, int idx, PyObject* value, hsBool sendImmediate = false);
void SetFlags(const char* name, bool sendImmediate, bool skipOwnershipCheck);
void SetTagString(const char* name, const char* tag);
};
// A wrapper for plPythonSDLModifier that Python uses
class pySDLModifier
{
protected:
plPythonSDLModifier* fRecord;
pySDLModifier(plPythonSDLModifier* sdlMod);
pySDLModifier() {}
public:
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptSDL);
PYTHON_CLASS_NEW_DEFINITION;
static PyObject *New(plPythonSDLModifier *sdlMod);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pySDLModifier object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pySDLModifier); // converts a PyObject to a pySDLModifier (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
static void AddPlasmaMethods(std::vector<PyMethodDef> &methods);
// global function to get the GrandMaster Age SDL object
static PyObject* GetAgeSDL();
static void SetDefault(pySDLModifier& self, std::string key, PyObject* value);
static void SendToClients(pySDLModifier& self, std::string key);
static void SetNotify(pySDLModifier& self, pyKey& selfkey, std::string key, float tolerance);
static PyObject* GetItem(pySDLModifier& self, std::string key);
static void SetItem(pySDLModifier& self, std::string key, PyObject* value);
static void SetItemIdx(pySDLModifier& self, std::string key, int idx, PyObject* value);
static void SetItemIdxImmediate(pySDLModifier& self, std::string key, int idx, PyObject* value);
static void SetFlags(pySDLModifier& self, const char* name, bool sendImmediate, bool skipOwnershipCheck);
static void SetTagString(pySDLModifier& self, const char* name, const char* tag);
};
#endif // plPythonSDLModifier_h_inc

View File

@ -0,0 +1,243 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "plPythonSDLModifier.h"
#include "pyKey.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptSDL, pySDLModifier);
PYTHON_DEFAULT_NEW_DEFINITION(ptSDL, pySDLModifier)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptSDL)
PYTHON_INIT_DEFINITION(ptSDL, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_METHOD_DEFINITION(ptSDL, setIndex, args)
{
char* key;
int idx;
PyObject* value = NULL;
if (!PyArg_ParseTuple(args, "siO", &key, &idx, &value))
{
PyErr_SetString(PyExc_TypeError, "setIndex expects a string, int, and an object");
PYTHON_RETURN_ERROR;
}
pySDLModifier::SetItemIdx(*(self->fThis), key, idx, value);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptSDL, setIndexNow, args)
{
char* key;
int idx;
PyObject* value = NULL;
if (!PyArg_ParseTuple(args, "siO", &key, &idx, &value))
{
PyErr_SetString(PyExc_TypeError, "setIndexNow expects a string, int, and an object");
PYTHON_RETURN_ERROR;
}
pySDLModifier::SetItemIdxImmediate(*(self->fThis), key, idx, value);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptSDL, setDefault, args)
{
char* key;
PyObject* value = NULL;
if (!PyArg_ParseTuple(args, "sO", &key, &value))
{
PyErr_SetString(PyExc_TypeError, "setDefault expects a string and a tuple");
PYTHON_RETURN_ERROR;
}
if (!PyTuple_Check(value))
{
PyErr_SetString(PyExc_TypeError, "setDefault expects a string and a tuple");
PYTHON_RETURN_ERROR;
}
pySDLModifier::SetDefault(*(self->fThis), key, value);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptSDL, sendToClients, args)
{
char* key;
if (!PyArg_ParseTuple(args, "s", &key))
{
PyErr_SetString(PyExc_TypeError, "sendToClients expects a string");
PYTHON_RETURN_ERROR;
}
pySDLModifier::SendToClients(*(self->fThis), key);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptSDL, setNotify, args)
{
PyObject* selfKeyObj;
char* key;
float tolerance;
if (!PyArg_ParseTuple(args, "Osf", &selfKeyObj, &key, &tolerance))
{
PyErr_SetString(PyExc_TypeError, "setNotify expects a ptKey, string, and float");
PYTHON_RETURN_ERROR;
}
if (!pyKey::Check(selfKeyObj))
{
PyErr_SetString(PyExc_TypeError, "setNotify expects a ptKey, string, and float");
PYTHON_RETURN_ERROR;
}
pyKey* selfKey = pyKey::ConvertFrom(selfKeyObj);
pySDLModifier::SetNotify(*(self->fThis), *selfKey, key, tolerance);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptSDL, setFlags, args)
{
char* key;
char sendImmediate, skipOwnershipCheck;
if (!PyArg_ParseTuple(args, "sbb", &key, &sendImmediate, &skipOwnershipCheck))
{
PyErr_SetString(PyExc_TypeError, "setFlags expects a string and two booleans");
PYTHON_RETURN_ERROR;
}
pySDLModifier::SetFlags(*(self->fThis), key, sendImmediate != 0, skipOwnershipCheck != 0);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptSDL, setTagString, args)
{
char* key;
char* tag;
if (!PyArg_ParseTuple(args, "ss", &key, &tag))
{
PyErr_SetString(PyExc_TypeError, "setTagString expects two strings");
PYTHON_RETURN_ERROR;
}
pySDLModifier::SetTagString(*(self->fThis), key, tag);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptSDL)
PYTHON_METHOD(ptSDL, setIndex, "Params: key,idx,value\nSets the value at a specific index in the tuple,\n"
"so you don't have to pass the whole thing in"),
PYTHON_METHOD(ptSDL, setIndexNow, "Params: key,idx,value\nSame as setIndex but sends immediately"),
PYTHON_METHOD(ptSDL, setDefault, "Params: key,value\nLike setitem, but doesn't broadcast over the net.\n"
"Only use for setting defaults that everyone will\n"
"already know (from reading it off disk)"),
PYTHON_METHOD(ptSDL, sendToClients, "Params: key\nSets it so changes to this key are sent to the\n"
"server AND the clients. (Normally it just goes\n"
"to the server.)"),
PYTHON_METHOD(ptSDL, setNotify, "Params: selfkey,key,tolerance\nSets the OnSDLNotify to be called when 'key'\n"
"SDL variable changes by 'tolerance' (if number)"),
PYTHON_METHOD(ptSDL, setFlags, "Params: name,sendImmediate,skipOwnershipCheck\nSets the flags for a variable in this SDL"),
PYTHON_METHOD(ptSDL, setTagString, "Params: name,tag\nSets the tag string for a variable"),
PYTHON_END_METHODS_TABLE;
PyObject* ptSDL_subscript(ptSDL* self, PyObject* key)
{
if (!PyString_Check(key))
{
PyErr_SetString(PyExc_TypeError, "SDL indexes must be strings");
PYTHON_RETURN_ERROR;
}
char *keyStr = PyString_AsString(key);
return pySDLModifier::GetItem(*(self->fThis), keyStr);
}
int ptSDL_ass_subscript(ptSDL* self, PyObject* key, PyObject* value)
{
if (value == NULL) // remove, which isn't supported
{
PyErr_SetString(PyExc_RuntimeError, "Cannot remove sdl records");
return -1; // error return
}
if (!PyString_Check(key))
{
PyErr_SetString(PyExc_TypeError, "SDL indexes must be strings");
return -1; // error return
}
if (!PyTuple_Check(value))
{
PyErr_SetString(PyExc_TypeError, "SDL values must be tuples");
return -1; // error return
}
char* keyStr = PyString_AsString(key);
pySDLModifier::SetItem(*(self->fThis), keyStr, value);
return 0; // success return
}
PYTHON_START_AS_MAPPING_TABLE(ptSDL)
0, /* mp_length */
(binaryfunc)ptSDL_subscript, /* mp_subscript */
(objobjargproc)ptSDL_ass_subscript, /* mp_ass_subscript */
PYTHON_END_AS_MAPPING_TABLE;
#define ptSDL_COMPARE PYTHON_NO_COMPARE
#define ptSDL_AS_NUMBER PYTHON_NO_AS_NUMBER
#define ptSDL_AS_SEQUENCE PYTHON_NO_AS_SEQUENCE
#define ptSDL_AS_MAPPING PYTHON_DEFAULT_AS_MAPPING(ptSDL)
#define ptSDL_STR PYTHON_NO_STR
#define ptSDL_RICH_COMPARE PYTHON_NO_RICH_COMPARE
#define ptSDL_GETSET PYTHON_NO_GETSET
#define ptSDL_BASE PYTHON_NO_BASE
PLASMA_CUSTOM_TYPE(ptSDL, "SDL accessor");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptSDL, pySDLModifier)
PyObject *pySDLModifier::New(plPythonSDLModifier *sdlMod)
{
ptSDL *newObj = (ptSDL*)ptSDL_type.tp_new(&ptSDL_type, NULL, NULL);
newObj->fThis->fRecord = sdlMod;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptSDL, pySDLModifier)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptSDL, pySDLModifier)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void pySDLModifier::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptSDL);
PYTHON_CLASS_IMPORT_END(m);
}
PYTHON_GLOBAL_METHOD_DEFINITION_NOARGS(PtGetAgeSDL, "Returns the global ptSDL for the current Age")
{
return pySDLModifier::GetAgeSDL();
}
void pySDLModifier::AddPlasmaMethods(std::vector<PyMethodDef> &methods)
{
PYTHON_GLOBAL_METHOD_NOARGS(methods, PtGetAgeSDL);
}

View File

@ -0,0 +1,217 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "hsStlUtils.h"
#include "pyAgeInfoStruct.h"
///////////////////////////////////////////////////////////////////////////
pyAgeInfoStruct::pyAgeInfoStruct()
{
}
pyAgeInfoStruct::pyAgeInfoStruct(plAgeInfoStruct * info)
{
fAgeInfo.CopyFrom( info );
}
pyAgeInfoStruct::~pyAgeInfoStruct()
{
}
bool pyAgeInfoStruct::operator==(const pyAgeInfoStruct &other) const
{
return fAgeInfo.IsEqualTo( other.GetAgeInfo() );
}
/////////////////////////////////////////////////////////////////////
void pyAgeInfoStruct::CopyFrom( const pyAgeInfoStruct & other )
{
fAgeInfo.CopyFrom( other.GetAgeInfo() );
}
void pyAgeInfoStruct::CopyFromRef( const pyAgeInfoStructRef & other )
{
fAgeInfo.CopyFrom( other.GetAgeInfo() );
}
const char * pyAgeInfoStruct::GetAgeFilename() const
{
return fAgeInfo.GetAgeFilename();
}
void pyAgeInfoStruct::SetAgeFilename( const char * v )
{
fAgeInfo.SetAgeFilename( v );
}
const char * pyAgeInfoStruct::GetAgeInstanceName() const
{
return fAgeInfo.GetAgeInstanceName();
}
void pyAgeInfoStruct::SetAgeInstanceName( const char * v )
{
fAgeInfo.SetAgeInstanceName( v );
}
const char * pyAgeInfoStruct::GetAgeUserDefinedName() const
{
return fAgeInfo.GetAgeUserDefinedName();
}
void pyAgeInfoStruct::SetAgeUserDefinedName( const char * v )
{
fAgeInfo.SetAgeUserDefinedName( v );
}
const char * pyAgeInfoStruct::GetAgeDescription() const
{
return fAgeInfo.GetAgeDescription();
}
void pyAgeInfoStruct::SetAgeDescription( const char * v )
{
fAgeInfo.SetAgeDescription( v );
}
const char * pyAgeInfoStruct::GetAgeInstanceGuid() const
{
fAgeInstanceGuidStr = fAgeInfo.GetAgeInstanceGuid()->AsStdString();
return fAgeInstanceGuidStr.c_str();
}
void pyAgeInfoStruct::SetAgeInstanceGuid( const char * guid )
{
fAgeInfo.SetAgeInstanceGuid( &plUUID( guid ) );
}
Int32 pyAgeInfoStruct::GetAgeSequenceNumber() const
{
return fAgeInfo.GetAgeSequenceNumber();
}
void pyAgeInfoStruct::SetAgeSequenceNumber( Int32 v )
{
fAgeInfo.SetAgeSequenceNumber( v );
}
Int32 pyAgeInfoStruct::GetAgeLanguage() const
{
return fAgeInfo.GetAgeLanguage();
}
void pyAgeInfoStruct::SetAgeLanguage( Int32 v )
{
fAgeInfo.SetAgeLanguage( v );
}
const char * pyAgeInfoStruct::GetDisplayName() const
{
Int32 seq = GetAgeSequenceNumber();
if ( seq>0 )
xtl::format( fDisplayName, "%s (%d) %s", GetAgeUserDefinedName(), seq, GetAgeInstanceName() );
else
xtl::format( fDisplayName, "%s %s", GetAgeUserDefinedName(), GetAgeInstanceName() );
return fDisplayName.c_str();
}
/////////////////////////////////////////////////////////////////////
plAgeInfoStruct pyAgeInfoStructRef::fDefaultAgeInfo; // created so a default constructor could be made for python. Do NOT use
void pyAgeInfoStructRef::CopyFrom( const pyAgeInfoStruct & other )
{
fAgeInfo.CopyFrom( other.GetAgeInfo() );
}
void pyAgeInfoStructRef::CopyFromRef( const pyAgeInfoStructRef & other )
{
fAgeInfo.CopyFrom( other.GetAgeInfo() );
}
const char * pyAgeInfoStructRef::GetAgeFilename() const
{
return fAgeInfo.GetAgeFilename();
}
void pyAgeInfoStructRef::SetAgeFilename( const char * v )
{
fAgeInfo.SetAgeFilename( v );
}
const char * pyAgeInfoStructRef::GetAgeInstanceName() const
{
return fAgeInfo.GetAgeInstanceName();
}
void pyAgeInfoStructRef::SetAgeInstanceName( const char * v )
{
fAgeInfo.SetAgeInstanceName( v );
}
const char * pyAgeInfoStructRef::GetAgeUserDefinedName() const
{
return fAgeInfo.GetAgeUserDefinedName();
}
void pyAgeInfoStructRef::SetAgeUserDefinedName( const char * v )
{
fAgeInfo.SetAgeUserDefinedName( v );
}
const char * pyAgeInfoStructRef::GetAgeInstanceGuid() const
{
fAgeInstanceGuidStr = fAgeInfo.GetAgeInstanceGuid()->AsStdString();
return fAgeInstanceGuidStr.c_str();
}
void pyAgeInfoStructRef::SetAgeInstanceGuid( const char * guid )
{
fAgeInfo.SetAgeInstanceGuid( &plUUID( guid ) );
}
Int32 pyAgeInfoStructRef::GetAgeSequenceNumber() const
{
return fAgeInfo.GetAgeSequenceNumber();
}
void pyAgeInfoStructRef::SetAgeSequenceNumber( Int32 v )
{
fAgeInfo.SetAgeSequenceNumber( v );
}
const char * pyAgeInfoStructRef::GetDisplayName() const
{
Int32 seq = GetAgeSequenceNumber();
if ( seq>0 )
xtl::format( fDisplayName, "%s (%d) %s", GetAgeUserDefinedName(), seq, GetAgeInstanceName() );
else
xtl::format( fDisplayName, "%s %s", GetAgeUserDefinedName(), GetAgeInstanceName() );
return fDisplayName.c_str();
}

View File

@ -0,0 +1,134 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyAgeInfoStruct_h_inc
#define pyAgeInfoStruct_h_inc
#include "hsTypes.h"
#include "hsStlUtils.h"
#include "plNetCommon/plNetServerSessionInfo.h"
#include <python.h>
#include "pyGlueHelpers.h"
//////////////////////////////////////////////////////////////////////
//
// pyAgeInfoStruct - a wrapper class to provide interface to the plAgeInfoStruct
//
//////////////////////////////////////////////////////////////////////
class pyVaultAgeInfoNode;
class pyAgeInfoStructRef;
class pyAgeInfoStruct
{
private:
plAgeInfoStruct fAgeInfo;
mutable std::string fAgeInstanceGuidStr; // for getting Age Instance GUID
mutable std::string fDisplayName; // used by GetDisplayName()
protected:
pyAgeInfoStruct();
pyAgeInfoStruct(plAgeInfoStruct * info);
public:
~pyAgeInfoStruct();
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAgeInfoStruct);
PYTHON_CLASS_NEW_DEFINITION;
static PyObject *New(plAgeInfoStruct *info);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyAgeInfoStruct object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyAgeInfoStruct); // converts a PyObject to a pyAgeInfoStruct (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
bool operator==(const pyAgeInfoStruct &other) const;
bool operator!=(const pyAgeInfoStruct &other) const { return !(other==*this); }
plAgeInfoStruct * GetAgeInfo() { return &fAgeInfo; }
const plAgeInfoStruct * GetAgeInfo() const { return &fAgeInfo; }
static void PythonModDef();
void CopyFrom( const pyAgeInfoStruct & other );
void CopyFromRef( const pyAgeInfoStructRef & other );
const char * GetAgeFilename() const;
void SetAgeFilename( const char * v );
const char * GetAgeInstanceName() const;
void SetAgeInstanceName( const char * v );
const char * GetAgeUserDefinedName() const;
void SetAgeUserDefinedName( const char * v );
const char * GetAgeDescription() const;
void SetAgeDescription( const char * v );
const char * GetAgeInstanceGuid() const;
void SetAgeInstanceGuid( const char * guid );
Int32 GetAgeSequenceNumber() const;
void SetAgeSequenceNumber( Int32 v );
Int32 GetAgeLanguage() const;
void SetAgeLanguage( Int32 v );
const char * GetDisplayName() const;
};
class pyAgeInfoStructRef
{
private:
static plAgeInfoStruct fDefaultAgeInfo; // created so a default constructor could be made for python. Do NOT use
plAgeInfoStruct & fAgeInfo;
mutable std::string fAgeInstanceGuidStr; // for getting Age Instance GUID
mutable std::string fDisplayName; // used by GetDisplayName()
protected:
pyAgeInfoStructRef(): fAgeInfo( fDefaultAgeInfo ) {} // only here for the python glue... do NOT call directly
pyAgeInfoStructRef(plAgeInfoStruct & info): fAgeInfo( info ){}
public:
~pyAgeInfoStructRef() {}
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAgeInfoStructRef);
static PyObject *New(plAgeInfoStruct &info);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyAgeInfoStructRef object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyAgeInfoStructRef); // converts a PyObject to a pyAgeInfoStructRef (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
plAgeInfoStruct * GetAgeInfo() { return &fAgeInfo; }
const plAgeInfoStruct * GetAgeInfo() const { return &fAgeInfo; }
void CopyFrom( const pyAgeInfoStruct & other );
void CopyFromRef( const pyAgeInfoStructRef & other );
const char * GetAgeFilename() const;
void SetAgeFilename( const char * v );
const char * GetAgeInstanceName() const;
void SetAgeInstanceName( const char * v );
const char * GetAgeUserDefinedName() const;
void SetAgeUserDefinedName( const char * v );
const char * GetAgeInstanceGuid() const;
void SetAgeInstanceGuid( const char * guid );
Int32 GetAgeSequenceNumber() const;
void SetAgeSequenceNumber( Int32 v );
const char * GetDisplayName() const;
};
#endif // pyAgeInfoStruct_h_inc

View File

@ -0,0 +1,436 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyAgeInfoStruct.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptAgeInfoStruct, pyAgeInfoStruct);
PYTHON_DEFAULT_NEW_DEFINITION(ptAgeInfoStruct, pyAgeInfoStruct)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAgeInfoStruct)
PYTHON_INIT_DEFINITION(ptAgeInfoStruct, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_RICH_COMPARE_DEFINITION(ptAgeInfoStruct, obj1, obj2, compareType)
{
if ((obj1 == Py_None) || (obj2 == Py_None) || !pyAgeInfoStruct::Check(obj1) || !pyAgeInfoStruct::Check(obj2))
{
// if they aren't the same type, they don't match, obviously (we also never equal none)
if (compareType == Py_EQ)
PYTHON_RCOMPARE_FALSE;
else if (compareType == Py_NE)
PYTHON_RCOMPARE_TRUE;
else
{
PyErr_SetString(PyExc_NotImplementedError, "invalid comparison for a ptAgeInfoStruct object");
PYTHON_RCOMPARE_ERROR;
}
}
pyAgeInfoStruct *struct1 = pyAgeInfoStruct::ConvertFrom(obj1);
pyAgeInfoStruct *struct2 = pyAgeInfoStruct::ConvertFrom(obj2);
if (compareType == Py_EQ)
{
if ((*struct1) == (*struct2))
PYTHON_RCOMPARE_TRUE;
PYTHON_RCOMPARE_FALSE;
}
else if (compareType == Py_NE)
{
if ((*struct1) != (*struct2))
PYTHON_RCOMPARE_TRUE;
PYTHON_RCOMPARE_FALSE;
}
PyErr_SetString(PyExc_NotImplementedError, "invalid comparison for a ptAgeInfoStruct object");
PYTHON_RCOMPARE_ERROR;
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, copyFrom, args)
{
PyObject* infoStructObj = NULL;
if (!PyArg_ParseTuple(args, "O", &infoStructObj))
{
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeInfoStruct or ptAgeInfoStructRef");
PYTHON_RETURN_ERROR;
}
if (pyAgeInfoStruct::Check(infoStructObj))
{
pyAgeInfoStruct* infoStruct = pyAgeInfoStruct::ConvertFrom(infoStructObj);
self->fThis->CopyFrom(*infoStruct);
PYTHON_RETURN_NONE;
}
else if (pyAgeInfoStructRef::Check(infoStructObj))
{
pyAgeInfoStructRef* infoStruct = pyAgeInfoStructRef::ConvertFrom(infoStructObj);
self->fThis->CopyFromRef(*infoStruct);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeInfoStruct or ptAgeInfoStructRef");
PYTHON_RETURN_ERROR;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeFilename)
{
return PyString_FromString(self->fThis->GetAgeFilename());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeFilename, args)
{
char* filename;
if (!PyArg_ParseTuple(args, "s", &filename))
{
PyErr_SetString(PyExc_TypeError, "setAgeFilename expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeFilename(filename);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeInstanceName)
{
return PyString_FromString(self->fThis->GetAgeInstanceName());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeInstanceName, args)
{
char* instanceName;
if (!PyArg_ParseTuple(args, "s", &instanceName))
{
PyErr_SetString(PyExc_TypeError, "setAgeInstanceName expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeInstanceName(instanceName);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeUserDefinedName)
{
return PyString_FromString(self->fThis->GetAgeUserDefinedName());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeUserDefinedName, args)
{
char* userName;
if (!PyArg_ParseTuple(args, "s", &userName))
{
PyErr_SetString(PyExc_TypeError, "setAgeUserDefinedName expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeUserDefinedName(userName);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeDescription)
{
return PyString_FromString(self->fThis->GetAgeDescription());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeDescription, args)
{
char* desc;
if (!PyArg_ParseTuple(args, "s", &desc))
{
PyErr_SetString(PyExc_TypeError, "setAgeDescription expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeDescription(desc);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeInstanceGuid)
{
return PyString_FromString(self->fThis->GetAgeInstanceGuid());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeInstanceGuid, args)
{
char* guid;
if (!PyArg_ParseTuple(args, "s", &guid))
{
PyErr_SetString(PyExc_TypeError, "setAgeInstanceGuid expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeInstanceGuid(guid);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeSequenceNumber)
{
return PyInt_FromLong(self->fThis->GetAgeSequenceNumber());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeSequenceNumber, args)
{
long sequenceNum;
if (!PyArg_ParseTuple(args, "l", &sequenceNum))
{
PyErr_SetString(PyExc_TypeError, "setAgeSequenceNumber expects a long");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeSequenceNumber(sequenceNum);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getAgeLanguage)
{
return PyInt_FromLong(self->fThis->GetAgeLanguage());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStruct, setAgeLanguage, args)
{
long lang;
if (!PyArg_ParseTuple(args, "l", &lang))
{
PyErr_SetString(PyExc_TypeError, "setAgeLanguage expects a long");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeLanguage(lang);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStruct, getDisplayName)
{
return PyString_FromString(self->fThis->GetDisplayName());
}
PYTHON_START_METHODS_TABLE(ptAgeInfoStruct)
PYTHON_METHOD(ptAgeInfoStruct, copyFrom, "Params: other\nCopies data from one ptAgeInfoStruct or ptAgeInfoStructRef to this one"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeFilename, "Gets the Age's filename"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeFilename, "Params: filename\nSets the filename of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeInstanceName, "Get the instance name of the Age"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeInstanceName, "Params: instanceName\nSets the instance name of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeUserDefinedName, "Gets the user defined part of the Age name"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeUserDefinedName, "Params: udName\nSets the user defined part of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeDescription, "Gets the description part of the Age name"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeDescription, "Params: udName\nSets the description part of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeInstanceGuid, "Get the Age's instance GUID"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeInstanceGuid, "Params: guid\nSets the Age instance's GUID"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeSequenceNumber, "Gets the unique sequence number"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeSequenceNumber, "Params: seqNumber\nSets the unique sequence number"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getAgeLanguage, "Gets the age's language (integer)"),
PYTHON_METHOD(ptAgeInfoStruct, setAgeLanguage, "Params: lang\nSets the age's language (integer)"),
PYTHON_METHOD_NOARGS(ptAgeInfoStruct, getDisplayName, "Returns a string that is the displayable name of the age instance"),
PYTHON_END_METHODS_TABLE;
// type structure definition
#define ptAgeInfoStruct_COMPARE PYTHON_NO_COMPARE
#define ptAgeInfoStruct_AS_NUMBER PYTHON_NO_AS_NUMBER
#define ptAgeInfoStruct_AS_SEQUENCE PYTHON_NO_AS_SEQUENCE
#define ptAgeInfoStruct_AS_MAPPING PYTHON_NO_AS_MAPPING
#define ptAgeInfoStruct_STR PYTHON_NO_STR
#define ptAgeInfoStruct_RICH_COMPARE PYTHON_DEFAULT_RICH_COMPARE(ptAgeInfoStruct)
#define ptAgeInfoStruct_GETSET PYTHON_NO_GETSET
#define ptAgeInfoStruct_BASE PYTHON_NO_BASE
PLASMA_CUSTOM_TYPE(ptAgeInfoStruct, "Class to hold AgeInfo struct data");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptAgeInfoStruct, pyAgeInfoStruct)
PyObject *pyAgeInfoStruct::New(plAgeInfoStruct *info)
{
ptAgeInfoStruct *newObj = (ptAgeInfoStruct*)ptAgeInfoStruct_type.tp_new(&ptAgeInfoStruct_type, NULL, NULL);
newObj->fThis->fAgeInfo.CopyFrom(info);
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptAgeInfoStruct, pyAgeInfoStruct)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAgeInfoStruct, pyAgeInfoStruct)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void pyAgeInfoStruct::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAgeInfoStruct);
PYTHON_CLASS_IMPORT_END(m);
}
// glue functions
PYTHON_CLASS_DEFINITION(ptAgeInfoStructRef, pyAgeInfoStructRef);
PYTHON_DEFAULT_NEW_DEFINITION(ptAgeInfoStructRef, pyAgeInfoStructRef)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAgeInfoStructRef)
PYTHON_NO_INIT_DEFINITION(ptAgeInfoStructRef)
PYTHON_METHOD_DEFINITION(ptAgeInfoStructRef, copyFrom, args)
{
PyObject* infoStructObj = NULL;
if (!PyArg_ParseTuple(args, "O", &infoStructObj))
{
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeInfoStruct or ptAgeInfoStructRef");
PYTHON_RETURN_ERROR;
}
if (pyAgeInfoStruct::Check(infoStructObj))
{
pyAgeInfoStruct* infoStruct = pyAgeInfoStruct::ConvertFrom(infoStructObj);
self->fThis->CopyFrom(*infoStruct);
PYTHON_RETURN_NONE;
}
else if (pyAgeInfoStructRef::Check(infoStructObj))
{
pyAgeInfoStructRef* infoStruct = pyAgeInfoStructRef::ConvertFrom(infoStructObj);
self->fThis->CopyFromRef(*infoStruct);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeInfoStruct or ptAgeInfoStructRef");
PYTHON_RETURN_ERROR;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStructRef, getAgeFilename)
{
return PyString_FromString(self->fThis->GetAgeFilename());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStructRef, setAgeFilename, args)
{
char* filename;
if (!PyArg_ParseTuple(args, "s", &filename))
{
PyErr_SetString(PyExc_TypeError, "setAgeFilename expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeFilename(filename);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStructRef, getAgeInstanceName)
{
return PyString_FromString(self->fThis->GetAgeInstanceName());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStructRef, setAgeInstanceName, args)
{
char* instanceName;
if (!PyArg_ParseTuple(args, "s", &instanceName))
{
PyErr_SetString(PyExc_TypeError, "setAgeInstanceName expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeInstanceName(instanceName);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStructRef, getAgeUserDefinedName)
{
return PyString_FromString(self->fThis->GetAgeUserDefinedName());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStructRef, setAgeUserDefinedName, args)
{
char* userName;
if (!PyArg_ParseTuple(args, "s", &userName))
{
PyErr_SetString(PyExc_TypeError, "setAgeUserDefinedName expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeUserDefinedName(userName);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStructRef, getAgeInstanceGuid)
{
return PyString_FromString(self->fThis->GetAgeInstanceGuid());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStructRef, setAgeInstanceGuid, args)
{
char* guid;
if (!PyArg_ParseTuple(args, "s", &guid))
{
PyErr_SetString(PyExc_TypeError, "setAgeInstanceGuid expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeInstanceGuid(guid);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStructRef, getAgeSequenceNumber)
{
return PyInt_FromLong(self->fThis->GetAgeSequenceNumber());
}
PYTHON_METHOD_DEFINITION(ptAgeInfoStructRef, setAgeSequenceNumber, args)
{
long sequenceNum;
if (!PyArg_ParseTuple(args, "l", &sequenceNum))
{
PyErr_SetString(PyExc_TypeError, "setAgeSequenceNumber expects a long");
PYTHON_RETURN_ERROR;
}
self->fThis->SetAgeSequenceNumber(sequenceNum);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeInfoStructRef, getDisplayName)
{
return PyString_FromString(self->fThis->GetDisplayName());
}
PYTHON_START_METHODS_TABLE(ptAgeInfoStructRef)
PYTHON_METHOD(ptAgeInfoStructRef, copyFrom, "Params: other\nCopies data from one ptAgeInfoStruct or ptAgeInfoStructRef to this one"),
PYTHON_METHOD_NOARGS(ptAgeInfoStructRef, getAgeFilename, "Gets the Age's filename"),
PYTHON_METHOD(ptAgeInfoStructRef, setAgeFilename, "Params: filename\nSets the filename of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStructRef, getAgeInstanceName, "Get the instance name of the Age"),
PYTHON_METHOD(ptAgeInfoStructRef, setAgeInstanceName, "Params: instanceName\nSets the instance name of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStructRef, getAgeUserDefinedName, "Gets the user defined part of the Age name"),
PYTHON_METHOD(ptAgeInfoStructRef, setAgeUserDefinedName, "Params: udName\nSets the user defined part of the Age"),
PYTHON_METHOD_NOARGS(ptAgeInfoStructRef, getAgeInstanceGuid, "Get the Age's instance GUID"),
PYTHON_METHOD(ptAgeInfoStructRef, setAgeInstanceGuid, "Params: guid\nSets the Age instance's GUID"),
PYTHON_METHOD_NOARGS(ptAgeInfoStructRef, getAgeSequenceNumber, "Gets the unique sequence number"),
PYTHON_METHOD(ptAgeInfoStructRef, setAgeSequenceNumber, "Params: seqNumber\nSets the unique sequence number"),
PYTHON_METHOD_NOARGS(ptAgeInfoStructRef, getDisplayName, "Returns a string that is the displayable name of the age instance"),
PYTHON_END_METHODS_TABLE;
// type structure definition
PLASMA_DEFAULT_TYPE(ptAgeInfoStructRef, "Class to hold AgeInfo struct data");
// required functions for PyObject interoperability
PyObject *pyAgeInfoStructRef::New(plAgeInfoStruct &info)
{
ptAgeInfoStructRef *newObj = (ptAgeInfoStructRef*)ptAgeInfoStructRef_type.tp_new(&ptAgeInfoStructRef_type, NULL, NULL);
newObj->fThis->fAgeInfo = info;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptAgeInfoStructRef, pyAgeInfoStructRef)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAgeInfoStructRef, pyAgeInfoStructRef)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void pyAgeInfoStructRef::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAgeInfoStructRef);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,159 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "hsStlUtils.h"
#include "pyAgeLinkStruct.h"
#include "pySpawnPointInfo.h"
///////////////////////////////////////////////////////////////////////////
pyAgeLinkStruct::pyAgeLinkStruct()
{
}
pyAgeLinkStruct::pyAgeLinkStruct( plAgeLinkStruct * link )
{
fAgeLink.CopyFrom( link );
}
pyAgeLinkStruct::~pyAgeLinkStruct()
{
}
bool pyAgeLinkStruct::operator==(const pyAgeLinkStruct &other) const
{
return fAgeLink.IsEqualTo( other.GetAgeLink() );
}
/////////////////////////////////////////////////////////////////////
PyObject * pyAgeLinkStruct::GetAgeInfo()
{
return pyAgeInfoStructRef::New( *fAgeLink.GetAgeInfo() );
}
void pyAgeLinkStruct::SetAgeInfo( pyAgeInfoStruct & info )
{
fAgeLink.GetAgeInfo()->CopyFrom( info.GetAgeInfo() );
}
const char* pyAgeLinkStruct::GetParentAgeFilename()
{
return fAgeLink.GetParentAgeFilename();
}
void pyAgeLinkStruct::SetParentAgeFilename( const char* parentname )
{
fAgeLink.SetParentAgeFilename(parentname);
}
void pyAgeLinkStruct::CopyFrom( const pyAgeLinkStruct & other )
{
fAgeLink.CopyFrom( other.GetAgeLink() );
}
void pyAgeLinkStruct::CopyFromRef( const pyAgeLinkStructRef & other )
{
fAgeLink.CopyFrom( other.GetAgeLink() );
}
void pyAgeLinkStruct::SetLinkingRules( int v )
{
fAgeLink.SetLinkingRules( v );
}
int pyAgeLinkStruct::GetLinkingRules() const
{
return fAgeLink.GetLinkingRules();
}
void pyAgeLinkStruct::SetSpawnPoint( pySpawnPointInfo & v )
{
fAgeLink.SpawnPoint() = v.SpawnPoint();
}
void pyAgeLinkStruct::SetSpawnPointRef( pySpawnPointInfoRef & v )
{
fAgeLink.SpawnPoint() = v.SpawnPoint();
}
PyObject * pyAgeLinkStruct::GetSpawnPoint()
{
return pySpawnPointInfoRef::New( fAgeLink.SpawnPoint() );
}
////////////////////////////////////////////////////////////////////////
plAgeLinkStruct pyAgeLinkStructRef::fDefaultLinkStruct; // created so a default constructor could be made for python. Do NOT use
PyObject * pyAgeLinkStructRef::GetAgeInfo()
{
return pyAgeInfoStructRef::New( *fAgeLink.GetAgeInfo() );
}
void pyAgeLinkStructRef::SetAgeInfo( pyAgeInfoStruct & info )
{
fAgeLink.GetAgeInfo()->CopyFrom( info.GetAgeInfo() );
}
void pyAgeLinkStructRef::CopyFrom( const pyAgeLinkStruct & other )
{
fAgeLink.CopyFrom( other.GetAgeLink() );
}
void pyAgeLinkStructRef::CopyFromRef( const pyAgeLinkStructRef & other )
{
fAgeLink.CopyFrom( other.GetAgeLink() );
}
void pyAgeLinkStructRef::SetLinkingRules( int v )
{
fAgeLink.SetLinkingRules( v );
}
int pyAgeLinkStructRef::GetLinkingRules() const
{
return fAgeLink.GetLinkingRules();
}
void pyAgeLinkStructRef::SetSpawnPoint( pySpawnPointInfo & v )
{
fAgeLink.SpawnPoint() = v.SpawnPoint();
}
void pyAgeLinkStructRef::SetSpawnPointRef( pySpawnPointInfoRef & v )
{
fAgeLink.SpawnPoint() = v.SpawnPoint();
}
PyObject * pyAgeLinkStructRef::GetSpawnPoint()
{
return pySpawnPointInfoRef::New( fAgeLink.SpawnPoint() );
}

View File

@ -0,0 +1,122 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyAgeLinkStruct_h_inc
#define pyAgeLinkStruct_h_inc
#include "hsTypes.h"
#include "hsStlUtils.h"
#include "plNetCommon/plNetServerSessionInfo.h"
#include "pyAgeInfoStruct.h"
#include <python.h>
#include "pyGlueHelpers.h"
//////////////////////////////////////////////////////////////////////
//
// pyAgeLinkStruct - a wrapper class to provide interface to the plAgeLinkStruct
//
//////////////////////////////////////////////////////////////////////
class pyVaultAgeLinkNode;
class pySpawnPointInfo;
class pySpawnPointInfoRef;
class pyAgeLinkStructRef;
class pyAgeLinkStruct
{
private:
plAgeLinkStruct fAgeLink;
protected:
pyAgeLinkStruct();
pyAgeLinkStruct( plAgeLinkStruct * link );
public:
~pyAgeLinkStruct();
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAgeLinkStruct);
PYTHON_CLASS_NEW_DEFINITION;
static PyObject *New(plAgeLinkStruct* link);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyAgeLinkStruct object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyAgeLinkStruct); // converts a PyObject to a pyAgeLinkStruct (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
bool operator==(const pyAgeLinkStruct &other) const;
bool operator!=(const pyAgeLinkStruct &other) const { return !(other==*this); }
plAgeLinkStruct * GetAgeLink() { return &fAgeLink; }
const plAgeLinkStruct * GetAgeLink() const { return &fAgeLink; }
PyObject * GetAgeInfo(); // returns pyAgeInfoStructRef
void SetAgeInfo( pyAgeInfoStruct & info );
const char* GetParentAgeFilename();
void SetParentAgeFilename( const char* parentname );
void CopyFrom( const pyAgeLinkStruct & other );
void CopyFromRef( const pyAgeLinkStructRef & other );
void SetLinkingRules( int v );
int GetLinkingRules() const;
void SetSpawnPoint( pySpawnPointInfo & v );
void SetSpawnPointRef( pySpawnPointInfoRef & v );
PyObject * GetSpawnPoint(); // returns pySpawnPointInfoRef
};
class pyAgeLinkStructRef
{
private:
static plAgeLinkStruct fDefaultLinkStruct; // created so a default constructor could be made for python, do NOT use
plAgeLinkStruct & fAgeLink;
protected:
pyAgeLinkStructRef(): fAgeLink(fDefaultLinkStruct) {} // only used by python glue, do NOT call directly
pyAgeLinkStructRef( plAgeLinkStruct & link ):fAgeLink(link) {}
public:
~pyAgeLinkStructRef(){}
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAgeLinkStructRef);
static PyObject *New(plAgeLinkStruct& link);
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyAgeLinkStructRef object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyAgeLinkStructRef); // converts a PyObject to a pyAgeLinkStructRef (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
plAgeLinkStruct * GetAgeLink() { return &fAgeLink; }
const plAgeLinkStruct * GetAgeLink() const { return &fAgeLink; }
PyObject * GetAgeInfo(); // returns pyAgeInfoStructRef
void SetAgeInfo( pyAgeInfoStruct & info );
void CopyFrom( const pyAgeLinkStruct & other );
void CopyFromRef( const pyAgeLinkStructRef & other );
void SetLinkingRules( int v );
int GetLinkingRules() const;
void SetSpawnPoint( pySpawnPointInfo & v );
void SetSpawnPointRef( pySpawnPointInfoRef & v );
PyObject * GetSpawnPoint(); // returns pySpawnPointInfoRef
};
#endif // pyAgeLinkStruct_h_inc

View File

@ -0,0 +1,366 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyAgeLinkStruct.h"
#include "pySpawnPointInfo.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptAgeLinkStruct, pyAgeLinkStruct);
PYTHON_DEFAULT_NEW_DEFINITION(ptAgeLinkStruct, pyAgeLinkStruct)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAgeLinkStruct)
PYTHON_INIT_DEFINITION(ptAgeLinkStruct, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_RICH_COMPARE_DEFINITION(ptAgeLinkStruct, obj1, obj2, compareType)
{
if ((obj1 == Py_None) || (obj2 == Py_None) || !pyAgeLinkStruct::Check(obj1) || !pyAgeLinkStruct::Check(obj2))
{
// if they aren't the same type, they don't match, obviously (we also never equal none)
if (compareType == Py_EQ)
PYTHON_RCOMPARE_FALSE;
else if (compareType == Py_NE)
PYTHON_RCOMPARE_TRUE;
else
{
PyErr_SetString(PyExc_NotImplementedError, "invalid comparison for a ptAgeLinkStruct object");
PYTHON_RCOMPARE_ERROR;
}
}
pyAgeLinkStruct *struct1 = pyAgeLinkStruct::ConvertFrom(obj1);
pyAgeLinkStruct *struct2 = pyAgeLinkStruct::ConvertFrom(obj2);
if (compareType == Py_EQ)
{
if ((*struct1) == (*struct2))
PYTHON_RCOMPARE_TRUE;
PYTHON_RCOMPARE_FALSE;
}
else if (compareType == Py_NE)
{
if ((*struct1) != (*struct2))
PYTHON_RCOMPARE_TRUE;
PYTHON_RCOMPARE_FALSE;
}
PyErr_SetString(PyExc_NotImplementedError, "invalid comparison for a ptAgeLinkStruct object");
PYTHON_RCOMPARE_ERROR;
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStruct, copyFrom, args)
{
PyObject* linkStructObj = NULL;
if (!PyArg_ParseTuple(args, "O", &linkStructObj))
{
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeLinkStruct or ptAgeLinkStructRef");
PYTHON_RETURN_ERROR;
}
if (pyAgeLinkStruct::Check(linkStructObj))
{
pyAgeLinkStruct* linkStruct = pyAgeLinkStruct::ConvertFrom(linkStructObj);
self->fThis->CopyFrom(*linkStruct);
PYTHON_RETURN_NONE;
}
else if (pyAgeLinkStructRef::Check(linkStructObj))
{
pyAgeLinkStructRef* linkStruct = pyAgeLinkStructRef::ConvertFrom(linkStructObj);
self->fThis->CopyFromRef(*linkStruct);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeLinkStruct or ptAgeLinkStructRef");
PYTHON_RETURN_ERROR;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStruct, getAgeInfo)
{
return self->fThis->GetAgeInfo();
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStruct, setAgeInfo, args)
{
PyObject* ageInfoObj = NULL;
if (!PyArg_ParseTuple(args, "O", &ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "setAgeInfo expects a ptAgeInfoStruct");
PYTHON_RETURN_ERROR;
}
if (!pyAgeInfoStruct::Check(ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "setAgeInfo expects a ptAgeInfoStruct");
PYTHON_RETURN_ERROR;
}
pyAgeInfoStruct* ageInfo = pyAgeInfoStruct::ConvertFrom(ageInfoObj);
self->fThis->SetAgeInfo(*ageInfo);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStruct, getParentAgeFilename)
{
return PyString_FromString(self->fThis->GetParentAgeFilename());
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStruct, setParentAgeFilename, args)
{
char* filename;
if (!PyArg_ParseTuple(args, "s", &filename))
{
PyErr_SetString(PyExc_TypeError, "setParentAgeFilename expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->SetParentAgeFilename(filename);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStruct, getLinkingRules)
{
return PyInt_FromLong(self->fThis->GetLinkingRules());
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStruct, setLinkingRules, args)
{
int rules;
if (!PyArg_ParseTuple(args, "i", &rules))
{
PyErr_SetString(PyExc_TypeError, "setLinkingRules expects an int");
PYTHON_RETURN_ERROR;
}
self->fThis->SetLinkingRules(rules);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStruct, getSpawnPoint)
{
return self->fThis->GetSpawnPoint();
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStruct, setSpawnPoint, args)
{
PyObject* spawnPtInfoObj = NULL;
if (!PyArg_ParseTuple(args, "O", &spawnPtInfoObj))
{
PyErr_SetString(PyExc_TypeError, "setSpawnPoint expects a ptSpawnPointInfo or a ptSpawnPointInfoRef");
PYTHON_RETURN_ERROR;
}
if (pySpawnPointInfo::Check(spawnPtInfoObj))
{
pySpawnPointInfo* spawnPt = pySpawnPointInfo::ConvertFrom(spawnPtInfoObj);
self->fThis->SetSpawnPoint(*spawnPt);
PYTHON_RETURN_NONE;
}
else if (pySpawnPointInfoRef::Check(spawnPtInfoObj))
{
pySpawnPointInfoRef* spawnPt = pySpawnPointInfoRef::ConvertFrom(spawnPtInfoObj);
self->fThis->SetSpawnPointRef(*spawnPt);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "setSpawnPoint expects a ptSpawnPointInfo or a ptSpawnPointInfoRef");
PYTHON_RETURN_ERROR;
}
PYTHON_START_METHODS_TABLE(ptAgeLinkStruct)
PYTHON_METHOD(ptAgeLinkStruct, copyFrom, "Params: other\nCopies data from one ptAgeLinkStruct or ptAgeLinkStructRef to this one"),
PYTHON_METHOD_NOARGS(ptAgeLinkStruct, getAgeInfo, "Returns a ptAgeInfoStructRef of the AgeInfo for this link"),
PYTHON_METHOD(ptAgeLinkStruct, setAgeInfo, "Params: ageInfo\nSets the AgeInfoStruct from the data in ageInfo (a ptAgeInfoStruct)"),
PYTHON_METHOD_NOARGS(ptAgeLinkStruct, getParentAgeFilename, "Returns a string of the parent age filename"),
PYTHON_METHOD(ptAgeLinkStruct, setParentAgeFilename, "Params: filename\nSets the parent age filename for child age links"),
PYTHON_METHOD_NOARGS(ptAgeLinkStruct, getLinkingRules, "Returns the linking rules of this link"),
PYTHON_METHOD(ptAgeLinkStruct, setLinkingRules, "Params: rule\nSets the linking rules for this link"),
PYTHON_METHOD_NOARGS(ptAgeLinkStruct, getSpawnPoint, "Gets the spawn point ptSpawnPointInfoRef of this link"),
PYTHON_METHOD(ptAgeLinkStruct, setSpawnPoint, "Params: spawnPtInfo\nSets the spawn point of this link (a ptSpawnPointInfo or ptSpawnPointInfoRef)"),
PYTHON_END_METHODS_TABLE;
// type structure definition
#define ptAgeLinkStruct_COMPARE PYTHON_NO_COMPARE
#define ptAgeLinkStruct_AS_NUMBER PYTHON_NO_AS_NUMBER
#define ptAgeLinkStruct_AS_SEQUENCE PYTHON_NO_AS_SEQUENCE
#define ptAgeLinkStruct_AS_MAPPING PYTHON_NO_AS_MAPPING
#define ptAgeLinkStruct_STR PYTHON_NO_STR
#define ptAgeLinkStruct_RICH_COMPARE PYTHON_DEFAULT_RICH_COMPARE(ptAgeLinkStruct)
#define ptAgeLinkStruct_GETSET PYTHON_NO_GETSET
#define ptAgeLinkStruct_BASE PYTHON_NO_BASE
PLASMA_CUSTOM_TYPE(ptAgeLinkStruct, "Class to hold the data of the AgeLink structure");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptAgeLinkStruct, pyAgeLinkStruct)
PyObject *pyAgeLinkStruct::New(plAgeLinkStruct *link)
{
ptAgeLinkStruct *newObj = (ptAgeLinkStruct*)ptAgeLinkStruct_type.tp_new(&ptAgeLinkStruct_type, NULL, NULL);
newObj->fThis->fAgeLink.CopyFrom(link);
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptAgeLinkStruct, pyAgeLinkStruct)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAgeLinkStruct, pyAgeLinkStruct)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void pyAgeLinkStruct::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAgeLinkStruct);
PYTHON_CLASS_IMPORT_END(m);
}
// glue functions
PYTHON_CLASS_DEFINITION(ptAgeLinkStructRef, pyAgeLinkStructRef);
PYTHON_DEFAULT_NEW_DEFINITION(ptAgeLinkStructRef, pyAgeLinkStructRef)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAgeLinkStructRef)
PYTHON_NO_INIT_DEFINITION(ptAgeLinkStructRef)
PYTHON_METHOD_DEFINITION(ptAgeLinkStructRef, copyFrom, args)
{
PyObject* linkStructObj = NULL;
if (!PyArg_ParseTuple(args, "O", &linkStructObj))
{
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeLinkStruct or ptAgeLinkStructRef");
PYTHON_RETURN_ERROR;
}
if (pyAgeLinkStruct::Check(linkStructObj))
{
pyAgeLinkStruct* linkStruct = pyAgeLinkStruct::ConvertFrom(linkStructObj);
self->fThis->CopyFrom(*linkStruct);
PYTHON_RETURN_NONE;
}
else if (pyAgeLinkStructRef::Check(linkStructObj))
{
pyAgeLinkStructRef* linkStruct = pyAgeLinkStructRef::ConvertFrom(linkStructObj);
self->fThis->CopyFromRef(*linkStruct);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "copyFrom expects a ptAgeLinkStruct or ptAgeLinkStructRef");
PYTHON_RETURN_ERROR;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStructRef, getAgeInfo)
{
return self->fThis->GetAgeInfo();
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStructRef, setAgeInfo, args)
{
PyObject* ageInfoObj = NULL;
if (!PyArg_ParseTuple(args, "O", &ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "setAgeInfo expects a ptAgeInfoStruct");
PYTHON_RETURN_ERROR;
}
if (!pyAgeInfoStruct::Check(ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "setAgeInfo expects a ptAgeInfoStruct");
PYTHON_RETURN_ERROR;
}
pyAgeInfoStruct* ageInfo = pyAgeInfoStruct::ConvertFrom(ageInfoObj);
self->fThis->SetAgeInfo(*ageInfo);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStructRef, getLinkingRules)
{
return PyInt_FromLong(self->fThis->GetLinkingRules());
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStructRef, setLinkingRules, args)
{
int rules;
if (!PyArg_ParseTuple(args, "i", &rules))
{
PyErr_SetString(PyExc_TypeError, "setLinkingRules expects an int");
PYTHON_RETURN_ERROR;
}
self->fThis->SetLinkingRules(rules);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeLinkStructRef, getSpawnPoint)
{
return self->fThis->GetSpawnPoint();
}
PYTHON_METHOD_DEFINITION(ptAgeLinkStructRef, setSpawnPoint, args)
{
PyObject* spawnPtInfoObj = NULL;
if (!PyArg_ParseTuple(args, "O", &spawnPtInfoObj))
{
PyErr_SetString(PyExc_TypeError, "setSpawnPoint expects a ptSpawnPointInfo or a ptSpawnPointInfoRef");
PYTHON_RETURN_ERROR;
}
if (pySpawnPointInfo::Check(spawnPtInfoObj))
{
pySpawnPointInfo* spawnPt = pySpawnPointInfo::ConvertFrom(spawnPtInfoObj);
self->fThis->SetSpawnPoint(*spawnPt);
PYTHON_RETURN_NONE;
}
else if (pySpawnPointInfoRef::Check(spawnPtInfoObj))
{
pySpawnPointInfoRef* spawnPt = pySpawnPointInfoRef::ConvertFrom(spawnPtInfoObj);
self->fThis->SetSpawnPointRef(*spawnPt);
PYTHON_RETURN_NONE;
}
PyErr_SetString(PyExc_TypeError, "setSpawnPoint expects a ptSpawnPointInfo or a ptSpawnPointInfoRef");
PYTHON_RETURN_ERROR;
}
PYTHON_START_METHODS_TABLE(ptAgeLinkStructRef)
PYTHON_METHOD(ptAgeLinkStructRef, copyFrom, "Params: other\nCopies data from one ptAgeLinkStruct or ptAgeLinkStructRef to this one"),
PYTHON_METHOD_NOARGS(ptAgeLinkStructRef, getAgeInfo, "Returns a ptAgeInfoStructRef of the AgeInfo for this link"),
PYTHON_METHOD(ptAgeLinkStructRef, setAgeInfo, "Params: ageInfo\nSets the AgeInfoStruct from the data in ageInfo (a ptAgeInfoStruct)"),
PYTHON_METHOD_NOARGS(ptAgeLinkStructRef, getLinkingRules, "Returns the linking rules of this link"),
PYTHON_METHOD(ptAgeLinkStructRef, setLinkingRules, "Params: rule\nSets the linking rules for this link"),
PYTHON_METHOD_NOARGS(ptAgeLinkStructRef, getSpawnPoint, "Gets the spawn point ptSpawnPointInfoRef of this link"),
PYTHON_METHOD(ptAgeLinkStructRef, setSpawnPoint, "Params: spawnPtInfo\nSets the spawn point of this link (a ptSpawnPointInfo or ptSpawnPointInfoRef)"),
PYTHON_END_METHODS_TABLE;
// type structure definition
PLASMA_DEFAULT_TYPE(ptAgeLinkStructRef, "Class to hold the data of the AgeLink structure");
// required functions for PyObject interoperability
PyObject *pyAgeLinkStructRef::New(plAgeLinkStruct &link)
{
ptAgeLinkStructRef *newObj = (ptAgeLinkStructRef*)ptAgeLinkStructRef_type.tp_new(&ptAgeLinkStructRef_type, NULL, NULL);
newObj->fThis->fAgeLink = link;
return (PyObject*)newObj;
}
PYTHON_CLASS_CHECK_IMPL(ptAgeLinkStructRef, pyAgeLinkStructRef)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAgeLinkStructRef, pyAgeLinkStructRef)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void pyAgeLinkStructRef::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAgeLinkStructRef);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,329 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
//////////////////////////////////////////////////////////////////////
//
// pyAgeVault - a wrapper class to provide interface to the plVaultAgeNode
//
//////////////////////////////////////////////////////////////////////
#include "pyAgeVault.h"
#include "pyVault.h"
#include "pyVaultNodeRef.h"
#include "pyVaultFolderNode.h"
#include "pyVaultPlayerInfoListNode.h"
#include "pyVaultPlayerInfoNode.h"
#include "pyVaultAgeInfoNode.h"
#include "pyVaultAgeLinkNode.h"
#include "pyVaultChronicleNode.h"
#include "pyVaultTextNoteNode.h"
#include "pyNetLinkingMgr.h"
#include "pyAgeInfoStruct.h"
#include "pySDL.h"
#include "plVault/plVault.h"
#include "plNetClient/plNetClientMgr.h"
#include "plNetClient/plNetLinkingMgr.h"
#include "plNetTransport/plNetTransport.h"
#include "plNetTransport/plNetTransportMember.h"
#include "plSDL/plSDL.h"
#include "pnNetCommon/plNetApp.h"
pyAgeVault::pyAgeVault() {
}
pyAgeVault::~pyAgeVault() {
}
//////////////////////////////////////////////////
PyObject* pyAgeVault::GetAgeInfo()
{
RelVaultNode * rvn = VaultGetAgeInfoNodeIncRef();
if (rvn) {
PyObject * result = pyVaultAgeInfoNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetAgeDevicesFolder( void )
{
RelVaultNode * rvn = VaultGetAgeDevicesFolderIncRef();
if (rvn) {
PyObject * result = pyVaultFolderNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetSubAgesFolder( void )
{
RelVaultNode * rvn = VaultGetAgeSubAgesFolderIncRef();
if (rvn) {
PyObject * result = pyVaultFolderNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetChronicleFolder( void )
{
RelVaultNode * rvn = VaultGetAgeChronicleFolderIncRef();
if (rvn) {
PyObject * result = pyVaultFolderNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetBookshelfFolder ( void )
{
RelVaultNode * rvn = VaultAgeGetBookshelfFolderIncRef();
if (rvn) {
PyObject * result = pyVaultFolderNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetPeopleIKnowAboutFolder( void )
{
RelVaultNode * rvn = VaultGetAgePeopleIKnowAboutFolderIncRef();
if (rvn) {
PyObject * result = pyVaultFolderNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetPublicAgesFolder(void)
{
RelVaultNode * rvn = VaultGetAgePublicAgesFolderIncRef();
if (rvn) {
PyObject * result = pyVaultFolderNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
PyObject* pyAgeVault::GetSubAgeLink( const pyAgeInfoStruct & info )
{
RelVaultNode * rvn = VaultFindAgeSubAgeLinkIncRef(info.GetAgeInfo());
if (rvn) {
PyObject * result = pyVaultAgeLinkNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
const char* pyAgeVault::GetAgeGuid( void )
{
RelVaultNode * rvn = VaultGetAgeInfoNodeIncRef();
if (rvn) {
VaultAgeInfoNode ageInfo(rvn);
GuidToString(ageInfo.ageInstUuid, fAgeGuid, arrsize(fAgeGuid));
rvn->DecRef();
}
else {
fAgeGuid[0] = 0;
}
return fAgeGuid;
}
///////////////
// Chronicle
PyObject* pyAgeVault::FindChronicleEntry( const char * entryName )
{
wchar wEntryName[kMaxVaultNodeStringLength];
StrToUnicode(wEntryName, entryName, arrsize(wEntryName));
if (RelVaultNode * rvn = VaultFindAgeChronicleEntryIncRef(wEntryName)) {
PyObject * result = pyVaultChronicleNode::New(rvn);
rvn->DecRef();
return result;
}
// just return a None object
PYTHON_RETURN_NONE;
}
void pyAgeVault::AddChronicleEntry( const char * name, UInt32 type, const char * value )
{
wchar * wEntryName = StrDupToUnicode(name);
wchar * wEntryValue = StrDupToUnicode(value);
VaultAddAgeChronicleEntry(wEntryName, type, wEntryValue);
FREE(wEntryName);
FREE(wEntryValue);
}
// AGE DEVICES. AKA IMAGERS, WHATEVER.
// Add a new device.
void pyAgeVault::AddDevice( const char * deviceName, PyObject * cbObject, UInt32 cbContext )
{
pyVaultNode::pyVaultNodeOperationCallback * cb = NEWZERO(pyVaultNode::pyVaultNodeOperationCallback)( cbObject );
cb->VaultOperationStarted( cbContext );
wchar wStr[MAX_PATH];
StrToUnicode(wStr, deviceName, arrsize(wStr));
if (RelVaultNode * rvn = VaultAgeAddDeviceAndWaitIncRef(wStr)) {
cb->SetNode(rvn);
rvn->DecRef();
}
cb->VaultOperationComplete( cbContext, cb->GetNode() ? hsOK : hsFail); // cbHolder deletes itself here.
}
// Remove a device.
void pyAgeVault::RemoveDevice( const char * deviceName )
{
wchar wStr[MAX_PATH];
StrToUnicode(wStr, deviceName, arrsize(wStr));
VaultAgeRemoveDevice(wStr);
}
// True if device exists in age.
bool pyAgeVault::HasDevice( const char * deviceName )
{
wchar wStr[MAX_PATH];
StrToUnicode(wStr, deviceName, arrsize(wStr));
return VaultAgeHasDevice(wStr);
}
PyObject * pyAgeVault::GetDevice( const char * deviceName )
{
wchar wStr[MAX_PATH];
StrToUnicode(wStr, deviceName, arrsize(wStr));
if (RelVaultNode * rvn = VaultAgeGetDeviceIncRef(wStr)) {
PyObject * result = pyVaultTextNoteNode::New(rvn);
rvn->DecRef();
return result;
}
PYTHON_RETURN_NONE;
}
// Sets the inbox associated with a device.
void pyAgeVault::SetDeviceInbox( const char * deviceName, const char * inboxName, PyObject * cbObject, UInt32 cbContext )
{
pyVaultNode::pyVaultNodeOperationCallback * cb = NEWZERO(pyVaultNode::pyVaultNodeOperationCallback)( cbObject );
cb->VaultOperationStarted( cbContext );
wchar wDev[MAX_PATH];
StrToUnicode(wDev, deviceName, arrsize(wDev));
wchar wInb[MAX_PATH];
StrToUnicode(wInb, inboxName, arrsize(wInb));
if (RelVaultNode * rvn = VaultAgeSetDeviceInboxAndWaitIncRef(wDev, wInb)) {
cb->SetNode(rvn);
rvn->DecRef();
}
cb->VaultOperationComplete( cbContext, cb->GetNode() ? hsOK : hsFail ); // cbHolder deletes itself here.
}
PyObject * pyAgeVault::GetDeviceInbox( const char * deviceName )
{
wchar wStr[MAX_PATH];
StrToUnicode(wStr, deviceName, arrsize(wStr));
if (RelVaultNode * rvn = VaultAgeGetDeviceInboxIncRef(wStr)) {
PyObject * result = pyVaultTextNoteNode::New(rvn);
rvn->DecRef();
return result;
}
PYTHON_RETURN_NONE;
}
PyObject * pyAgeVault::GetAgeSDL() const
{
plStateDataRecord * rec = NEWZERO(plStateDataRecord);
if (!VaultAgeGetAgeSDL(rec)) {
DEL(rec);
PYTHON_RETURN_NONE;
}
else {
return pySDLStateDataRecord::New( rec );
}
}
void pyAgeVault::UpdateAgeSDL( pySDLStateDataRecord & pyrec )
{
plStateDataRecord * rec = pyrec.GetRec();
if ( !rec )
return;
VaultAgeUpdateAgeSDL(rec);
}
PyObject* pyAgeVault::FindNode( pyVaultNode* templateNode ) const
{
if (RelVaultNode * rvn = VaultGetAgeNodeIncRef()) {
RelVaultNode * find = rvn->GetChildNodeIncRef(templateNode->fNode, 1);
rvn->DecRef();
if (find) {
PyObject * result = pyVaultNode::New(find);
find->DecRef();
return result;
}
}
PYTHON_RETURN_NONE;
}

View File

@ -0,0 +1,110 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef _pyAgeVault_h_
#define _pyAgeVault_h_
#ifdef BUILDING_PYPLASMA
# error "pyAgeVault is not compatible with pyPlasma.pyd. Use BUILDING_PYPLASMA macro to ifdef out unwanted headers."
#endif
//////////////////////////////////////////////////////////////////////
//
// pyAgeVault - a wrapper class to provide interface to the plVaultAgeNode
//
//////////////////////////////////////////////////////////////////////
#include "hsTypes.h"
#include "hsStlUtils.h"
#include <python.h>
#include "pyGlueHelpers.h"
class pyVaultNode;
class pyVaultFolderNode;
class pyVaultPlayerInfoListNode;
class pyVaultAgeLinkNode;
class pyVaultAgeInfoNode;
class pyAgeInfoStruct;
class pyVaultChronicleNode;
class pySDLStateDataRecord;
class pyVaultTextNoteNode;
class pyAgeVault
{
private:
mutable char fAgeGuid[MAX_PATH]; // for getting Age GUID
protected:
pyAgeVault();
public:
~pyAgeVault();
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_FRIEND(ptAgeVault);
PYTHON_CLASS_NEW_DEFINITION;
PYTHON_CLASS_CHECK_DEFINITION; // returns true if the PyObject is a pyAgeVault object
PYTHON_CLASS_CONVERT_FROM_DEFINITION(pyAgeVault); // converts a PyObject to a pyAgeVault (throws error if not correct type)
static void AddPlasmaClasses(PyObject *m);
const char* GetAgeGuid( void );
PyObject * GetAgeSDL() const; // returns pySDLStateDataRecord
void UpdateAgeSDL( pySDLStateDataRecord & pyrec );
PyObject* GetAgeInfo(); // returns pyVaultAgeInfoNode
PyObject* GetAgeDevicesFolder( void ); // returns pyVaultFolderNode
PyObject* GetSubAgesFolder( void ); // returns pyVaultFolderNode
PyObject* GetChronicleFolder( void ); // returns pyVaultFolderNode
// Age chronicle (not the player chronicle!)
PyObject* FindChronicleEntry( const char * entryName ); // returns pyVaultChronicleNode
void AddChronicleEntry( const char * name, UInt32 type, const char * value );
// Players who have published to devices in this age
PyObject* GetPeopleIKnowAboutFolder( void ); // returns pyVaultPlayerInfoListNode
// PERSONAL AGE SPECIFIC
PyObject* GetBookshelfFolder ( void ); // returns pyVaultFolderNode
// NEXUS SPECIFIC
PyObject* GetPublicAgesFolder( void ); // returns pyVaultFolderNode
PyObject* GetSubAgeLink( const pyAgeInfoStruct & info ); // returns pyVaultAgeLinkNode
// AGE DEVICES. AKA IMAGERS, WHATEVER.
// Add a new device.
void AddDevice( const char * deviceName, PyObject * cb=nil, UInt32 cbContext=0 );
// Remove a device.
void RemoveDevice( const char * deviceName );
// True if device exists in age.
bool HasDevice( const char * deviceName );
// Get the device node by name.
PyObject * GetDevice( const char * deviceName ); // returns pyVaultTextNoteNode
// Sets the inbox associated with a device.
void SetDeviceInbox( const char * deviceName, const char * inboxName, PyObject * cb=nil, UInt32 cbContext=0 );
// Get the inbox associated with a device.
PyObject * GetDeviceInbox( const char * deviceName ); // returns pyVaultFolderNode
// find matching node
PyObject* FindNode( pyVaultNode* templateNode ) const; // returns pyVaultNode
};
#endif // _pyAgeVault_h_

View File

@ -0,0 +1,268 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyAgeVault.h"
#include "pyAgeInfoStruct.h"
#include "pySDL.h"
#include <python.h>
// glue functions
PYTHON_CLASS_DEFINITION(ptAgeVault, pyAgeVault);
PYTHON_DEFAULT_NEW_DEFINITION(ptAgeVault, pyAgeVault)
PYTHON_DEFAULT_DEALLOC_DEFINITION(ptAgeVault)
PYTHON_INIT_DEFINITION(ptAgeVault, args, keywords)
{
PYTHON_RETURN_INIT_OK;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getAgeInfo)
{
return self->fThis->GetAgeInfo();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getAgeDevicesFolder)
{
return self->fThis->GetAgeDevicesFolder();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getSubAgesFolder)
{
return self->fThis->GetSubAgesFolder();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getChronicleFolder)
{
return self->fThis->GetChronicleFolder();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getAgesIOwnFolder)
{
return self->fThis->GetBookshelfFolder();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getBookshelfFolder)
{
return self->fThis->GetBookshelfFolder();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getPeopleIKnowAboutFolder)
{
return self->fThis->GetPeopleIKnowAboutFolder();
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getPublicAgesFolder)
{
return self->fThis->GetPublicAgesFolder();
}
PYTHON_METHOD_DEFINITION(ptAgeVault, getSubAgeLink, args)
{
PyObject* ageInfoObj = NULL;
if (!PyArg_ParseTuple(args, "O", &ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "getSubAgeLink expects a ptAgeInfoStruct");
PYTHON_RETURN_ERROR;
}
if (!pyAgeInfoStruct::Check(ageInfoObj))
{
PyErr_SetString(PyExc_TypeError, "getSubAgeLink expects a ptAgeInfoStruct");
PYTHON_RETURN_ERROR;
}
pyAgeInfoStruct* ageInfo = pyAgeInfoStruct::ConvertFrom(ageInfoObj);
return self->fThis->GetSubAgeLink(*ageInfo);
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getAgeGuid)
{
return PyString_FromString(self->fThis->GetAgeGuid());
}
PYTHON_METHOD_DEFINITION(ptAgeVault, addDevice, args)
{
char* name;
PyObject* cbObj = NULL;
unsigned long context = 0;
if (!PyArg_ParseTuple(args, "s|Ol", &name, &cbObj, &context))
{
PyErr_SetString(PyExc_TypeError, "addDevice expects a string, an optional object, and an optional unsigned long");
PYTHON_RETURN_ERROR;
}
self->fThis->AddDevice(name, cbObj, context);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAgeVault, removeDevice, args)
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "removeDevice expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->RemoveDevice(name);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAgeVault, hasDevice, args)
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "hasDevice expects a string");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_BOOL(self->fThis->HasDevice(name));
}
PYTHON_METHOD_DEFINITION(ptAgeVault, getDevice, args)
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "getDevice expects a string");
PYTHON_RETURN_ERROR;
}
return self->fThis->GetDevice(name);
}
PYTHON_METHOD_DEFINITION(ptAgeVault, setDeviceInbox, args)
{
char* name;
char* inboxName;
PyObject* cb = NULL;
unsigned long context = 0;
if (!PyArg_ParseTuple(args, "ss|Ol", &name, &inboxName, &cb, &context))
{
PyErr_SetString(PyExc_TypeError, "setDeviceInbox expects two strings, an optional object, and an optional unsigned long");
PYTHON_RETURN_ERROR;
}
self->fThis->SetDeviceInbox(name, inboxName, cb, context);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptAgeVault, getDeviceInbox, args)
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "getDeviceInbox expects a string");
PYTHON_RETURN_ERROR;
}
return self->fThis->GetDeviceInbox(name);
}
PYTHON_METHOD_DEFINITION(ptAgeVault, findChronicleEntry, args)
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "findChronicleEntry expects a string");
PYTHON_RETURN_ERROR;
}
return self->fThis->FindChronicleEntry(name);
}
PYTHON_METHOD_DEFINITION(ptAgeVault, addChronicleEntry, args)
{
char* name;
unsigned long entryType;
char* val;
if (!PyArg_ParseTuple(args, "sls", &name, &entryType, &val))
{
PyErr_SetString(PyExc_TypeError, "addChronicleEntry expects a string, an unsigned long, and a string");
PYTHON_RETURN_ERROR;
}
self->fThis->AddChronicleEntry(name, entryType, val);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION_NOARGS(ptAgeVault, getAgeSDL)
{
return self->fThis->GetAgeSDL();
}
PYTHON_METHOD_DEFINITION(ptAgeVault, updateAgeSDL, args)
{
PyObject* recordObj = NULL;
if (!PyArg_ParseTuple(args, "O", &recordObj))
{
PyErr_SetString(PyExc_TypeError, "updateAgeSDL expects a ptSDLStateDataRecord");
PYTHON_RETURN_NONE;
}
if (!pySDLStateDataRecord::Check(recordObj))
{
PyErr_SetString(PyExc_TypeError, "updateAgeSDL expects a ptSDLStateDataRecord");
PYTHON_RETURN_NONE;
}
pySDLStateDataRecord* record = pySDLStateDataRecord::ConvertFrom(recordObj);
self->fThis->UpdateAgeSDL(*record);
PYTHON_RETURN_NONE;
}
PYTHON_START_METHODS_TABLE(ptAgeVault)
PYTHON_METHOD_NOARGS(ptAgeVault, getAgeInfo, "Returns a ptVaultAgeInfoNode of the this Age"),
PYTHON_METHOD_NOARGS(ptAgeVault, getAgeDevicesFolder, "Returns a ptVaultFolderNode of the inboxes for the devices in this Age."),
PYTHON_METHOD_NOARGS(ptAgeVault, getSubAgesFolder, "Returns a ptVaultFolderNode of sub Age's folder."),
PYTHON_METHOD_NOARGS(ptAgeVault, getChronicleFolder, "Returns a ptVaultFolderNode"),
PYTHON_METHOD_NOARGS(ptAgeVault, getAgesIOwnFolder, "(depreciated, use getBookshelfFolder) Returns a ptVaultFolderNode that contain the Ages I own"),
PYTHON_METHOD_NOARGS(ptAgeVault, getBookshelfFolder, "Personal age only: Returns a ptVaultFolderNode that contains the owning player's AgesIOwn age list"),
PYTHON_METHOD_NOARGS(ptAgeVault, getPeopleIKnowAboutFolder, "Returns a ptVaultPlayerInfoListNode of the players the Age knows about(?)."),
PYTHON_METHOD_NOARGS(ptAgeVault, getPublicAgesFolder, "Returns a ptVaultFolderNode that contains all the public Ages"),
PYTHON_METHOD(ptAgeVault, getSubAgeLink, "Params: ageInfo\nReturns a ptVaultAgeLinkNode to 'ageInfo' (a ptAgeInfoStruct) for this Age."),
PYTHON_METHOD_NOARGS(ptAgeVault, getAgeGuid, "Returns the current Age's guid as a string."),
PYTHON_METHOD(ptAgeVault, addDevice, "Params: deviceName,cb=None,cbContext=0\nAdds a device to the age"),
PYTHON_METHOD(ptAgeVault, removeDevice, "Params: deviceName\nRemoves a device from the age"),
PYTHON_METHOD(ptAgeVault, hasDevice, "Params: deviceName\nDoes a device with this name exist?"),
PYTHON_METHOD(ptAgeVault, getDevice, "Params: deviceName\nReturns the specified device (ptVaultTextNoteNode)"),
PYTHON_METHOD(ptAgeVault, setDeviceInbox, "Params: deviceName,inboxName,cb=None,cbContext=0\nSet's the device's inbox"),
PYTHON_METHOD(ptAgeVault, getDeviceInbox, "Params: deviceName\nReturns a ptVaultFolderNode of the inbox for the named device in this age."),
PYTHON_METHOD(ptAgeVault, findChronicleEntry, "Params: entryName\nReturns the named ptVaultChronicleNode"),
PYTHON_METHOD(ptAgeVault, addChronicleEntry, "Params: name,type,value\nAdds a chronicle entry with the specified type and value"),
PYTHON_METHOD_NOARGS(ptAgeVault, getAgeSDL, "Returns the age's SDL (ptSDLStateDataRecord)"),
PYTHON_METHOD(ptAgeVault, updateAgeSDL, "Params: pyrec\nUpdates the age's SDL"),
PYTHON_END_METHODS_TABLE;
// Type structure definition
PLASMA_DEFAULT_TYPE(ptAgeVault, "Accessor class to the Age's vault");
// required functions for PyObject interoperability
PYTHON_CLASS_NEW_IMPL(ptAgeVault, pyAgeVault)
PYTHON_CLASS_CHECK_IMPL(ptAgeVault, pyAgeVault)
PYTHON_CLASS_CONVERT_FROM_IMPL(ptAgeVault, pyAgeVault)
///////////////////////////////////////////////////////////////////////////
//
// AddPlasmaClasses - the python module definitions
//
void pyAgeVault::AddPlasmaClasses(PyObject *m)
{
PYTHON_CLASS_IMPORT_START(m);
PYTHON_CLASS_IMPORT(m, ptAgeVault);
PYTHON_CLASS_IMPORT_END(m);
}

View File

@ -0,0 +1,127 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "pyAlarm.h"
#include "hsTimer.h"
#include "hsStlUtils.h"
////////////////////////////////////////////////////////////////////
struct pyAlarm
{
double fStart;
float fSecs;
PyObject * fCb;
UInt32 fCbContext;
pyAlarm( double start, float secs, PyObject * cb, UInt32 cbContext )
: fStart( start )
, fSecs( secs )
, fCb( cb )
, fCbContext( cbContext )
{
Py_XINCREF( fCb );
}
~pyAlarm()
{
Py_XDECREF( fCb );
}
bool MaybeFire( double secs )
{
if ( secs-fStart>fSecs )
{
Fire();
return true;
}
return false;
}
void Fire()
{
if ( fCb )
{
PyObject* func = nil;
// Call the callback.
func = PyObject_GetAttrString( fCb, "onAlarm" );
if ( func )
{
if ( PyCallable_Check(func)>0 )
{
PyObject *retVal = PyObject_CallMethod(fCb, "onAlarm", "l", fCbContext);
Py_XDECREF(retVal);
}
}
Py_XDECREF(func);
}
}
};
////////////////////////////////////////////////////////////////////
//static
pyAlarmMgr * pyAlarmMgr::GetInstance()
{
static pyAlarmMgr inst;
return &inst;
}
pyAlarmMgr::~pyAlarmMgr()
{
// Clear();
}
void pyAlarmMgr::Update( double secs )
{
Alarms::iterator it = fAlarms.begin();
while ( it!=fAlarms.end() )
{
pyAlarm * alarm = (*it);
if ( alarm->MaybeFire( secs ) )
{
Alarms::iterator jt = it++;
fAlarms.erase( jt );
delete alarm;
}
else
{
it++;
}
}
}
void pyAlarmMgr::SetAlarm( float secs, PyObject * cb, UInt32 cbContext )
{
double start = hsTimer::GetSysSeconds();
fAlarms.push_back( TRACKED_NEW pyAlarm( start, secs, cb, cbContext ) );
}
void pyAlarmMgr::Clear()
{
for (Alarms::iterator i = fAlarms.begin(); i != fAlarms.end(); i++)
delete *i;
fAlarms.clear();
}

View File

@ -0,0 +1,47 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#ifndef pyAlarm_h_inc
#define pyAlarm_h_inc
#include "hsTypes.h"
#include "hsStlUtils.h"
#include <python.h>
struct pyAlarm;
class pyAlarmMgr
{
typedef std::list<pyAlarm*> Alarms;
Alarms fAlarms;
public:
~pyAlarmMgr();
static pyAlarmMgr * GetInstance();
void Update( double secs );
void SetAlarm( float secs, PyObject * cb, UInt32 cbContext );
void Clear();
};
#endif

View File

@ -0,0 +1,433 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
//////////////////////////////////////////////////////////////////////
//
// pyAudioControl - a wrapper class all the audio control functions
//
//////////////////////////////////////////////////////////////////////
#include "pyAudioControl.h"
#include "plAudio/plAudioSystem.h"
#include "plAudio/plVoiceChat.h"
#include "plAudio/plWinMicLevel.h"
#include "plAudio/plAudioCaps.h"
// Sets the master volume of a given audio channel
void pyAudioControl::SetSoundFXVolume( hsScalar volume )
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kSoundFX;
// make sure the volume is within range
if( volume > 1.f )
volume = 1.f;
else if( volume < 0.f )
volume = 0.f;
plgAudioSys::SetChannelVolume( chan, volume );
}
void pyAudioControl::SetMusicVolume( hsScalar volume )
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kBgndMusic;
// make sure the volume is within range
if( volume > 1.f )
volume = 1.f;
else if( volume < 0.f )
volume = 0.f;
plgAudioSys::SetChannelVolume( chan, volume );
}
void pyAudioControl::SetVoiceVolume( hsScalar volume )
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kVoice;
// make sure the volume is within range
if( volume > 1.f )
volume = 1.f;
else if( volume < 0.f )
volume = 0.f;
plgAudioSys::SetChannelVolume( chan, volume );
}
void pyAudioControl::SetAmbienceVolume( hsScalar volume )
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kAmbience;
// make sure the volume is within range
if( volume > 1.f )
volume = 1.f;
else if( volume < 0.f )
volume = 0.f;
plgAudioSys::SetChannelVolume( chan, volume );
}
void pyAudioControl::SetGUIVolume( hsScalar volume )
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kGUI;
// make sure the volume is within range
if( volume > 1.f )
volume = 1.f;
else if( volume < 0.f )
volume = 0.f;
plgAudioSys::SetChannelVolume( chan, volume );
}
void pyAudioControl::SetNPCVoiceVolume( hsScalar volume )
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kNPCVoice;
// make sure the volume is within range
if( volume > 1.f )
volume = 1.f;
else if( volume < 0.f )
volume = 0.f;
plgAudioSys::SetChannelVolume( chan, volume );
}
hsScalar pyAudioControl::GetSoundFXVolume()
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kSoundFX;
return plgAudioSys::GetChannelVolume(chan);
}
hsScalar pyAudioControl::GetMusicVolume()
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kBgndMusic;
return plgAudioSys::GetChannelVolume(chan);
}
hsScalar pyAudioControl::GetVoiceVolume()
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kVoice;
return plgAudioSys::GetChannelVolume(chan);
}
hsScalar pyAudioControl::GetAmbienceVolume()
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kAmbience;
return plgAudioSys::GetChannelVolume(chan);
}
hsScalar pyAudioControl::GetGUIVolume()
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kGUI;
return plgAudioSys::GetChannelVolume(chan);
}
hsScalar pyAudioControl::GetNPCVoiceVolume()
{
plgAudioSys::ASChannel chan;
chan = plgAudioSys::kNPCVoice;
return plgAudioSys::GetChannelVolume(chan);
}
// Switch DirectX Audio on or off at runtime
void pyAudioControl::Enable()
{
plgAudioSys::Activate(true);
}
void pyAudioControl::Disable()
{
plgAudioSys::Activate(false);
}
hsBool pyAudioControl::IsEnabled()
{
return plgAudioSys::Active();
}
// Enable or disable load-on-demand for sounds
void pyAudioControl::SetLoadOnDemand( hsBool state )
{
plSound::SetLoadOnDemand(state);
}
// Enables or disables two-stage LOD, where sounds can be loaded into RAM but not into sound buffers.
// ...Less of a performance hit, harder on memory.
void pyAudioControl::SetTwoStageLOD( hsBool state )
{
// For two-stage LOD, we want to disable LoadFromDiskOnDemand, so that we'll load into RAM at startup but not
// into sound buffers until demanded to do so. Enabling LoadFromDiskOnDemand basically conserves as much memory
// as possible
plSound::SetLoadFromDiskOnDemand( !state );
}
// Enable audio hardware acceleration
void pyAudioControl::UseHardwareAcceleration( hsBool state )
{
plgAudioSys::SetUseHardware(state);
}
hsBool pyAudioControl::IsHardwareAccelerated()
{
return plgAudioSys::Hardware();
}
// Enable EAX sound acceleration (requires hardware acceleration)
void pyAudioControl::UseEAXAcceleration( hsBool state )
{
plgAudioSys::EnableEAX(state);
}
hsBool pyAudioControl::IsUsingEAXAcceleration()
{
return plgAudioSys::UsingEAX();
}
// Mute or unmute all sounds
void pyAudioControl::MuteAll()
{
plgAudioSys::SetMuted(true);
}
void pyAudioControl::UnmuteAll()
{
plgAudioSys::SetMuted(false);
}
hsBool pyAudioControl::IsMuted()
{
return plgAudioSys::IsMuted();
}
hsBool pyAudioControl::SupportEAX(const char *deviceName)
{
return plgAudioSys::SupportsEAX(deviceName);
}
//------------------------
// Voice Settings
// Sets the microphone volume, in the range of 0 to 1
hsBool pyAudioControl::CanSetMicLevel()
{
return plWinMicLevel::CanSetLevel();
}
void pyAudioControl::SetMicLevel( hsScalar level )
{
// make sure the volume is within range
if( level > 1.f )
level = 1.f;
else if( level < 0.f )
level = 0.f;
if( CanSetMicLevel() )
plWinMicLevel::SetLevel( level );
}
hsScalar pyAudioControl::GetMicLevel()
{
return plWinMicLevel::GetLevel();
}
// turn voice recording on or off
void pyAudioControl::EnableVoiceRecording( hsBool state )
{
plVoiceRecorder::EnableRecording(state);
}
hsBool pyAudioControl::IsVoiceRecordingEnabled()
{
return plVoiceRecorder::RecordingEnabled();
}
// turn voice compression on and off
void pyAudioControl::EnableVoiceCompression( hsBool state )
{
}
hsBool pyAudioControl::IsVoiceCompressionEnabled()
{
return true;
}
// turn voice-over-net on and off
void pyAudioControl::EnableVoiceNetBroadcast( hsBool state )
{
//plWinRecorder::EnableNetVoice(state);
}
hsBool pyAudioControl::IsVoiceNetBroadcastEnabled()
{
return true;
}
void pyAudioControl::EnableVoiceChat(hsBool enable)
{
plVoicePlayer::Enable(enable);
}
// turn voice recording icons on and off
void pyAudioControl::ShowIcons()
{
plVoiceRecorder::EnableIcons(true);
}
void pyAudioControl::HideIcons()
{
plVoiceRecorder::EnableIcons(false);
}
// turn push-to-talk on or off
void pyAudioControl::PushToTalk( hsBool state )
{
plVoiceRecorder::EnablePushToTalk(state);
}
// Set the squelch level
void pyAudioControl::SquelchLevel( hsScalar level )
{
plVoiceRecorder::SetSquelch(level);
}
// Adjust voice packet frame size
void pyAudioControl::RecordFrame( Int32 size )
{
}
// Set the sample rate for recording
void pyAudioControl::RecordSampleRate( Int32 sample_rate )
{
}
UInt8 pyAudioControl::GetPriorityCutoff( void )
{
return plgAudioSys::GetPriorityCutoff();
}
void pyAudioControl::SetPriorityCutoff( UInt8 cut )
{
plgAudioSys::SetPriorityCutoff( cut );
}
void pyAudioControl::SetAudioSystemMode(int mode)
{
switch (mode)
{
case plgAudioSys::kDisabled:
plgAudioSys::SetAudioMode(plgAudioSys::kDisabled);
break;
case plgAudioSys::kSoftware:
plgAudioSys::SetAudioMode(plgAudioSys::kSoftware);
break;
case plgAudioSys::kHardware:
plgAudioSys::SetAudioMode(plgAudioSys::kHardware);
break;
case plgAudioSys::kHardwarePlusEAX:
plgAudioSys::SetAudioMode(plgAudioSys::kHardwarePlusEAX);
break;
default:
break;
}
}
int pyAudioControl::GetAudioSystemMode()
{
return plgAudioSys::GetAudioMode();
}
int pyAudioControl::GetHighestAudioMode()
{
int highestMode = plgAudioSys::kDisabled;
plAudioCaps caps = plAudioCapsDetector::Detect();
if ( caps.IsEAXAvailable() )
{
highestMode = plgAudioSys::kHardwarePlusEAX;
}
else
{
if ( 1 ) // This is taken care of in the audio system
{
highestMode = plgAudioSys::kHardware;
}
else
{
if ( caps.IsAvailable() )
{
highestMode = plgAudioSys::kSoftware;
}
}
}
return highestMode;
}
int pyAudioControl::GetNumAudioDevices()
{
return plgAudioSys::GetNumAudioDevices();
}
const char *pyAudioControl::GetAudioDeviceName(int index)
{
return plgAudioSys::GetAudioDeviceName(index);
}
void pyAudioControl::SetDeviceName(const char *device, bool restart)
{
plgAudioSys::SetDeviceName(device, restart);
}
const char * pyAudioControl::GetDeviceName()
{
return plgAudioSys::GetDeviceName();
}

Some files were not shown because too many files have changed in this diff Show More