本文整理汇总了C++中Water类的典型用法代码示例。如果您正苦于以下问题:C++ Water类的具体用法?C++ Water怎么用?C++ Water使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Water类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: new
Water *Water::create(const std::string& fileName, const std::string& waveFileOne, const std::string& waveFileTwo, const cocos2d::Size& size, float hSpeed, float vSpeed, float saturation)
{
Water *water = new (std::nothrow) Water();
if (water && water->initWithFile(fileName, cocos2d::Rect(0, 0, size.width, size.height)))
{
water->autorelease();
auto TexCache = cocos2d::Director::getInstance()->getTextureCache();
auto wave2 = TexCache->addImage(waveFileOne);
auto wave1 = TexCache->addImage(waveFileTwo);
cocos2d::Texture2D::TexParams wave1TexParams = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT };
cocos2d::Texture2D::TexParams wave2TexParams = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT };
wave1->setTexParameters(wave1TexParams);
wave2->setTexParameters(wave2TexParams);
auto glprogram = cocos2d::GLProgram::createWithFilenames("shader3D/water.vsh", "shader3D/water.fsh");
auto glprogramstate = cocos2d::GLProgramState::getOrCreateWithGLProgram(glprogram);
water->setGLProgramState(glprogramstate);
glprogramstate->setUniformTexture("u_wave1", wave1);
glprogramstate->setUniformTexture("u_wave2", wave2);
glprogramstate->setUniformFloat("saturateValue", saturation);
glprogramstate->setUniformFloat("verticalSpeed", vSpeed);
glprogramstate->setUniformFloat("horizontalSpeed", hSpeed);
return water;
}
CC_SAFE_DELETE(water);
return nullptr;
}
示例2: Water
// --- Methods inherited from ReferenceTarget ---
// This method is called to have the plug-in clone itself.
RefTargetHandle Water::Clone(RemapDir &remap) {
// Create a new instance of the plug-in class
Water *newWater = new Water();
// Copy superclass stuff
*((MtlBase *)newWater) = *((MtlBase *)this);
// Clone the items we reference
newWater->ReplaceReference(0, remap.CloneRef(xyzGen));
newWater->ReplaceReference(1, remap.CloneRef(pblock));
newWater->col[0] = col[0];
newWater->col[1] = col[1];
newWater->count = count;
newWater->size = size;
newWater->minperiod = minperiod;
newWater->maxperiod = maxperiod;
newWater->amp = amp;
newWater->phase = phase;
newWater->type = type;
newWater->randSeed = randSeed;
newWater->texValidity.SetEmpty();
for (int i = 0; i < NUM_SUB_TEXMAPS; i++) {
newWater->subTex[i] = NULL;
newWater->mapOn[i] = mapOn[i];
if (subTex[i])
newWater->ReplaceReference(i+2, remap.CloneRef(subTex[i]));
}
BaseClone(this, newWater, remap);
// Return the new cloned texture
return (RefTargetHandle)newWater;
}
示例3: loadWater
void World::loadWater(int x, int y) {
cout << "loading water" << endl;
//copy the objects_0 array into a new array
vector<Water> water = waterObjects;
//clear the original object array
waterObjects.clear();
//loop through the new object array and then check if these objects are still in the new region
for (int i = 0; i < water.size(); i++) {
//if the objects are in the same region, put them back in the objects_0 array
if (sameRegion(water.at(i).position_x / 32, water.at(i).position_y / 32, x, y)) {
waterObjects.push_back(water.at(i));
} else {
//else remove the node from the game (deleting the model from memory)
water.at(i).remove();
}
}
//loop through the object index array
for (int i = 0; i < water_index.size(); i++) {
//if the object is in the same region then load the model
if (sameRegion(water_index.at(i).x / 32, water_index.at(i).y / 32, x, y)) {
//extract the object data
WaterData data = water_index.at(i);
bool model_exists = false;
//DON'T LOAD OBJECTS IF THEY ARE ALREADY LOADED
for (auto &j : waterObjects) {
if ((j.position_x == data.x) && (j.position_y == data.y)) {
model_exists = true;
break;
}
}
//if the model is not already in the array, load it!
if (!model_exists) {
Water object;
//loading the object model
if (data.id == 0)
object.addWater(data.x, data.y, data.h, data.w, data.l);
else if (data.id == 1)
object.addLava(data.x, data.y, data.h, data.w, data.l);
//add it to the objects_0 array
waterObjects.push_back(object);
}
}
}
Client::sceneManager->getMeshCache()->clearUnusedMeshes();
}
示例4: onLostDevice
void WaterDemo::onLostDevice()
{
mGfxStats->onLostDevice();
mSky->onLostDevice();
mWater->onLostDevice();
HR(mFX->OnLostDevice());
}
示例5: Water
Water* Water::create()
{
//Create is virtual function from CCSprite
Water *pSprite = new Water();
if (pSprite && pSprite->initWithFile("water_tile.png"))
{
// Set to autorelease
pSprite->autorelease();
//assign your attributes here!!
return pSprite;
}
CC_SAFE_DELETE(pSprite);
return NULL;
}
示例6: updateScene
void PropsDemo::updateScene(float dt)
{
mTime += dt;
mGfxStats->update(dt);
gDInput->poll();
// Fix camera to ground or free flying camera?
if( gDInput->keyDown(DIK_N) )
mFreeCamera = false;
if( gDInput->keyDown(DIK_M) )
mFreeCamera = true;
if( mFreeCamera )
{
gCamera->update(dt, 0, 0);
}
else
{
gCamera->update(dt, mTerrain, 2.5f);
}
mWater->update(dt);
}
示例7: onLostDevice
void PropsDemo::onLostDevice()
{
mGfxStats->onLostDevice();
mTerrain->onLostDevice();
mWater->onLostDevice();
HR(mFX->OnLostDevice());
HR(mGrassFX->OnLostDevice());
}
示例8: updateScene
void WaterDemo::updateScene(float dt)
{
mGfxStats->update(dt);
gDInput->poll();
gCamera->update(dt, 0, 0);
mWater->update(dt);
}
示例9: scheduleUpdate
void Level::init() {
scheduleUpdate();
leftDelta = new float[8];
rightDelta = new float[8];
waterBlock = CCArray::create();
waterBlock->retain();
for(int i = 0; i < 8; i++) {
Water *w = Water::create();
w->setPosition(ccp(100+i*50, 150));
addChild(w);
waterBlock->addObject(w);
}
Water *w = (Water *)waterBlock->objectAtIndex(0);
//w->setPosition(ccp(100, 100));
w->velocity = {0, 100*M_PI};
}
示例10:
bool Ned3DObjectManager::interactPlaneWater(PlaneObject &plane, WaterObject &water)
{
Water *pWater = water.getWater();
if(pWater == NULL) return false;
// Test for plane collision with water
Vector3 planePos = plane.getPosition();
EulerAngles planeOrient = plane.getOrientation();
Vector3 disp = planePos - disp;
RotationMatrix planeMatrix;
planeMatrix.setup(plane.getOrientation()); // get plane's orientation
float planeBottom = plane.getBoundingBox().min.y;
float waterHeight = pWater->getWaterHeight();
if(plane.isPlaneAlive() && planeBottom < waterHeight)
{ //collision
Vector3 viewVector = planeMatrix.objectToInertial(Vector3(0,0,1));
plane.killPlane();
plane.setSpeed(0.0f);
planePos += 2.0f * viewVector;
planeOrient.pitch = kPi / 4.0f;
planeOrient.bank = kPi / 4.0f;
plane.setOrientation(planeOrient);
plane.setPPosition(planePos);
int partHndl = gParticle.createSystem("planeexplosion");
gParticle.setSystemPos(partHndl, plane.getPosition());
int boomHndl = gSoundManager.requestSoundHandle("Boom.wav");
int boomInst = gSoundManager.requestInstance(boomHndl);
if(boomInst != SoundManager::NOINSTANCE)
{
gSoundManager.setPosition(boomHndl,boomInst,plane.getPosition());
gSoundManager.play(boomHndl,boomInst);
gSoundManager.releaseInstance(boomHndl,boomInst);
}
return true;
}
return false;
}
示例11: onResetDevice
void WaterDemo::onResetDevice()
{
mGfxStats->onResetDevice();
mSky->onResetDevice();
mWater->onResetDevice();
HR(mFX->OnResetDevice());
// The aspect ratio depends on the backbuffer dimensions, which can
// possibly change after a reset. So rebuild the projection matrix.
float w = (float)md3dPP.BackBufferWidth;
float h = (float)md3dPP.BackBufferHeight;
gCamera->setLens(D3DX_PI * 0.25f, w/h, 1.0f, 5000.0f);
}
示例12: HR
void WaterDemo::drawScene()
{
HR(gd3dDevice->BeginScene());
mSky->draw();
HR(mFX->SetValue(mhLight, &mLight, sizeof(DirLight)));
HR(mFX->SetMatrix(mhWVP, &(mSceneWorld*gCamera->viewProj())));
HR(mFX->SetValue(mhEyePosW, &gCamera->pos(), sizeof(D3DXVECTOR3)));
UINT numPasses = 0;
HR(mFX->Begin(&numPasses, 0));
HR(mFX->BeginPass(0));
for(UINT j = 0; j < mSceneMtrls.size(); ++j)
{
HR(mFX->SetValue(mhMtrl, &mSceneMtrls[j], sizeof(Mtrl)));
// If there is a texture, then use.
if(mSceneTextures[j] != 0)
{
HR(mFX->SetTexture(mhTex, mSceneTextures[j]));
}
// But if not, then set a pure white texture. When the texture color
// is multiplied by the color from lighting, it is like multiplying by
// 1 and won't change the color from lighting.
else
{
HR(mFX->SetTexture(mhTex, mWhiteTex));
}
HR(mFX->SetTexture(mhNormalMap, mSceneNormalMaps[j]));
HR(mFX->CommitChanges());
HR(mSceneMesh->DrawSubset(j));
}
HR(mFX->EndPass());
HR(mFX->End());
// Draw alpha blended object last.
mWater->draw();
mGfxStats->display();
HR(gd3dDevice->EndScene());
// Present the backbuffer.
HR(gd3dDevice->Present(0, 0, 0, 0));
}
示例13: openRankine
int openRankine(int np, void* p) {
double etap = 0.6; // pump isentropic efficiency
double etat = 0.8; // turbine isentropic efficiency
double phigh = 8.0e5; // high pressure
Water w;
// begin with water at 300 K, 1 atm
w.setState_TP(300.0, OneAtm);
saveState(w,"1");
// pump water to 0.8 MPa
w.setState_SP(s["1"], phigh);
saveState(w,"2s");
double h2 = (h["2s"] - h["1"])/etap + h["1"];
w.setState_HP(h2, phigh);
saveState(w,"2");
// heat to saturated vapor
w.setState_Psat(phigh, 1.0);
saveState(w,"3");
// expand to 1 atm
w.setState_SP(s["3"], OneAtm);
saveState(w,"4s");
double work_s = h["3"] - h["4s"];
double work = etat*work_s;
w.setState_HP(h["3"] - work, OneAtm);
saveState(w,"4");
printStates();
double heat_in = h["3"] - h["2"];
double efficiency = work/heat_in;
cout << "efficiency = " << efficiency << endl;
#ifdef WIN32
#ifndef CXX_DEMO
cout << "press any key to end" << endl;
char ch;
cin >> ch;
#endif
#endif
return 0;
}
示例14: switch
INT_PTR WaterDlgProc::DlgProc(
TimeValue t,IParamMap2 *map,HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch (msg) {
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_SWAP:
{
water = (Water*)map->GetParamBlock()->GetOwner();
water->SwapInputs();
}
break;
}
break;
}
return FALSE;
}
示例15: setup
static void setup (void)
{
glClearColor( 0.8,0.8,0.8,1.0 );
// Load textures
init_texture("Textures\\cylinderWall.bmp", CYLINDER_WALL, textures);
init_texture("Textures\\cylinderCap.bmp", CYLINDER_CAP, textures);
init_texture("Textures\\Front.bmp", BUILD_FRONT, textures);
init_texture("Textures\\BuildRight.bmp", BUILD_RIGHT, textures);
init_texture("Textures\\Concrete.bmp", CONCRETE, textures);
init_texture("Textures\\Skybox.bmp", SKYBOX, textures);
// Cylinder building
cylinder.initialize(CYLINDER_WALL, CYLINDER_CAP);
step1.initialize(CONCRETE, CYLINDER_CAP);
step2.initialize(CONCRETE, CYLINDER_CAP);
// Rectangle buildings
build_front.initialize(BUILD_FRONT, BUILD_FRONT);
build_right.initialize(BUILD_RIGHT, CONCRETE);
foundation.initialize(CONCRETE, CONCRETE);
// Water
water.build();
// Sky
sky.initialize(SKYBOX);
// Directional light
sun.init();
// Spot light
spLight.init();
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}