//! 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); } } } }
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(); }