mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 02:27:40 -04:00
Initial port of Mystler's code
Add coding from Mystler's original commits
(cherry picked from commit 6b3b966f81
)
This commit is contained in:
@ -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
|
// Function : ChangeAvatar
|
||||||
|
@ -414,6 +414,9 @@ public:
|
|||||||
|
|
||||||
virtual void PlaySimpleAnimation(const char* animName);
|
virtual void PlaySimpleAnimation(const char* animName);
|
||||||
|
|
||||||
|
virtual bool SaveClothingToFile(plFileName filename);
|
||||||
|
virtual bool LoadClothingFromFile(plFileName filename);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Function : ChangeAvatar
|
// Function : ChangeAvatar
|
||||||
|
@ -607,6 +607,29 @@ PYTHON_METHOD_DEFINITION(ptAvatar, setDontPanicLink, args)
|
|||||||
|
|
||||||
self->fThis->SetDontPanicLink(value);
|
self->fThis->SetDontPanicLink(value);
|
||||||
PYTHON_RETURN_NONE;
|
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)
|
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, 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, 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_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")
|
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, kBehaviorTypeLinkIn, plHBehavior::kBehaviorTypeLinkIn);
|
||||||
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeLinkOut, plHBehavior::kBehaviorTypeLinkOut);
|
PYTHON_ENUM_ELEMENT(PtBehaviorTypes, kBehaviorTypeLinkOut, plHBehavior::kBehaviorTypeLinkOut);
|
||||||
PYTHON_ENUM_END(m, PtBehaviorTypes);
|
PYTHON_ENUM_END(m, PtBehaviorTypes);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user