/*! * @param url URL to 3D animation file to load. * @param target name of avatar/garment to apply animation to * if null, the current avatar is assumed * Load a 3D animation content file (BVH, Havok or Vixen format) * and apply it to the named avatar or garment. The name of the * animation is the base name of the file without the extension. * * @see PlayAnimation PauseAnimation */ public virtual void LoadAnimation(String url, String targetname) { String ext = url.Substring(url.LastIndexOf('.')).ToLower(); SharedObj targobj = null; Garment g = null; if (ext == ".scp") { scriptor.LoadScript(url); return; } if (ext == ".xml") { if (targetname != null) { g = FindGarment(targetname); } else { g = currentGarment; } LoadMayaCache(g, url, null, scriptor); } else { Puppet p = null; if (targetname != null) { p = FindAvatar(targetname); g = FindGarment(targetname); } else { if (currentAvatar == null) { return; } p = currentAvatar; } if (p != null) { targetname = p.AnimSkeleton.Name; targetname = targetname.Substring(targetname.IndexOf('.')); targobj = p.AnimSkeleton; } else if (g != null) { targobj = g.ClothMesh; targetname = g.ClothMesh.Name; } scriptor.Load(url, targetname, 0, targobj); } }
/*! * Display the named avatar. This function will only display the avatar * if it has already been loaded. If the name is null, the current avatar is shown. * * @see LoadAvatar HideAvatar */ public virtual void ShowAvatar(String name) { Puppet p = FindAvatar(name); if (p == null) { return; } if (p != currentAvatar) { HideAvatar(); } currentAvatar = p; p.Show(); }
/*! * @param name name to assign to loaded avatar. * @param url URL of 3D avatar content to load. * Load a 3D avatar content file (Havok or Vixen format) * and handle a LoadAvatarEvent when load is complete. */ public virtual void LoadAvatar(String name, String url) { Puppet p = FindAvatar(name); if (p != null) { ShowAvatar(name); } else { currentAvatar = new Puppet(name, url, config.avatar); avatarRoot.Append(currentAvatar.BodyModel); avatars.Add(currentAvatar); } }