Exemplo n.º 1
0
    void InitializeGeometry()
    {
        OBJResource<Vertex4> resource ("Models\\Sphere.obj");
        mMeshLibrary.LoadMesh(&mCubeMesh, mRenderer, resource);

        SampleVertex qVertices[4];
        qVertices[0].mPosition	= { -1.0f, 1.0f, 0.0f };
        qVertices[0].mUV		= { 0.0f, 0.0f};

        qVertices[1].mPosition	= { 1.0f, 1.0f, 0.0f };
        qVertices[1].mUV		= { 1.0f, 0.0f};

        qVertices[2].mPosition	= { 1.0f, -1.0f, 0.0f };
        qVertices[2].mUV		= { 1.0f, 1.0f };

        qVertices[3].mPosition	= { -1.0f, -1.0f, 0.0f };
        qVertices[3].mUV		= { 0.0f, 1.0f};

        uint16_t qIndices[6];
        qIndices[0] = 0;
        qIndices[1] = 1;
        qIndices[2] = 2;

        qIndices[3] = 2;
        qIndices[4] = 3;
        qIndices[5] = 0;

        mMeshLibrary.NewMesh(&mQuadMesh, mRenderer);
        mRenderer->VSetStaticMeshVertexBuffer(mQuadMesh, qVertices, sizeof(SampleVertex) * 4, sizeof(SampleVertex));
        mRenderer->VSetStaticMeshIndexBuffer(mQuadMesh, qIndices, 6);

        mSphereColliders = reinterpret_cast<SphereCollider*>(mAllocator.Allocate(sizeof(SphereCollider) * NODE_COUNT, alignof(SphereCollider), 0));

        for (int i = 0; i < NODE_COUNT; i++) {
            mSceneNodes[i].mTransform.SetPosition((float)(rand() % 10) - 5.0f, (float)(rand() % 10) - 5.0f, (float)(rand() % 5));
            mSceneNodes[i].mColor = { SATURATE_RANDOM, SATURATE_RANDOM, SATURATE_RANDOM, 1.0f };
            mSceneNodes[i].mMesh = mCubeMesh;
            mSceneNodes[i].mCollider = &mSphereColliders[i];
            mSceneNodes[i].mCollider->origin = mSceneNodes[i].mTransform.GetPosition();
            mSceneNodes[i].mCollider->radius = 0.5f;
        }

        mCamera.SetPosition( 0.0f, 0.0, -10.0f );
    }