Esempio n. 1
0
    void UpdateAvTexture(uint avLocalID)
    {
        GameObject avatarGameObject;

        if (!avatars.TryGetValue(avLocalID, out avatarGameObject))
        {
            return;             //get AvatarAppearence before AvatarUpdate
        }
        bool del = true;

        Radegast.Rendering.RenderAvatar ra = renderAvatars[avLocalID];
        foreach (Radegast.Rendering.GLMesh mesh in ra.glavatar._meshes.Values)
        {
            if (mesh.Name == "skirtMesh")
            {
                continue;
            }
            UUID texID = ra.avatar.Textures.GetFace((uint)mesh.teFaceID).TextureID;

            UnityEngine.Material mat = m_textures.GetMaterial(texID);
            if (mat != null)
            {
                Transform child = avatarGameObject.transform.FindChild(mesh.Name);
                child.GetComponent <MeshRenderer>().material = mat;
            }
            else
            {
                del = false;
            }
        }
        if (del)
        {
            avHasTex.Remove(avLocalID);
        }
    }
Esempio n. 2
0
    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);
            part.AddComponent("MeshFilter");
            part.transform.parent        = avatarGameObject.transform;
            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;

            UnityEngine.Material mat = (part.AddComponent("MeshRenderer") as MeshRenderer).material;
            mat = m;
        }
        avatars.Add(av.avatar.LocalID, avatarGameObject);
        renderAvatars.Add(av.avatar.LocalID, av);
        avatarGameObject.transform.parent = avatarObjects.transform;
    }
Esempio n. 3
0
    void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e)
    {
        if (e.Avatar.PrimData.PCode == PCode.Avatar)
        {
            Debug.Log("Recieve an Avatar!!!");
        }
        Radegast.Rendering.GLAvatar ga = new Radegast.Rendering.GLAvatar();
        OpenMetaverse.Avatar        av = e.Avatar;

        Radegast.Rendering.RenderAvatar ra = new Radegast.Rendering.RenderAvatar();
        ra.avatar   = av;
        ra.glavatar = ga;

        newAvatars.Add(av.LocalID, ra);
        ra.glavatar.morph(av);
    }
Esempio n. 4
0
    //Receive all the avatars' models
    void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e)
    {
        //leave other regions out temporarily
        if (e.Simulator.Handle != Client.Network.CurrentSim.Handle)
        {
            return;
        }

        Radegast.Rendering.GLAvatar ga = new Radegast.Rendering.GLAvatar();
        OpenMetaverse.Avatar        av = e.Avatar;

        Radegast.Rendering.RenderAvatar ra = new Radegast.Rendering.RenderAvatar();
        ra.avatar   = av;
        ra.glavatar = ga;

        newAvatars.Add(av.LocalID, ra);
        ra.glavatar.morph(av);
    }
Esempio n. 5
0
    void MoveAvatars()
    {
        //althouth TerseObjectUpdate event can give us the new coord of the avatar, but the coord is updated by openmetaverse in the background already.
        foreach (var item in avatars)
        {
            GameObject av = item.Value;
            Radegast.Rendering.RenderAvatar ra = renderAvatars[item.Key];
            UnityEngine.Vector3             pos;
            pos.x = ra.BasePrim.Position.X;
            pos.y = ra.BasePrim.Position.Y;
            pos.z = -(ra.BasePrim.Position.Z - 0.7f);             //hack: fix foot to ground
            av.transform.position = pos;

            UnityEngine.Quaternion rot;
            rot.x = ra.BasePrim.Rotation.X;
            rot.y = ra.BasePrim.Rotation.Y;
            rot.z = ra.BasePrim.Rotation.Z;
            rot.w = ra.BasePrim.Rotation.W;
            av.transform.rotation = rot;
        }
    }
Esempio n. 6
0
    void UpdateAvTexture(uint avLocalID)
    {
        bool       del = true;
        GameObject avatarGameObject = avatars[avLocalID];

        Radegast.Rendering.RenderAvatar ra = renderAvatars[avLocalID];
        foreach (Radegast.Rendering.GLMesh mesh in ra.glavatar._meshes.Values)
        {
            if (mesh.Name == "skirtMesh")
            {
                continue;
            }
            UUID                 texID = ra.avatar.Textures.GetFace((uint)mesh.teFaceID).TextureID;
            Transform            child = avatarGameObject.transform.FindChild(mesh.Name);
            UnityEngine.Material mat   = child.GetComponent <MeshRenderer>().material;
            if (textures.ContainsKey(texID))
            {
                mat.mainTexture = textures[texID];
            }
            else if (bitmaps.ContainsKey(texID))
            {
                Texture2D tex = Bitmap2Texture2D(bitmaps[texID]);
                textures[texID] = tex;
                mat.mainTexture = tex;
                bitmaps.Remove(texID);
            }
            else
            {
                del = false;
            }
        }
        if (del)
        {
            avHasTex.Remove(avLocalID);
        }
    }