Giter Site home page Giter Site logo

Comments (5)

JMLX42 avatar JMLX42 commented on July 19, 2024

Hello and thank you for your report.

Matrix4x4.toString can be called implicitly when uaing the Matrix4x4 object
as a key in an Object I guess.

But I don't understand how the latest commits could have an impact on this.
Plus if it is sone in the CameraController it's likely to be done just once
per frame max which should not affect performances at all...

Still, it should not happen indeed.

from minko.

JMLX42 avatar JMLX42 commented on July 19, 2024

After reading the call stack you posted, the problem is in a closure
function. You can see this because it is called anonymous.

I'm pretty sure there isn't a single closure in minko so this must be in
your own code.

Please confirm by closing this issue. Then if you need further help on
this, please post on Answers:

http://answers.aerys.in

from minko.

stevewoolcock avatar stevewoolcock commented on July 19, 2024

Hmm, I'm pretty sure it's not my code. The only thing I changed in the code base was to pull the latest version of /dev, then update my Effect classes to work with the new API. I never access Matrix4x4.toString() in any of my code. I should note that this problem still occurs even if I use the built in effects (PhongEffect, etc) and none of my own.

Edit
The following example should illustrate that the problem lies within the Minko core. It creates 400 boxes, which will append a rotation each frame. If you check the function call list in Scout, you'll see the call to Matrix4x4.toString() is still there. The anonymous/closure Function call appears to come from within the internals of Flash Player.

package
{
    import aerys.minko.render.Effect;
    import aerys.minko.render.geometry.primitive.CubeGeometry;
    import aerys.minko.render.material.basic.BasicMaterial;
    import aerys.minko.render.Viewport;
    import aerys.minko.scene.controller.camera.ArcBallController;
    import aerys.minko.scene.node.camera.Camera;
    import aerys.minko.scene.node.Mesh;
    import aerys.minko.scene.node.Scene;
    import aerys.minko.type.math.Matrix4x4;
    import aerys.minko.type.math.Vector4;
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {
        private var scene:Scene;
        private var camera:Camera;
        private var viewport:Viewport;
        private var boxes:Array;

        public function Main():void 
        {
            viewport = new Viewport();
            addChild(viewport);

            camera = new Camera();
            camera.transform.translationZ = -10;

            var control:ArcBallController = new ArcBallController();
            control.bindDefaultControls(stage);
            camera.addController(control);

            scene = new Scene();
            scene.addChild(camera);

            boxes = [];
            for (var i:int = 0; i < 400; ++i)
            {
                var box:Mesh = new Mesh(CubeGeometry.cubeGeometry, new BasicMaterial( { diffuseColor: 0x222222FF } ));
                scene.addChild(box);
                boxes[i] = box;
            }

            stage.addEventListener(Event.ENTER_FRAME, update);
        }

        private function update(e:Event):void
        {
            for (var i:int = 0; i < boxes.length; ++i)
            {
                var box:Mesh = Mesh(boxes[i]);
                box.transform.appendRotation(0.01, Vector4.Y_AXIS);
            }

            scene.render(viewport);
        }
    }
}

from minko.

JMLX42 avatar JMLX42 commented on July 19, 2024
The anonymous/closure Function call appears to come from within the internals of Flash Player.

That would indicate that the toString() method is indeed called because the Matrix4x4 is used as a key in an Object.

from minko.

stevewoolcock avatar stevewoolcock commented on July 19, 2024

That would make sense, although this wasn't happening before the commit I listed above, so something must have changed.

Edit
I see 8df8c10 has fixed this issue. Keep up the good work guys!

from minko.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.