Eric,

I may need the timer_event, also, but I think my main problem is different
because when the user does update the page, the turtles themselves are
updated, but the ink drawn by the turtle pens are only updated in the
user's own session, not in the others' sessions. I am using the draw()
function in demo12.ijs, but with my own extras embedded. The last line of
my draw() calls the function drawTurtles(...) which  calls
drawLines(linecolors,moves), which is the "culprit()". I include them below.

function drawLines(linecolors,moves) {
    gl.lineWidth(2);
    gl.uniform1i( uLit, 0 );  // The lines representing the coordinate axes
are not lit.
    for(var i=0;i<linecolors.length;i++)
    {
 drawPrimitive( gl.LINES, linecolors[i], moves[i]);
    }
    gl.lineWidth(1);
}

function
drawTurtles(linecolors,moves,leftColor,rightColor,backColor,bottom,left,right,back,bottomNs,leftNs,rightNs,backNs){
    gl.uniform1i( uLit, 0 );  // The lines representing the coordinate axes
are not lit.

    drawLines(linecolors,moves)
 bottomColor = [ 1,1,1,0];
    gl.uniform1i( uLit, 1 );  // Turn on lighting calculations for the cube.
    for(var i=0;i<leftColor.length;i++)
    {
 gl.uniform3f( uNormal, leftNs[i][0],leftNs[i][1],leftNs[i][2]);
 drawPrimitive( gl.TRIANGLES, leftColor[i], left[i]);
 gl.uniform3f( uNormal, rightNs[i][0],rightNs[i][1],rightNs[i][2]);
 drawPrimitive( gl.TRIANGLES, rightColor[i], right[i]);
 gl.uniform3f( uNormal, backNs[i][0],backNs[i][1],backNs[i][2]);
 drawPrimitive( gl.TRIANGLES, backColor[i], back[i]);
 gl.uniform3f( uNormal, -bottomNs[i][0],-bottomNs[i][1],-bottomNs[i][2]);
 drawPrimitive( gl.TRIANGLES, bottomColor, bottom[i]);
    }
}


On Mon, Sep 29, 2014 at 10:38 AM, Eric Iverson <[email protected]>
wrote:

> A browser session is normallu pasive. That is it doesn't see (or
> display) new information unless asked to do so (by a user request).
>
> I haven't paid attention to your overall architecture, but suspect you
> need something like the new timer event in order to update other user
> states. There is a new demo that has shows how to use the timer.
>
>
> On Mon, Sep 29, 2014 at 7:57 AM, Brian Schott <[email protected]>
> wrote:
> > Joe and others,
> >
> > [Please accept my apologies for the length of this post.]
> >
> > My grandson visited over the weekend and I had an opportunity to exercise
> > the turtle graphics system with him and with my wife for an extended
> period
> > of time. It was a very informative and mostly excellent experience.
> However
> > a result of that experimentation is that I now realize I do not
> understand
> > a key feature of how JHS works in the several distinct sessions on my
> local
> > area network.
> >
> > Whereas everyone (all the various users) does see how the turtles have
> > moved and all of the turtles' current state no matter which
> session/screen
> > they are observing, the other features of the graphics system only change
> > on their own screen. Even the status of the various turtles is only
> updated
> > on the local screen when the local user makes a change of the turtle by
> > moving or turning the turtle on his session. The individual user can
> > request a do-nothing action like moving the turtle forward 0 steps or
> > turning the turtle 0° just so he or she can see the current status of all
> > of the turtles.
> >
> > Almost all of that in the previous paragraph is as I would expect the
> > system to behave and largely how I **want** the system to behave.
> However a
> > key feature that is missing in the system is that the turtles can draw a
> > line where they have moved, and  but that line only shows on the screen
> of
> > the person who whose turtle created that line and not on any other
> screen. By
> > the way, those lines are referred to as "pens" in turtle circles.
> >
> > Also other features which are not important and which I don't wish to
> > change, do not change. For example if the user at one screen changes the
> > viewing position perspective or changes the background color, then it is
> > desirable in most circumstances that other people not necessarily see
> > changes.
> >
> > So my major question is, how can I make the pens appear on other
> screens? I
> > am going to show below (a) the code that creates the changing colors of
> the
> > background screens and (b) the code that changes the pens and the
> positions
> > of the turtles in the hopes that that is enough but I am fully aware it
> may
> > not be. Notice that in both cases the main work is done my the function
> > `draw()` which is not really shown, but may be important.
> >
> > In the "command_enter" functions below, the pen colors and pen positions
> > are stored in the nouns `linecolors` and `moves`, which are distinct from
> > the other values passed around in the graphics system because they are
> > accumulated using the js ".concat" feature. The other features in the
> > "command_enter" functions below paint the various turtles, not the pens,
> > and are updated on all screens.
> >
> > *******(a)*******
> > function ev_bgcolor_click(){jdoajax([],"");}
> > function ev_bgcolor_click_ajax(tx){bgcolor=eval(tx[0]);draw();}
> >
> > *******(b)*******
> > function ev_command_enter(){jdoajax(["command"],"");}
> > function ev_command_enter_ajax(elements)
> > {
> >     var number = elements[0];
> >     viewXYZ = elements[1];
> >     viewUP  = elements[2];
> >
> >     var r = 0;
> >     var drawFrame = function() {
> > var ts = [];
> > for(var i = 0; i < 13; i++) {
> >     element = r*13+i+3;
> >     ts.push(elements[element]);
> > }
> > linecolor=eval(ts[0]);
> > linecolors = linecolors.concat(linecolor);
> > move=eval(ts[1]);
> > moves = moves.concat(move);
> > leftColors=eval(ts[2]);
> > rightColors=eval(ts[3]);
> > backColors=eval(ts[4]);
> > bottoms=eval(ts[5]);
> > lefts=eval(ts[6]);
> > rights=eval(ts[7]);
> > backs=eval(ts[8]);
> > bottomNs=eval(ts[9]);
> > leftNs=eval(ts[10]);
> > rightNs=eval(ts[11]);
> > backNs=eval(ts[12]);
> > draw();
> > r++;
> > if (r < number) {
> >     requestAnimationFrame(drawFrame);
> > }
> >     }
> >     requestAnimationFrame(drawFrame);
> > }
> >
> > On Fri, Sep 26, 2014 at 7:39 AM, Joe Bogner <[email protected]> wrote:
> >
> >> Hi Brian, I don't know of a way to do that without patching the JHS
> >> jijx code. However, since the session is shared by everyone, it should
> >> only need to be entered once.
> >>
> >> I'm imagining the scenario where an instructor has this loaded and
> >> students are connecting to it. The instructor would first enter that
> >> and all the students would already have it in their shared session
> >>
> >>
> >>
> >> --
> > (B=)
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
(B=) <-----my sig
Brian Schott
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to