示例#1
0
        //! Draws all non-hardcoded objects in world - including avatars - into the 3D world of OpenGL
        void DrawEntities()
        {
            //Test.Debug("drawobjects");
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT_AND_DIFFUSE, new float[] { 1.0f, 0.0f, 0.5f, 1.0f });

            Gl.glEnable(Gl.GL_TEXTURE_2D);

            Avatar myavatar = MetaverseClient.GetInstance().myavatar;

            Picker3dController picker3dcontroller = Picker3dController.GetInstance();

            for (int i = 0; i < worldmodel.entities.Count; i++)
            {
                if (worldmodel.entities[i].iParentReference == 0)
                {
                    // dont draw own avatar in mouselook mode
                    if (worldmodel.entities[i] != myavatar)
                    {
                        //LogFile.WriteLine("render entity " + i);
                        Gl.glRasterPos3f((float)worldmodel.entities[i].pos.x, (float)worldmodel.entities[i].pos.y, (float)worldmodel.entities[i].pos.z);
                        picker3dcontroller.AddHitTarget(worldmodel.entities[i]);
                        worldmodel.entities[i].Draw();
                        picker3dcontroller.EndHitTarget();
                        graphics.Bind2DTexture(0);
                    }
                    else
                    {
                        Gl.glRasterPos3f((float)worldmodel.entities[i].pos.x, (float)worldmodel.entities[i].pos.y, (float)worldmodel.entities[i].pos.z);
                        picker3dcontroller.AddHitTarget(worldmodel.entities[i]);
                        worldmodel.entities[i].Draw();
                        picker3dcontroller.EndHitTarget();
                        graphics.Bind2DTexture(0);
                    }
                }
            }
        }
示例#2
0
        public override void Draw()
        {
            //Test.Debug("EntityGroup.Draw()");
            IGraphicsHelper graphics = GraphicsHelperFactory.GetInstance();
            //SelectionModel selectionmodel = SelectionModel.GetInstance();
            Picker3dController picker3dcontroller = Picker3dController.GetInstance();

            if (graphics == null)
            {
                return;
            }

            graphics.PushMatrix();
            graphics.Translate(pos);

            bool bNeedToPopMatrix   = false;
            bool bRotatedToGroupRot = false;

            //for( int iSubEntityRef = 0; iSubEntityRef < iNumSubEntities; iSubEntityRef++ )
            foreach (Entity child in children)
            {
                if (!bRotatedToGroupRot)
                {
                    // dont rotate first prim in elevation for avatars (looks better like this)
                    //if( strcmp( sDeepEntityType, "AVATAR" ) != 0 )
                    if (true)  // Just display all avatars as is for now( we should put this back in though probably)
                    {
                        graphics.Rotate(rot);
                        bRotatedToGroupRot = true;
                    }

                    picker3dcontroller.AddHitTarget(child);
                    child.Draw();
                }

                if (bNeedToPopMatrix)
                {
                    graphics.PopMatrix();
                }
            }
            graphics.PopMatrix();
        }