void MaterialGeneratorNode::addOutput( const MaterialGeneratorNodeConnectorDesc& desc ) { MaterialGeneratorNodeConnectorAttachment* att(HENew(MaterialGeneratorNodeConnectorAttachment)(this, desc)); att->init(eNodeGraphNodeConnectorType_Output, desc.m_Id, desc.m_Name.c_str()); addAttachment(att); m_Outputs.add(att); }
bool RenderWidget::create(const bool show) { bool result(false); GRAPHICS->registerWindow(this); if (Window::create(show)) { GRAPHICS->setActiveWindow(this); m_WindowRect.x = x(); m_WindowRect.y = y(); m_WindowRect.width = width(); m_WindowRect.height = height(); result = true; CONTROLS->registerInputForWindow(getHandle(), HENew(he::io::Keyboard)(), HENew(he::io::Mouse)()); } return result; }
void PhysicsRagdoll::addBodyPart(PhysicsDynamicActor** ppActor, const BodyPart& part, const PhysicsMaterial& material, uint32 collisionGroup, uint32 collisionGroupAgainst) { (*ppActor) = HENew(PhysicsDynamicActor)(mat44::createTranslation(m_StartPosition) * part.bonePose); PHYSICS->getScene()->removeActor(*(*ppActor)->getInternalActor()); m_Aggregate->addActor(*(*ppActor)->getInternalActor()); static_cast<physx::PxRigidDynamic*>((*ppActor)->getInternalActor())->setSolverIterationCounts(8, 2); PhysicsCapsuleShape pelvisShape(part.radius / 2.0f, part.length); (*ppActor)->addShape(&pelvisShape, material, part.mass, collisionGroup, collisionGroupAgainst, part.capsulePose); }
void MainGame::init() { he::GlobalSettings* const globalSettings(he::GlobalSettings::getInstance()); globalSettings->load(he::Path("settings.cfg")); globalSettings->save(he::Path("settings.cfg")); m_View = GRAPHICS->createView(); m_Window = GRAPHICS->createWindow(); m_Window->setResizable(true); m_Window->setVSync(true); m_Window->setWindowDimension(1280, 720); m_Window->setWindowTitle("HappyThijsTest"); he::eventCallback0<void> quitHandler(std::bind(&he::HappyEngine::quit, HAPPYENGINE)); m_Window->Closed += quitHandler; m_Window->create(true); he::gfx::CameraSettings cameraSettings; cameraSettings.setRelativeViewport(he::RectF(0, 0, 1.0f, 1.0f)); m_Renderer = HENew(he::gfx::Renderer2D); m_View->addRenderPlugin(m_Renderer); m_View->setWindow(m_Window); m_View->init(cameraSettings); m_Renderer->attachToRender(this); m_FpsGraph = HENew(he::tools::FPSGraph)(); m_FpsGraph->setType(he::tools::FPSGraph::Type_TextOnly); m_Renderer->attachToRender(m_FpsGraph); m_AStar = HENew(ht::AStar)(); m_AStar->init(); CONSOLE->attachToRenderer(m_Renderer); PROFILER->attachToRenderer(m_Renderer); }
void WebListener::executeFunction(const he::String& object, const he::String& method, const Awesomium::JSArray& args) { // global js object for global functions he::String objName("window"); Awesomium::WebString aweMethod = Awesomium::WSLit(method.c_str()); if (object != "window" && object != "") { objName = object; // check if jsobject already exists auto it(std::find_if(m_Objects.cbegin(), m_Objects.cend(), [&objName](JSObject* obj) { return obj->getObjectName() == objName; })); bool objectExists(it != m_Objects.cend()); // create new js object if it doesn't already exists if (objectExists == false) { Awesomium::JSValue val = m_WebView->CreateGlobalJavascriptObject( Awesomium::WSLit(objName.c_str())); Awesomium::JSObject& obj = val.ToObject(); JSObject* jsObject(HENew(JSObject)(obj, objName)); m_Objects.add(jsObject); jsObject->executeFunction(aweMethod, args); } else { (*it)->executeFunction(aweMethod, args); }; } else { Awesomium::JSValue window( m_WebView->ExecuteJavascriptWithResult( Awesomium::WSLit("window"), Awesomium::WSLit(""))); Awesomium::JSObject& obj = window.ToObject(); obj.Invoke(aweMethod, args); } }
/* CONSTRUCTOR - DESTRUCTOR */ Scrollbar::Scrollbar(const vec2& pos, const vec2& size, float heightScrollbar) : m_Hitregion(nullptr), m_Pos(pos), m_Size(size), m_BarPos(0.0f), m_Dragging(false), m_PreviousMousePos(0,0), m_ScrollbarHeight(heightScrollbar) { m_Hitregion = HENew(Hitregion)( vec2(pos.x + size.x/2, pos.y + (heightScrollbar/2)), vec2(size.x - 2, heightScrollbar)); m_Colors["background"] = Color(0.6f,0.6f,0.6f); m_Colors["scrollbar"] = Color(0.4f,0.4f,0.4f); m_Colors["edge"] = Color(0.2f,0.2f,0.2f); SpriteCreator* const cr(GUI->getSpriteCreator()); m_Sprites[0] = cr->createSprite(m_Size, Sprite::UNIFORM_SCALE); m_Sprites[1] = cr->createSprite(vec2(m_Size.x, heightScrollbar), Sprite::UNIFORM_SCALE); renderSprites(); }
PLUGIN_EXPORT he::pl::IPlugin* createPlugin() { return HENew(ht::HappyPluginTestMain)(); }
MRESULT mainwmCommand( HWND hwnd, MPARAM mp1, MPARAM mp2 ) { switch (SHORT1FROMMP(mp1)) { case IDM_NEW: HENew(hwnd); break; case IDM_OPEN: HEOpen(hwnd); // WinSetFocus(HWND_DESKTOP,hwndHMLE); break; case IDM_IMPORT: HEImport(hwnd); break; case IDM_RELOAD: if (WinSendMsg(hwndHMLE,HMLM_QUERYCHANGED,0L,0L)) { if (WinMessageBox( HWND_DESKTOP,hwnd, "Document changed. Discard it?","Caution", 0,MB_YESNO|MB_DEFBUTTON2|MB_WARNING|MB_MOVEABLE)==MBID_NO) return 0L; } HEReloadAfterChangeHanCode(hwnd); break; case IDM_QUICKRELOAD: HEReloadAfterChangeHanCode(hwnd); break; case IDM_SAVE: HESave(hwnd); // WinSetFocus(HWND_DESKTOP,hwndHMLE); break; case IDM_SAVEAS: HESaveAs(hwnd); break; case IDM_EXIT: HEExit(hwnd); // WinSetFocus(HWND_DESKTOP,hwndHMLE); // return 0L; break; case IDM_ABOUT: HEAbout(hwnd); break; case IDM_OPTIONS: HEOptions(hwnd); break; case IDM_COPY: WinSendMsg(hwndHMLE,HMLM_COPY,0,0); // WinSetFocus(HWND_DESKTOP,hwndHMLE); break; case IDM_CUT: WinSendMsg(hwndHMLE,HMLM_CUT,0,0); // WinSetFocus(HWND_DESKTOP,hwndHMLE); break; case IDM_PASTE: WinSendMsg(hwndHMLE,HMLM_PASTE,0,0); break; case IDM_CLEAR: WinSendMsg(hwndHMLE,HMLM_CLEAR,0,0); // WinSetFocus(HWND_DESKTOP,hwndHMLE); break; case IDM_FIND: HEFind(hwnd); break; case IDM_SELECTALL: HESelectAll(hwnd); break; case IDM_SPECIALCHARS: HESpecialChars( hwnd ); break; case IDM_HANJA: HEHanja( hwnd ); break; } // switch Control if( SHORT1FROMMP( mp2 ) == CMDSRC_PUSHBUTTON ) WinSetFocus(HWND_DESKTOP,hwndHMLE); WinPostMsg( hwndHMLE, HMLM_REFRESH, 0, 0 ); return MRFROMLONG(0L); }
void MainGame::init() { he::GlobalSettings* const globalSettings(he::GlobalSettings::getInstance()); he::Path path(he::Path::getBinPath().str() + "settings.cfg"); globalSettings->load(path); globalSettings->save(path); he::gfx::CameraSettings cameraSettings; cameraSettings.setRelativeViewport(he::RectF(0, 0, 1, 1)); he::gfx::GraphicsEngine* const graphicsEngine(GRAPHICS); m_Window = graphicsEngine->createWindow(); const bool oculus(globalSettings->getRenderSettings().stereoSetting == he::gfx::StereoSetting_OculusRift); m_Window->setResizable(true); m_Window->setVSync(false); m_Window->setWindowDimension(1280, 800); m_Window->setWindowTitle("HappyPluginTest"); m_Window->setFullscreen(false); m_Window->setOculusRiftEnabled(oculus); he::eventCallback0<void> quitHandler(std::bind(&he::HappyEngine::quit, HAPPYENGINE)); m_Window->Closed += quitHandler; m_Window->create(true); he::ge::EntityManager* const entityMan(he::ge::EntityManager::getInstance()); entityMan->installComponentFactory(HENew(he::ge::EngineEntityComponentFactory)()); entityMan->init(); m_PluginLoader = HENew(he::pl::PluginLoader)(); char* plugins[2] = { "HappyPluginTest", "HappyPlugin2DTest" }; he::HappyMessageBox::Button msgResult( he::HappyMessageBox::showExt("Choose plugin", "Please select your plugin", he::HappyMessageBox::Icon_Info, plugins[0], plugins[1], "Cancel")); const char* chosenPlugin(nullptr); switch (msgResult) { case he::HappyMessageBox::Button_Button1: chosenPlugin = plugins[0]; break; case he::HappyMessageBox::Button_Button2: chosenPlugin = plugins[1]; break; default: break; } if (chosenPlugin) { m_Plugin = m_PluginLoader->loadPlugin(he::Path::getBinPath(), chosenPlugin); if (m_Plugin != nullptr) { m_Plugin->init(m_Window, he::RectF(0, 0, 1.0f, 1.0f)); m_Plugin->onLoadLevel(he::Path("")); m_View = graphicsEngine->createView(); m_View->setWindow(m_Window); m_DebugRenderer = HENew(he::gfx::Renderer2D)(); m_View->addRenderPlugin(m_DebugRenderer); m_View->init(cameraSettings); m_View->setCamera(m_Plugin->getActiveCamera()); PROFILER->attachToRenderer(m_DebugRenderer); CONSOLE->attachToRenderer(m_DebugRenderer); CONSOLE->registerCmd([&]() { m_PluginLoader->reloadPlugin(m_Plugin); }, "reloadPlugin"); m_FpsGraph = HENew(he::tools::FPSGraph)(oculus? 3.0f : 1.0f); m_FpsGraph->setPos(he::vec2(5, 5)); m_FpsGraph->setType(he::tools::FPSGraph::Type_Full); addToTickList(m_FpsGraph); m_DebugRenderer->attachToRender(m_FpsGraph); m_DebugRenderer->attachToRender(this); } else { HAPPYENGINE->quit(); } } else { HAPPYENGINE->quit(); } }
void SkyBox::load( const he::String& asset ) { HE_ASSERT(m_Drawable == nullptr, "Skybox is loaded twice!"); m_Drawable = HENew(Drawable)(); m_Drawable->setLocalScale(vec3(1000000000)); // bounds must be huge ////////////////////////////////////////////////////////////////////////// /// Load Model ////////////////////////////////////////////////////////////////////////// ModelMesh* const cube( ResourceFactory<gfx::ModelMesh>::getInstance()->get(ResourceFactory<gfx::ModelMesh>::getInstance()->create())); cube->setName(he::String("skybox-") + asset); he::PrimitiveList<vec3> vertices(8); vertices.add(vec3(-1, 1, -1)); vertices.add(vec3( 1, 1, -1)); vertices.add(vec3(-1, -1, -1)); vertices.add(vec3( 1, -1, -1)); vertices.add(vec3(-1, 1, 1)); vertices.add(vec3( 1, 1, 1)); vertices.add(vec3(-1, -1, 1)); vertices.add(vec3( 1, -1, 1)); he::PrimitiveList<uint16> indices(36); indices.add(0); indices.add(1); indices.add(2); //front indices.add(1); indices.add(3); indices.add(2); indices.add(5); indices.add(4); indices.add(7); //back indices.add(4); indices.add(6); indices.add(7); indices.add(4); indices.add(0); indices.add(6); //left indices.add(0); indices.add(2); indices.add(6); indices.add(1); indices.add(5); indices.add(3); //right indices.add(5); indices.add(7); indices.add(3); indices.add(4); indices.add(5); indices.add(0); //top indices.add(5); indices.add(1); indices.add(0); indices.add(3); indices.add(7); indices.add(2); //bottom indices.add(7); indices.add(6); indices.add(2); VertexLayout layout; layout.addElement(VertexElement(eShaderAttribute_Position, eShaderAttributeType_Float, eShaderAttributeTypeComponents_3, 0)); cube->init(layout, MeshDrawMode_Triangles); cube->setVertices(&vertices[0], static_cast<uint32>(vertices.size()), MeshUsage_Static, false); cube->setIndices(&indices[0], static_cast<uint32>(indices.size()), IndexStride_UShort, MeshUsage_Static); cube->setLoaded(eLoadResult_Success); m_Drawable->setModelMesh(cube); cube->release(); Material* const material(CONTENT->loadMaterial("engine/sky.material")); m_Drawable->setMaterial(material); material->release(); const int8 cubeMap(m_Drawable->getMaterial()->findParameter(HEFS::strcubeMap)); if (cubeMap >= 0) { const TextureCube* cube(CONTENT->asyncLoadTextureCube(asset)); m_Drawable->getMaterial()->getParameter(cubeMap).setTextureCube(cube); cube->release(); } }
RenderWidget::RenderWidget(QWidget *parent): QGLWidget(HENew(GLContextQT)(QGLFormat::defaultFormat()), parent, Sandbox::getInstance()->getSharedWidget()) { setAutoBufferSwap(false); }