Browse Source

Initial port of Mystler's code

Add coding from Mystler's original commits

(cherry picked from commit 6b3b966f81)
working_subtitles
Mystler 2 years ago committed by rarified
parent
commit
b0511ea068
  1. 54
      Sources/Plasma/FeatureLib/pfPython/cyAvatar.cpp
  2. 3
      Sources/Plasma/FeatureLib/pfPython/cyAvatar.h
  3. 27
      Sources/Plasma/FeatureLib/pfPython/cyAvatarGlue.cpp

54
Sources/Plasma/FeatureLib/pfPython/cyAvatar.cpp

@ -1600,6 +1600,60 @@ void cyAvatar::PlaySimpleAnimation(const char* animName)
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : SaveClothingToFile
// PARAMETERS : filename - file to save to
//
// PURPOSE : Save the avatar's clothing to a file. If only a filename is
// given, it will write to UserData/Avatars.
//
bool cyAvatar::SaveClothingToFile(plFileName filename)
{
if (fRecvr.Count() > 0) {
plArmatureMod* avatar = plAvatarMgr::FindAvatar(fRecvr[0]);
if (avatar) {
plClothingOutfit* cl = avatar->GetClothingOutfit();
if (cl) {
// Save file in UserData/Avatars if only a filename is given
if (!filename.StripFileName().IsValid()) {
plFileName path = plFileName::Join(plFileSystem::GetUserDataPath(), "Avatars");
plFileSystem::CreateDir(path, true);
filename = plFileName::Join(path, filename);
}
return cl->WriteToFile(filename);
}
}
}
return false;
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : LoadClothingFromFile
// PARAMETERS : filename - file to load from
//
// PURPOSE : Load the avatar's clothing from a file. If only a filename is
// given, it will read from UserData/Avatars.
//
bool cyAvatar::LoadClothingFromFile(plFileName filename)
{
if (fRecvr.Count() > 0) {
plArmatureMod* avatar = plAvatarMgr::FindAvatar(fRecvr[0]);
if (avatar) {
plClothingOutfit* cl = avatar->GetClothingOutfit();
if (cl) {
// Search for file in UserData/Avatars if only a filename is given
if (!filename.StripFileName().IsValid())
filename = plFileName::Join(plFileSystem::GetUserDataPath(), "Avatars", filename);
cl->SetClothingFile(filename);
return cl->ReadClothing();
}
}
}
return false;
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : ChangeAvatar

3
Sources/Plasma/FeatureLib/pfPython/cyAvatar.h

@ -414,6 +414,9 @@ public:
virtual void PlaySimpleAnimation(const char* animName);
virtual bool SaveClothingToFile(plFileName filename);
virtual bool LoadClothingFromFile(plFileName filename);
/////////////////////////////////////////////////////////////////////////////
//
// Function : ChangeAvatar

27
Sources/Plasma/FeatureLib/pfPython/cyAvatarGlue.cpp

@ -607,6 +607,29 @@ PYTHON_METHOD_DEFINITION(ptAvatar, setDontPanicLink, args)
self->fThis->SetDontPanicLink(value);
PYTHON_RETURN_NONE;
PYTHON_METHOD_DEFINITION(ptAvatar, saveClothingToFile, args)
{
PyObject* filename;
if (!PyArg_ParseTuple(args, "O", &filename) || !PyString_CheckEx(filename))
{
PyErr_SetString(PyExc_TypeError, "saveClothingToFile expects a string object");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_BOOL(self->fThis->SaveClothingToFile(PyString_AsStringEx(filename)));
}
PYTHON_METHOD_DEFINITION(ptAvatar, loadClothingFromFile, args)
{
PyObject* filename;
if (!PyArg_ParseTuple(args, "O", &filename) || !PyString_CheckEx(filename))
{
PyErr_SetString(PyExc_TypeError, "loadClothingFromFile expects a string object");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_BOOL(self->fThis->LoadClothingFromFile(PyString_AsStringEx(filename)));
}
PYTHON_START_METHODS_TABLE(ptAvatar)
@ -665,6 +688,8 @@ PYTHON_START_METHODS_TABLE(ptAvatar)
PYTHON_METHOD(ptAvatar, playSimpleAnimation, "Params: animName\nPlay simple animation on avatar"),
PYTHON_METHOD(ptAvatar, setDontPanicLink, "Params: value\nDisables panic linking to Personal Age (warps the avatar back to the start instead)"),
PYTHON_METHOD(ptAvatar, saveClothingToFile, "Params: filename\nSave avatar clothing to a file"),
PYTHON_METHOD(ptAvatar, loadClothingFromFile, "Params: filename\nLoad avatar clothing from a file"),
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")
@ -913,4 +938,4 @@ void cyAvatar::AddPlasmaConstantsClasses(PyObject *m)
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeLinkIn, plHBehavior::kBehaviorTypeLinkIn);
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeLinkOut, plHBehavior::kBehaviorTypeLinkOut);
PYTHON_ENUM_END(m, PtBehaviorTypes);
}
}

Loading…
Cancel
Save