From acf5ef4dbd01cf2a5d751d40ddb93f429ea13a6b Mon Sep 17 00:00:00 2001 From: "Douglas R. Miles" Date: Wed, 30 May 2012 14:16:06 -0700 Subject: [PATCH] Added AssetCallingCard + one extra wrapper for future assetTypes --- OpenMetaverse/AssetManager.cs | 10 +- .../Assets/AssetTypes/AssetCallingCard.cs | 94 +++++++++++++++++++ .../Assets/AssetTypes/AssetMutable.cs | 62 ++++++++++++ 3 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 OpenMetaverse/Assets/AssetTypes/AssetCallingCard.cs create mode 100644 OpenMetaverse/Assets/AssetTypes/AssetMutable.cs diff --git a/OpenMetaverse/AssetManager.cs b/OpenMetaverse/AssetManager.cs index 251543a3..659d285b 100644 --- a/OpenMetaverse/AssetManager.cs +++ b/OpenMetaverse/AssetManager.cs @@ -1226,7 +1226,7 @@ namespace OpenMetaverse #region Helpers - private Asset CreateAssetWrapper(AssetType type) + public Asset CreateAssetWrapper(AssetType type) { Asset asset; @@ -1265,9 +1265,13 @@ namespace OpenMetaverse case AssetType.Gesture: asset = new AssetGesture(); break; + case AssetType.CallingCard: + asset = new AssetCallingCard(); + break; default: - Logger.Log("Unimplemented asset type: " + type, Helpers.LogLevel.Error, Client); - return null; + asset = new AssetMutable(type); + Logger.Log("Unimplemented asset type: " + type, Helpers.LogLevel.Error); + break; } return asset; diff --git a/OpenMetaverse/Assets/AssetTypes/AssetCallingCard.cs b/OpenMetaverse/Assets/AssetTypes/AssetCallingCard.cs new file mode 100644 index 00000000..6ee1fc79 --- /dev/null +++ b/OpenMetaverse/Assets/AssetTypes/AssetCallingCard.cs @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2009, openmetaverse.org + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.org nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using OpenMetaverse; + +namespace OpenMetaverse.Assets +{ + /// + /// Represents a Callingcard with AvatarID and Position vector + /// + public class AssetCallingCard : Asset + { + /// Override the base classes AssetType + public override AssetType AssetType { get { return AssetType.CallingCard; } } + + /// UUID of the Callingcard target avatar + public UUID AvatarID = UUID.Zero; + + /// Construct an Asset of type Callingcard + public AssetCallingCard() { } + + /// + /// Construct an Asset object of type Callingcard + /// + /// A unique specific to this asset + /// A byte array containing the raw asset data + public AssetCallingCard(UUID assetID, byte[] assetData) + : base(assetID, assetData) + { + Decode(); + } + + /// + /// Constuct an asset of type Callingcard + /// + /// UUID of the target avatar + /// Local position of callingcard + public AssetCallingCard(UUID avatarID) + { + AvatarID = avatarID; + Encode(); + } + + /// + /// Encode the raw contents of a string with the specific Callingcard format + /// + public override void Encode() + { + string temp = "Callingcard version 2\n"; + temp += "avatar_id " + AvatarID + "\n"; + AssetData = Utils.StringToBytes(temp); + } + + /// + /// Decode the raw asset data, populating the AvatarID and Position + /// + /// true if the AssetData was successfully decoded to a UUID and Vector + public override bool Decode() + { + String text = Utils.BytesToString(AssetData); + if (text.ToLower().Contains("callingcard version 2")) + { + AvatarID = new UUID(text.Substring(text.IndexOf("avatar_id") + 10, 36)); + String vecDelim = " "; + return true; + } + return false; + } + } +} diff --git a/OpenMetaverse/Assets/AssetTypes/AssetMutable.cs b/OpenMetaverse/Assets/AssetTypes/AssetMutable.cs new file mode 100644 index 00000000..59c6baae --- /dev/null +++ b/OpenMetaverse/Assets/AssetTypes/AssetMutable.cs @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2009, openmetaverse.org + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.org nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using OpenMetaverse; + +namespace OpenMetaverse.Assets +{ + /// + /// Represents an Animation + /// + public class AssetMutable : Asset + { + public AssetType currentType; + + /// Override the base classes AssetType + public override AssetType AssetType { get { return currentType; } } + + /// Default Constructor + public AssetMutable(AssetType type) + { + currentType = type; + } + + /// + /// Construct an Asset object of type Animation + /// + /// A unique specific to this asset + /// A byte array containing the raw asset data + public AssetMutable(AssetType type, UUID assetID, byte[] assetData) + : base(assetID, assetData) + { + currentType = type; + } + + public override void Encode() { } + public override bool Decode() { return true; } + } +}