Example #1
0
 /// <summary>
 /// Event handler for outgoing IMs
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void Netcom_InstantMessageSent(object sender, Radegast.Netcom.InstantMessageSentEventArgs e)
 {
     // Message to an individual
     Conversation.IMSession sess = (IMSession)control.converse.GetConversation(control.instance.Names.Get(e.TargetID, true));
     if (sess != null)
         sess.OnMessage(Client.Self.AgentID, Client.Self.Name, e.Message);
 }
    void ProcessAvatar(Radegast.Rendering.RenderAvatar av)
    {
        GameObject avatarGameObject = new GameObject(av.avatar.LocalID.ToString());
        avatarGameObject.transform.position = new UnityEngine.Vector3(av.avatar.Position.X, av.avatar.Position.Y, -av.avatar.Position.Z);
        foreach (Radegast.Rendering.GLMesh mesh in av.glavatar._meshes.Values)
        {
            if (av.glavatar._showSkirt == false && mesh.Name == "skirtMesh") continue;

            UnityEngine.Vector3[] vertices = new UnityEngine.Vector3[mesh.RenderData.Vertices.Length / 3];
            UnityEngine.Vector2[] uvs = new UnityEngine.Vector2[mesh.RenderData.Vertices.Length / 3];
            UnityEngine.Vector3[] normals = new UnityEngine.Vector3[mesh.RenderData.Vertices.Length / 3];
            int[] triangles = new int[mesh.RenderData.Indices.Length];
            for (int i = 0; i < mesh.RenderData.Vertices.Length / 3; ++i)
            {
                vertices[i].x = mesh.RenderData.Vertices[3*i];
                vertices[i].y = mesh.RenderData.Vertices[3*i+1];
                vertices[i].z = -mesh.RenderData.Vertices[3*i+2];

                uvs[i].x = mesh.RenderData.TexCoords[2*i];
                uvs[i].y = mesh.RenderData.TexCoords[2*i+1];

                normals[i].x = mesh.RenderData.Normals[3*i];
                normals[i].y = mesh.RenderData.Normals[3*i+1];
                normals[i].z = -mesh.RenderData.Normals[3*i+2];
            }

            for (int i = 0; i < mesh.RenderData.Indices.Length; i += 3)
            {
                //HACK: OpenGL's default front face is counter-clock-wise
                triangles[i] = mesh.RenderData.Indices[i+2];
                triangles[i+1] = mesh.RenderData.Indices[i+1];
                triangles[i+2] = mesh.RenderData.Indices[i];
            }

            GameObject part = new GameObject(mesh.Name);
            MeshRenderer mr = part.AddComponent("MeshRenderer") as MeshRenderer;
            if (Application.platform == RuntimePlatform.Android)
                mr.material = avMaterials[(AvatarTextureIndex)mesh.teFaceID];

            part.AddComponent("MeshFilter");
            part.transform.parent = avatarGameObject.transform;
            if (mesh.Name == "eyelashMesh")
                part.transform.localPosition = new UnityEngine.Vector3(-mesh.Position.X, 0, mesh.Position.Z);
            else
                part.transform.localPosition = new UnityEngine.Vector3(0, 0, 0);
            UnityEngine.Mesh meshUnity = (part.GetComponent<MeshFilter>() as MeshFilter).mesh;

            meshUnity.vertices = vertices;
            meshUnity.uv = uvs;
            meshUnity.triangles = triangles;
            meshUnity.normals = normals;
        }
        avatars.Add(av.avatar.LocalID, avatarGameObject);
        renderAvatars.Add(av.avatar.LocalID, av);
        avatarGameObject.transform.parent = avatarObjects.transform;
    }
Example #3
0
 void Netcom_ClientLoggingIn(object sender, Radegast.Netcom.OverrideEventArgs e)
 {
     Talker.SayMore("Logging in.  Please wait.");
 }
Example #4
0
 private void IMSent(object sender, Radegast.Netcom.InstantMessageSentEventArgs e)
 {
     if (OnInstantMessageSent!=null)
         try
         {
             OnInstantMessageSent(this, new IMessageSentEventArgs(e.Message, e.TargetID, e.SessionID, e.Timestamp));
         }
         catch (Exception ex)
         {
             LogException("ImSent", ex);
         }
 }