Beispiel #1
0
        private Dictionary <uint, byte> GetAssetParamsAsVisualParams()
        {
            Dictionary <uint, byte> VisualParams = new Dictionary <uint, byte>();

            float maxVal     = 0;
            float minVal     = 0;
            uint  packetIdx  = 0;
            float range      = 0;
            float percentage = 0;
            byte  packetVal  = 0;

            foreach (KeyValuePair <uint, float> kvp in AgentAppearanceParams)
            {
                packetIdx = AppearanceManager.GetAgentSetAppearanceIndex(kvp.Key) - 1; //TODO/FIXME: this should be zero indexed, not 1 based.
                maxVal    = BodyShapeParams.GetValueMax(kvp.Key);
                minVal    = BodyShapeParams.GetValueMin(kvp.Key);

                range = maxVal - minVal;

                percentage = (kvp.Value - minVal) / range;

                packetVal = (byte)(percentage * (byte)255);

                VisualParams[packetIdx] = packetVal;
            }

            return(VisualParams);
        }
Beispiel #2
0
        public void SendAgentSetAppearance()
        {
            // Get latest appearance info
            if (AgentAppearanceParams.Count == 0)
            {
                GetAvatarAppearanceInfoFromWearableAssets();
            }

            AgentSetAppearancePacket p = new AgentSetAppearancePacket();

            p.AgentData.AgentID   = Client.Network.AgentID;
            p.AgentData.SessionID = Client.Network.SessionID;
            p.AgentData.SerialNum = ++SerialNum;

            // Add Texture Data
            p.ObjectData.TextureEntry = AgentTextureEntry.ToBytes();

            // Add Visual Params
            Dictionary <uint, byte> VisualParams = GetAssetParamsAsVisualParams();

            p.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[218];
            for (uint i = 0; i < 218; i++)
            {
                p.VisualParam[i] = new AgentSetAppearancePacket.VisualParamBlock();

                if (VisualParams.ContainsKey(i))
                {
                    p.VisualParam[i].ParamValue = VisualParams[i];
                }
                else
                {
                    uint  paramid      = GetParamID(i + 1);
                    float defaultValue = BodyShapeParams.GetValueDefault(paramid);

                    float minVal = BodyShapeParams.GetValueMin(paramid);

                    float range = BodyShapeParams.GetValueMax(paramid) - minVal;

                    float percentage = (defaultValue - minVal) / range;

                    byte packetVal = (byte)(percentage * (byte)255);

                    p.VisualParam[i].ParamValue = packetVal;
                }
            }

            // Add Size Data
            p.AgentData.Size = GetAgentSizeFromVisualParams(VisualParams);

            Client.Network.SendPacket(p);
        }