R0J0hound's Forum Posts

  • Prominent

    It may be because C2 didn't redraw yet. So it doesn't matter what you draw to the object before grabbing the canvas, because c2 hasn't redrawn the canvas.

    Edit:

    Also I cannot reproduce the flicker issue. Can you show the event used?

  • Prominent

    A quick look shows it doesn't draw right with negative dimensions, but you can make it negative, paste then make it positive again:

    Every tick

    --- canvas: set width to -self.width

    --- canvas: paste layer 1

    --- canvas: set width to abs(self.width)

  • That "load texture from canvas" doesn't work reliably with webgl on since it relies on undefined behavior of the webgl spec. I never got around to removing it.

    That said, it makes sense to me that it would clear only if you clear last. If you cleared first, it would clear but then it would be filled with a copy of the canvas.

  • Hmm, interesting. I've never enountered that. Then again I haven't used webgl in a while either.

    I probably won't be able to look into it very soon.

    Webgl queues up draw calls until a "present" or "flush" call sends everything to the gpu to draw. If you're interested in tinkering with it you can try adding glwrap.flush() to the end of the paste function in the plugin's runtime.js. It may not be that exactly though. It might solve the out of order issue, but it will also make it slower.

  • Prominent

    The paste actions will draw objects as they appear. So to flip it you need to flip after pasting.

    Every tick

    --- canvas: paste layer 1

    --- canvas: set width to -self.width

    • Post link icon

    The last game I bought was probably coming up on four years ago. Typically it's 0 a month though.

  • Prominent

    That's not implimented. It proved to be rather complicated the times I looked into it before, and I've been avoiding any plugin modification at this time. So for now only individual objects can be pasted.

  • I don't think you can from the property bar. You'll probably need to do it from events.

  • If it helps this will be hard in any other software as well, unless they handle it specifically.

    Anyways no pathfinding needs to be done at all, unless you need the cars to have a specific destination, otherwise they can just meander.

    Here's one idea:

    https://www.dropbox.com/s/dl5b7om2qwweo ... .capx?dl=1

    /examples34/road_path.capx

    Basically it's a bunch of waypoints connected to make paths. The waypoints can have multiple outgoing paths, so the cars just pick a random one. I made an in game editor so creating the connections is easier. I then can copy the result to a variable and remove the editor if i want to.

    Next step is to make the cars move. I suppose the moveto behavior could have been useful, but I opted to just use events to move from one waypoint to the other. Pretty much the only requirement I had was to specify when to move.

    The car to car awareness proved slightly complicated. It was simple enough to make the car's angle face the direction it was going. Then i could see if another car was ahead with the overlapping at offset condition. That isn't enough for intersections, which would bind up with just that rule. My solution was to only let one car travel through the intersection at one time. It's random so maybe actually making traffic laws would help.

    Overall it works pretty well, however the logic for intersections fails in a few places near intersections, so that would need more work.

    There may be other simpler ways. Standby for a sightly different idea.

  • Use the browser object with the execjs expression. Say you have that json in a text variable called json.

    You could get it with the expression:

    Browser.execjs(json & ".result")

    That should be enough I'd think. If not then then another idea is to convert the Boolean to a number.

    Do that by changing ".result" to ".result?1:0"

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • This topic may help:

  • I don't think I have an example, but the main feature to use is the paste action. The paste action will draw another object onto itself where the objects overlap.

    So basically place a paster object on the layout.

    Change it's hotspot to centered in the properties panel.

    Position it over the triangle so that no matter which angle it faces the paster will still cover the arrow completely.

    Remember the height of the paster. For this example let's say it's 200.

    In events do this:

    Every tick

    --- paster: clear to (0,0,0,0)

    --- paster: set height to 200

    --- Sprite: set visible

    --- paster: paste Sprite

    --- paster: set invisible

    --- paster: set height to 200/2

    And that's about it. I hid the triangle Sprite after drawing it to the paster since we don't want it to draw again.

  • Hey I worked on it a bit more but didn't post the results before I left the house.

    My equation was a tad off. Ex 0.5*sin(angle)^2 needs to be (0.5*sin(angle)^2.

    Other than that the sprite's angle needs to be corrected to eliminate the bounce.

    Set angle to angle(0,0,cos(ang),0.5*sin(ang))

    The only caveat is the Sprite won't be pointing at the mouse anymore. I was working on the math to just find the intersection between the ellipse and the line to the mouse but I didn't finish.

    If you want indavidual X y scaling of layers just use the paster object. It doesn't need webgl.

  • Hmm... You're right.

    If you just set the width to 200*sqrt(0.5*sin(Self.Angle)^2+cos(self.angle)^2) and leave the height alone it works.

    200*cos(self.angle) is the horizontal

    0.5*200*sin(self.angle) is half the vertical

    That makes a right triangle and the last side is what we want the width to be. We can then find it with the Pythagorean theorem:

    a^2+b^2=c^2

  • You have to use the paster object to do skew