//
//  ScreenG4.h
//  MetarealEngine
//
//  Created by David Van Brink on 2/21/15.
//  Copyright (c) 2015 David Van Brink. All rights reserved.
//

#ifndef __MetarealEngine__ScreenG4__
#define __MetarealEngine__ScreenG4__

#include "Screens.h"
#include "Me.h"

#endif /* defined(__MetarealEngine__ScreenG4__) */



class ScreenG4 : public Screen
{
public:
    
    MeIMaterial *materialOpaque;
    MeIMaterial *materialTransparent;
    
    std::map<int, MePart *> partsById;
    std::map<int, MeCollisionVolume2 *> collisionVolumesByPartId;

    ScreenG4();
    virtual void begin();
    virtual void keyDown(int k);
    virtual void keyUp(int k);
    virtual void tick();
    virtual void partClicked(int partId);
    std::string getName() override { return "ScreenG4"; }

    MeGaud *starGaud;
    MeMatrix4 ma;

    MeVolumeWorld *vw;
    MeCollisionVolumeWorld2 *cvw;
    MeCollisionVolume2 *cameraCv;
    std::vector<MeCollisionVolume2 *> walls;
    
    void addWallBlock(MeVec3 center, MeVec3 radius);
    
    void rememberPartId(MePart *part, MeCollisionVolume2 *cv = NULL);
};
