Mikal's Forum Posts

  • How can we call or (expose to call) 3rd party plugin methods from Scripting, similar to how we can call methods for plugins like Sprite, Text, etc. from scripts.

    I have used methods to work around this like call C3 event functions from script, but I benchmarked this and calling a C3 event function from Script has a higher performance cost for my project which drop performance below 10fps. I also benchmarked calling a function with no events and the action of just calling the empty function was also fairly heavy.

  • Diego

    The scene graph features are great, the additional ACEs and the new editor support.

    How do you suggest to 'clone' a Scene Graph at runtime. For example if I have the Skeleton model setup in the editor once, with parent child relationship and placement, during runtime, how would I create another version and place it somewhere else? I would hope that I could create a new Scene Graph based on the particular root instance (perhaps through UID, or some other picking, like an instance var, etc.)

    Since scene graphs can have multiple instances of the same object, it does not seem like Containers work for this (we have tried and I have not yet seen a successful implementation using containers, especially with multiple instances of the same object in the Scene Graph.)

    Any suggestions or ideas, or is this a new feature request?

  • Ashley Here's another usage of the new Mesh Points w/ the C3 Spine plugin.

    I added a SpineBBoxGetPoly expression which returns poly points in JSON format of named slot/bounding box attachment. Using with C3 Sprite Mesh to creates a very accurate Collision Bounding Box in C3.

    SpineBBoxGetPoly expression returns poly points in JSON format array of named slot/bounding box attachment. Use C3 JSON object to parse and use points. The points are returned in top level JSON array [x0,y0, x1, y1,…]

    This is just a simple bbox with angles and stretches, but we could make a bounding box which actually followed the spikes on the sword, nice feature Scirra!

    The yellow / pink / blue box is a C3 Sprite w/ mesh points.

  • Add SpineBBoxGetPoly expression returns poly points in JSON format of named slot/bounding box attachment. Use with C3 Spine Mesh to create a very accurate Bounding Box in C3.

    SpineBBoxGetPoly expression returns poly points in JSON format array of named slot/bounding box attachment. Use C3 JSON object to parse and use points. The points are returned in top level JSON array [x0,y0, x1, y1,…]

  • Release 1.17.0 Add debug property, SpineBBoxCenterX,Y expressions. UpdateBBoxes action.

    Bounding Box Attachment

    - SpineBBoxCenterX, SpineBBoxCenterY espressions give the average of the named slot/bbox polygon points. Useful for attaching C3 Sprite object / collision box to the center of the Bounding Box.

    - The UpdateBBoxes updates the bounding box to the current point in the animation. It should be done just once per tick per instance, before the SpineBBoxCenterX/Y expressions are used.

  • I have been working with colyseus.io/, websocket based. So far it's been good. I am making an authoritative server using it.

    There is a C3 client plugin for it.

  • FYI for any following this, Ashley has fixed this and the fix will be in the beta release (after r219-2.)

  • Ashley

    I did an experiment, it looks like the physics behavior collision box is not getting updated as a collision poly changes with updates to mesh points. I created an issue below w/ example project.

    github.com/Scirra/Construct-3-bugs/issues/4269

    For other collisions like between 8-dir behavior and solid, the collision box is updated.

  • Thanks Ashley for the info. I’ll keep testing and if it’s still not working for me, I will post to the github issue site with a sample project.

  • First, thanks for the new Mesh ACEs for Sprite, it will definitely prove useful for new visual effects!

    In experimenting with setting absolute x and y mesh points, it appears that the collision polygon does not expand outside of the original bbox in the editor. I am hoping that this will be changed in the future. I do see the 'new' bbox is changed in the debug preview (to be larger than the original bbox), but the collision poly does not seem to also grow beyond the original bbox size.

    Looking for feedback on the design intent (and if need I can file a bug report.)

    Large bbox is setting mesh points outside original bbox, but collision poly remains around the size of the original bbox (small box picture.)

  • Check for RGB match (or close enough match.)

    Say your color is MatchR, MatchG, MatchB

    Color at a point is:

    pointR = DrawingCanvas.SnapshotRedAt(loopindex("X")/DrawingCanvas.PixelScale,loopindex("Y")/DrawingCanvas.PixelScale)

    pointG = DrawingCanvas.SnapshotGreenAt(loopindex("X")/DrawingCanvas.PixelScale,loopindex("Y")/DrawingCanvas.PixelScale)

    pointB = DrawingCanvas.SnapshotBlueAt(loopindex("X")/DrawingCanvas.PixelScale,loopindex("Y")/DrawingCanvas.PixelScale)

    How close is the point color to the match color:

    distance = sqrt((MatchR-pointR)^2 + (MatchG-pointG)^2 + (MatchB-pointB)^2)

    Check that distance is less than some threshold to find a match.

    Use the project debugger or browser.log to print the values or display all the above values to the screen, so you can get an understanding of the range of values in your project.

  • Release 1.16.2 Set Slot Color, Set Slot Dark Color. Apply Slot Color, Reset Slot Color. Set animation start (beginning, current time, current ratio). Set animation time/current ratio. Deprecate Set custom color attachment.

    For Dark Color to take effect, the slot must have 'Tint Black' enabled.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Did you look at the code I posted above? It shows how to translate color to tilemap.

  • I've done this with video before (and changed it into a tilemap which I could use for a platformer.) Basically what dop2000 said, paste video to canvas, take snapshot of canvas and translate color to tilemap for collisions. In my case I also did some 'chroma key' with threshold to make it a little easier to use.

    Here's an old template I used to play 'streams' of a mario video (there's more events than you need just for the video, because I was playing with some other ideas.) If you know JS, you can also do it in scripting and it will probably run a bit faster.

    Here's an example with a 'let's play', the green color is the tilemap w/o the video.

  • Congrats on the release!