void ShellBall::Refresh(const Vector3& StartPos, const Vector3& JumpVec, bool IsEnemyBall){ SetUpdateActive(true); SetDrawActive(true); m_StartPos = StartPos; m_JumpVec = JumpVec; m_InStartTime = 0; m_IsEnemyBall = IsEnemyBall; //Transform取得 auto Ptr = GetComponent<Transform>(); Ptr->SetScale(m_NowScale); Ptr->SetPosition(m_StartPos); //描画コンポーネント auto PtrDraw = GetComponent<PNTStaticDraw>(); if (m_IsEnemyBall){ PtrDraw->SetDiffuse(Color4(1.0f, 1.0f, 0, 1.0f)); } else{ PtrDraw->SetDiffuse(Color4(0.0f, 1.0f, 0, 1.0f)); } //衝突判定を呼び出す auto PtrCollision = GetComponent<CollisionSphere>(); //衝突は無効にしておく PtrCollision->SetUpdateActive(false); //重力を取り出す auto PtrGravity = GetComponent<Gravity>(); //ジャンプスタート PtrGravity->StartJump(m_JumpVec); //今のステートをFiringStateに設定 m_StateMachine->SetCurrentState(FiringState::Instance()); //FiringStateの初期化実行を行う m_StateMachine->GetCurrentState()->Enter(GetThis<ShellBall>()); }
//**関数*************************************************************************** // 概要 : 状態変更 //********************************************************************************* void CObjButton::SetState(int nState) { m_nStatus = nState; // 状態に合わせてボタンの様子を変更 switch(m_nStatus) { case eButtonState::DEFAULT: SetDiffuse(220 , 220 , 220 , 255); break; case eButtonState::HOVER: SetDiffuse(255 , 255 , 255 , 255); break; case eButtonState::ACTIVE: SetDiffuse(255 , 255 , 255 , 255); break; case eButtonState::INACTIVE: SetDiffuse(55 , 55 , 55 , 255); break; default: // エラー break; } }
//色変更 void SeekObject::RedColorMotion(){ auto PtrDraw = AddComponent<BasicPNTDraw>(); if (m_IsRed){ PtrDraw->SetDiffuse(Color4(0.7f, 0.7f, 0.7f, 1.0f)); m_IsRed = false; } else{ PtrDraw->SetDiffuse(Color4(1.0f, 0, 0, 1.0f)); m_IsRed = true; } }
//初期化 void ShellBall::Create(){ //Transformだけは追加しなくても取得できる auto Ptr = GetComponent<Transform>(); Ptr->SetScale(m_NowScale); Ptr->SetRotation(0, 0, 0.0f); Ptr->SetPosition(m_StartPos); //衝突判定をつける auto PtrCollision = AddComponent<CollisionSphere>(); //衝突は無効にしておく PtrCollision->SetUpdateActive(false); //砲弾のグループを得る auto Group = GetStage()->GetSharedObjectGroup(L"ShellBallGroup"); //砲弾同士は衝突しないようにしておく PtrCollision->SetExcludeCollisionGroup(Group); //重力をつける auto PtrGravity = AddComponent<Gravity>(); //最下地点 PtrGravity->SetBaseY(0.125f); //ジャンプスタート PtrGravity->StartJump(m_JumpVec); //影の作成 auto ShadowPtr = AddComponent<Shadowmap>(); //影の形状 ShadowPtr->SetMeshResource(L"DEFAULT_SPHERE"); //描画コンポーネント auto PtrDraw = AddComponent<BasicPNTDraw>(); //メッシュの登録 PtrDraw->SetMeshResource(L"DEFAULT_SPHERE"); if (m_IsEnemyBall){ PtrDraw->SetDiffuse(Color4(1.0f, 1.0f, 0, 1.0f)); } else{ PtrDraw->SetDiffuse(Color4(0.0f, 1.0f, 0, 1.0f)); } //ステートマシンの構築 m_StateMachine = make_shared< StateMachine<ShellBall> >(GetThis<ShellBall>()); //最初のステートをFiringStateに設定 m_StateMachine->SetCurrentState(FiringState::Instance()); //FiringStateの初期化実行を行う m_StateMachine->GetCurrentState()->Enter(GetThis<ShellBall>()); }
Material::Material() { // Sets the default values for the material object SetDiffuse(0.0, 0.0, 0.0, 1.0); ambient[0] = 0.0; ambient[1] = 0.0; ambient[2] = 0.0; ambient[3] = 1.0; emission[0] = 0.0; emission[1] = 0.0; emission[2] = 0.0; emission[3] = 1.0; specular[0] = 0.0; specular[1] = 0.0; specular[2] = 0.0; specular[3] = 1.0; shininess = 127; black[0] = 0.0; black[1] = 0.0; black[2] = 0.0; black[3] = 1.0; TOName = 1; gotTexture = true; enabled = true; } // Constructor()
//爆発の開始 void ShellBall::ExplodeStartMotion(){ //Transform取得 auto Ptr = GetComponent<Transform>(); m_NowScale = Vector3(5.0f, 5.0f, 5.0f); Ptr->SetScale(m_NowScale); //描画コンポーネント auto PtrDraw = GetComponent<PNTStaticDraw>(); //爆発中の色 if (m_IsEnemyBall){ PtrDraw->SetDiffuse(Color4(1.0f, 0.0f, 0, 1.0f)); } else{ PtrDraw->SetDiffuse(Color4(0.0f, 0.0f, 1.0f, 1.0f)); } }
//初期化 void ShellBall::Create(){ //Transformだけは追加しなくても取得できる auto Ptr = GetComponent<Transform>(); Ptr->SetScale(m_NowScale); Ptr->SetRotation(0, 0, 0.0f); Ptr->SetPosition(m_StartPos); //重力をつける auto PtrGravity = AddComponent<Gravity>(); //最下地点 PtrGravity->SetBaseY(0.125f); //ジャンプスタート PtrGravity->StartJump(m_JumpVec); //影の作成 auto ShadowPtr = AddComponent<Shadowmap>(); //影の形状 ShadowPtr->SetMeshResource(L"DEFAULT_SPHERE"); //描画コンポーネント auto PtrDraw = AddComponent<BasicPNTDraw>(); //メッシュの登録 PtrDraw->SetMeshResource(L"DEFAULT_SPHERE"); PtrDraw->SetDiffuse(Color4(1.0f, 1.0f, 0, 1.0f)); //ステートマシンの構築 m_StateMachine = make_shared< StateMachine<ShellBall> >(GetThis<ShellBall>()); //最初のステートをFiringStateに設定 m_StateMachine->SetCurrentState(FiringState::Instance()); //FiringStateの初期化実行を行う m_StateMachine->GetCurrentState()->Enter(GetThis<ShellBall>()); }
Light::Light() { /* setType(D3DLIGHT_POINT); setDiffuse(r, g, b, a); setAmbient(0, 0, 0, 0); setRange((float)sqrt(FLT_MAX)); setSpecular(r, g, b, a); setAttenuation(1, 0, 0); */ SetType(LIGHT_POINT); SetDiffuse(1, 1, 1, 1); SetSpecular(1, 1, 1, 1); SetAmbient(0, 0, 0, 0); SetRange((float)sqrt(FLT_MAX)); SetAttenuation(1, 0, 0); SetThetaPhi(1.f, 2.f); SetFalloff(1.f); SetLocation(0, 0, 0); SetDirection(0, 1, 0); }
void CMaterial::SetValues(float* dif, float* spec, float* amb, float shin) { SetDiffuse(dif); SetSpecular(spec); SetAmbient(amb); SetShininess(shin); }
void xPointLight::Serialize(xSerializer & Serializer) { xObj::Serialize(Serializer); int version = 0; if (Serializer.IsSave()) { Serializer << version; Serializer << Position; Serializer << Diffuse; Serializer << Specular; Serializer << Range; } else { Serializer >> version; if (version == 0) { Serializer >> Position; Serializer >> Diffuse; Serializer >> Specular; Serializer >> Range; } SetPosition(Position); SetDiffuse(Diffuse); SetSpecular(Specular); SetRange(Range); }
//******************************************** // Copy //******************************************** void CMaterial::Copy(CMaterial *pMaterial) { SetSpecular(pMaterial->GetSpecular()[0],pMaterial->GetSpecular()[1],pMaterial->GetSpecular()[2],pMaterial->GetSpecular()[3]); SetAmbient(pMaterial->GetAmbient()[0],pMaterial->GetAmbient()[1],pMaterial->GetAmbient()[2],pMaterial->GetAmbient()[3]); SetDiffuse(pMaterial->GetDiffuse()[0],pMaterial->GetDiffuse()[1],pMaterial->GetDiffuse()[2],pMaterial->GetDiffuse()[3]); SetEmission(pMaterial->GetEmission()[0],pMaterial->GetEmission()[1],pMaterial->GetEmission()[2],pMaterial->GetEmission()[3]); SetShininess(pMaterial->GetShininess()[0]); }
CMaterial::CMaterial(void) { float val[4] = {0.5f,0.5f,0.5f,1.0f}; SetSpecular(val); SetDiffuse(val); SetAmbient(val); SetShininess(20.0f); }
//******************************************** // Constructor //******************************************** CMaterial::CMaterial() { // Default SetAmbient(0.0f,0.33f,0.5f,1.0f); SetDiffuse(0.5f,0.5f,0.5f,1.0f); SetSpecular(1.0f,1.0f,1.0f,1.0f); SetShininess(84.0f); SetEmission(0.0f,0.0f,0.0f,1.0f); }
//爆発の開始 void ShellBall::ExplodeStartMotion(){ //Transform取得 auto Ptr = GetComponent<Transform>(); m_NowScale = Vector3(5.0f, 5.0f, 5.0f); Ptr->SetScale(m_NowScale); //描画コンポーネント auto PtrDraw = GetComponent<BasicPNTDraw>(); //爆発中は赤 PtrDraw->SetDiffuse(Color4(1.0f, 0.0f, 0, 1.0f)); }
GLLight::GLLight( GLenum GL_LIGHTn, GLColor ambient, GLColor diffuse, GLColor specular, GLPosition position ) { glEnable( GL_LIGHTING ); lightNum_ = GL_LIGHTn; glEnable ( lightNum_ ); SetAmbient ( ambient_ ); SetDiffuse ( diffuse_ ); SetSpecular( specular_ ); SetPosition( position_ ); }
//This function is specially used for Collada format CVoid CLight::SetColor( CColor4f& color ) { m_color = color; CFloat diffuse[4] = { color.r, color.g, color.b, color.a }; CFloat specular[4] = { g_lightProperties.m_specularColor[0], g_lightProperties.m_specularColor[1], g_lightProperties.m_specularColor[2], g_lightProperties.m_specularColor[3] }; CFloat ambient[4] = {g_lightProperties.m_ambientColor[0], g_lightProperties.m_ambientColor[1], g_lightProperties.m_ambientColor[2], g_lightProperties.m_ambientColor[3] }; //It seems that collada doesn't specify the ambient property SetAmbient( ambient ); SetDiffuse( diffuse ); SetSpecular( specular ); SetShininess(g_lightProperties.m_shininess); }
//============================================================================= // FunctionName: Flash // Param: void // ReturnValue: void // Content: チカチカ点滅する処理 //============================================================================= void CCharPicture::Flash(void){ // フェードの状態遷移の管理 switch (m_NowFade) { // フェードインの状態の場合 case GUI_FADE::FADE_IN: // ポリゴンを徐々に透明にする m_Diff.a -= m_FadeCoff; // スイッチを抜ける break; // フェードアウトの状態の場合 case GUI_FADE::FADE_OUT: // ポリゴンを徐々に不透明にする m_Diff.a += m_FadeCoff; // スイッチを抜ける break; }// swithch // もしα値が最大だったら if (m_Diff.a >= 1.0f) { // フェード処理を止める m_NowFade = GUI_FADE::FADE_IN; // もしα値が最小だったら } else if (m_Diff.a <= 0.5f) { // フェード処理を止める m_NowFade = GUI_FADE::FADE_OUT; }// if // 頂点の色の変更 SetDiffuse(m_Diff.a, m_Diff.a, m_Diff.a, 1.0f); }// Flash
//初期化 void RollingTorus::Create(){ //Transformだけは追加しなくても取得できる auto Ptr = GetComponent<Transform>(); Ptr->SetScale(0.5f, 0.5f, 0.5f); Ptr->SetRotation(XM_PIDIV2, m_YRot, 0.0f); Ptr->SetPosition(m_StartPos); //衝突判定をつける auto PtrCollision = AddComponent<CollisionSphere>(); //トーラスのグループを得る auto Group = GetStage()->GetSharedObjectGroup(L"RollingTorusGroup"); //トーラス同士は衝突しないようにしておく PtrCollision->SetExcludeCollisionGroup(Group); //重力をつける auto PtrGravity = AddComponent<Gravity>(); //最下地点 PtrGravity->SetBaseY(0.25f); //ジャンプスタート PtrGravity->StartJump(Vector3(0,4.0f,0)); //影の作成 auto ShadowPtr = AddComponent<Shadowmap>(); //影の形状 ShadowPtr->SetMeshResource(L"DEFAULT_TORUS"); //描画コンポーネント auto PtrDraw = AddComponent<BasicPNTDraw>(); //メッシュの登録 PtrDraw->SetMeshResource(L"DEFAULT_TORUS"); PtrDraw->SetDiffuse(Color4(1.0f, 1.0f, 0, 1.0f)); //ステートマシンの構築 m_StateMachine = make_shared< StateMachine<RollingTorus> >(GetThis<RollingTorus>()); //最初のステートをDefaultStateに設定 m_StateMachine->SetCurrentState(TorusDefaultState::Instance()); //DefaultStateの初期化実行を行う m_StateMachine->GetCurrentState()->Enter(GetThis<RollingTorus>()); }
void mglCanvas::DefaultPlotParam() { /* NOTE: following variables and mutex will not be changed by DefaultPlotParam() long InUse; ///< Smart pointer (number of users) mglFont *fnt; ///< Class for printing vector text int Quality; ///< Quality of plot (0x0-pure, 0x1-fast; 0x2-fine; 0x4 - low memory) int Width; ///< Width of the image int Height; ///< Height of the image int Depth; ///< Depth of the image int CurFrameId; ///< Number of automaticle created frames GifFileType *gif;*/ SetDrawReg(1,1,0); Perspective(0); memcpy(mgl_mask_val, mgl_mask_def, 16*sizeof(uint64_t)); // should be > 16*8 ax.Clear(); ay.Clear(); az.Clear(); ac.Clear(); mgl_clear_fft(); DefMaskAn=0; ResetMask(); SetTickRotate(true); SetTickSkip(true); SetWarn(mglWarnNone,""); mglGlobalMess = ""; ObjId = -1; HighId = INT_MIN; SetFunc(0,0); CutOff(0); Ternary(0); Stop=false; event_cb = NULL; event_par=NULL; SetRanges(mglPoint(-1,-1,-1,-1), mglPoint(1,1,1,1)); SetOrigin(NAN,NAN,NAN,NAN); SetBarWidth(0.7); SetMarkSize(1); SetArrowSize(1); SetAlphaDef(0.5); FontDef[0]=0; SetTranspType(0); SetMeshNum(0); // NOTE: default MeshNum=0 SetRotatedText(true); CurrPal = 0; SetLegendMarks(); SetFontSize(4); SetTuneTicks(3); SetAmbient(); SetDiffuse(); clr(MGL_DISABLE_SCALE); clr(MGL_USE_GMTIME); clr(MGL_NOSUBTICKS); SetDifLight(false); SetReduceAcc(false); SetDefScheme(MGL_DEF_SCH); SetPalette(MGL_DEF_PAL); SetPenPal("k-1"); Alpha(false); stack.clear(); Restore(); DefColor('k'); SetPlotFactor(0); InPlot(0,1,0,1,false); SetTickLen(0); SetCut(true); AdjustTicks("xyzc",true); Clf('w'); for(int i=0;i<10;i++) { AddLight(i, mglPoint(0,0,1)); Light(i,false); } Light(0,true); Light(false); SetDifLight(true); }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------ MaterialCSPtr PrimitiveEntityFactory::CreateStaticBlinnColourMaterial(const Colour& in_colour) const { auto materialName = "_PrimitiveStaticBlinnColour(" + ToString(in_colour) + ")"; auto material = m_resourcePool->GetResource<Material>(materialName); if (material == nullptr) { auto texture = m_resourcePool->LoadResource<Texture>(StorageLocation::k_chilliSource, "Textures/Blank.csimage"); auto mutableMaterial = m_materialFactory->CreateStaticBlinnShadowed(materialName, texture); mutableMaterial->SetEmissive(Colour::k_black); mutableMaterial->SetAmbient(in_colour); mutableMaterial->SetDiffuse(in_colour); mutableMaterial->SetSpecular(Colour(0.5f, 0.5f, 0.5f, 10.0f)); mutableMaterial->SetLoadState(Resource::LoadState::k_loaded); material = mutableMaterial; } return material; }
void ShellBall::Refresh(const Vector3& StartPos, const Vector3& JumpVec){ SetUpdateActive(true); SetDrawActive(true); m_StartPos = StartPos; m_JumpVec = JumpVec; //Transform取得 auto Ptr = GetComponent<Transform>(); Ptr->SetScale(m_NowScale); Ptr->SetPosition(m_StartPos); //描画コンポーネント auto PtrDraw = GetComponent<BasicPNTDraw>(); PtrDraw->SetDiffuse(Color4(1.0f, 1.0f, 0, 1.0f)); //重力を取り出す auto PtrGravity = GetComponent<Gravity>(); //ジャンプスタート PtrGravity->StartJump(m_JumpVec); //今のステートをFiringStateに設定 m_StateMachine->SetCurrentState(FiringState::Instance()); //FiringStateの初期化実行を行う m_StateMachine->GetCurrentState()->Enter(GetThis<ShellBall>()); }
xPointLight::xPointLight(const TString128 & name) : xObj(name) { Position = Vec3::Zero; Diffuse = Color4::White; Specular = Color4::Black; Range = 20; mLight = World::Instance()->CreateLight(name); mNode = World::Instance()->CreateSceneNode(); mNode->Attach(mLight); mNode->GetFlag().SetFlags(PICK_Flag); mLight->SetBounds(Aabb(-1, -1, -1, 1, 1, 1), Sphere(0, 0, 0, 1)); mLight->SetType(LT_POINT); Technique * tech = xApp::Instance()->GetHelperShaderLib()->GetTechnique("PointLight"); mBillboard = BillboardManager::Instance()->Create(tech); mBillboard->SetWidth(5); mBillboard->SetHeight(5); Material * mat = mBillboard->GetMaterial(); mat->SetDepthWrite(false); mat->SetBlendMode(BM_ALPHA_BLEND); mat->SetDiffuseMap("Editor\\PointLight.png"); mNode->Attach(mBillboard); SetScale(Range); SetDiffuse(Diffuse); SetSpecular(Specular); }
//プレートの作成 void GameStage::CreatePlate(){ //ステージへのゲームオブジェクトの追加 auto Ptr = AddGameObject<GameObject>(); //変化コンポーネント(Transform)の取得 auto TrancePtr = Ptr->GetComponent<Transform>(); //スケーリングの設定 TrancePtr->SetScale(200.0f, 20.0f, 1.0f); //回転の設定 Quaternion Qt; Qt.RotationRollPitchYawFromVector(Vector3(XM_PIDIV2, 0, 0)); TrancePtr->SetQuaternion(Qt); //位置の設定 TrancePtr->SetPosition(0, 0, 0); //描画コンポーネントの追加 auto DrawComp = Ptr->AddComponent<SimplePNTDraw>(); //色を少し落とす DrawComp->SetDiffuse(Color4(0.1f, 0.1f, 0.1f, 1.0f)); //描画コンポーネントに形状(メッシュ)を設定 DrawComp->SetMeshResource(L"DEFAULT_SQUARE"); //描画コンポーネントテクスチャの設定 DrawComp->SetTextureResource(L"SKY_TX"); //自分に影が映りこむようにする DrawComp->SetOwnShadowActive(true); }
void Actor::HandleCommand( const ParsedCommand &command ) { HandleParams; const CString& sName = sParam(0); // Commands that go in the tweening queue: if ( sName=="sleep" ) Sleep( fParam(1) ); else if( sName=="linear" ) BeginTweening( fParam(1), TWEEN_LINEAR ); else if( sName=="accelerate" ) BeginTweening( fParam(1), TWEEN_ACCELERATE ); else if( sName=="decelerate" ) BeginTweening( fParam(1), TWEEN_DECELERATE ); else if( sName=="bouncebegin" ) BeginTweening( fParam(1), TWEEN_BOUNCE_BEGIN ); else if( sName=="bounceend" ) BeginTweening( fParam(1), TWEEN_BOUNCE_END ); else if( sName=="spring" ) BeginTweening( fParam(1), TWEEN_SPRING ); else if( sName=="stoptweening" ) { StopTweening(); BeginTweening( 0.0001f, TWEEN_LINEAR ); } // Why BeginT again? -Chris else if( sName=="finishtweening" ) FinishTweening(); else if( sName=="hurrytweening" ) HurryTweening( fParam(1) ); else if( sName=="x" ) SetX( fParam(1) ); else if( sName=="y" ) SetY( fParam(1) ); else if( sName=="z" ) SetZ( fParam(1) ); else if( sName=="addx" ) SetX( GetDestX()+fParam(1) ); else if( sName=="addy" ) SetY( GetDestY()+fParam(1) ); else if( sName=="addz" ) SetZ( GetDestZ()+fParam(1) ); else if( sName=="zoom" ) SetZoom( fParam(1) ); else if( sName=="zoomx" ) SetZoomX( fParam(1) ); else if( sName=="zoomy" ) SetZoomY( fParam(1) ); else if( sName=="zoomz" ) SetZoomZ( fParam(1) ); else if( sName=="zoomtowidth" ) ZoomToWidth( fParam(1) ); else if( sName=="zoomtoheight" ) ZoomToHeight( fParam(1) ); else if( sName=="stretchto" ) StretchTo( RectF( fParam(1), fParam(2), fParam(3), fParam(4) ) ); else if( sName=="cropleft" ) SetCropLeft( fParam(1) ); else if( sName=="croptop" ) SetCropTop( fParam(1) ); else if( sName=="cropright" ) SetCropRight( fParam(1) ); else if( sName=="cropbottom" ) SetCropBottom( fParam(1) ); else if( sName=="fadeleft" ) SetFadeLeft( fParam(1) ); else if( sName=="fadetop" ) SetFadeTop( fParam(1) ); else if( sName=="faderight" ) SetFadeRight( fParam(1) ); else if( sName=="fadebottom" ) SetFadeBottom( fParam(1) ); else if( sName=="fadecolor" ) SetFadeDiffuseColor( cParam(1) ); else if( sName=="diffuse" ) SetDiffuse( cParam(1) ); else if( sName=="diffuseleftedge" ) SetDiffuseLeftEdge( cParam(1) ); else if( sName=="diffuserightedge" ) SetDiffuseRightEdge( cParam(1) ); else if( sName=="diffusetopedge" ) SetDiffuseTopEdge( cParam(1) ); else if( sName=="diffusebottomedge" ) SetDiffuseBottomEdge( cParam(1) ); /* Add left/right/top/bottom for alpha if needed. */ else if( sName=="diffusealpha" ) SetDiffuseAlpha( fParam(1) ); else if( sName=="diffusecolor" ) SetDiffuseColor( cParam(1) ); else if( sName=="glow" ) SetGlow( cParam(1) ); else if( sName=="glowmode" ) { if(!sParam(1).CompareNoCase("whiten")) SetGlowMode( GLOW_WHITEN ); else if(!sParam(1).CompareNoCase("brighten")) SetGlowMode( GLOW_BRIGHTEN ); else ASSERT(0); } else if( sName=="rotationx" ) SetRotationX( fParam(1) ); else if( sName=="rotationy" ) SetRotationY( fParam(1) ); else if( sName=="rotationz" ) SetRotationZ( fParam(1) ); else if( sName=="heading" ) AddRotationH( fParam(1) ); else if( sName=="pitch" ) AddRotationP( fParam(1) ); else if( sName=="roll" ) AddRotationR( fParam(1) ); else if( sName=="shadowlength" ) SetShadowLength( fParam(1) ); else if( sName=="horizalign" ) SetHorizAlign( sParam(1) ); else if( sName=="vertalign" ) SetVertAlign( sParam(1) ); else if( sName=="diffuseblink" ) SetEffectDiffuseBlink(); else if( sName=="diffuseshift" ) SetEffectDiffuseShift(); else if( sName=="glowblink" ) SetEffectGlowBlink(); else if( sName=="glowshift" ) SetEffectGlowShift(); else if( sName=="rainbow" ) SetEffectRainbow(); else if( sName=="wag" ) SetEffectWag(); else if( sName=="bounce" ) SetEffectBounce(); else if( sName=="bob" ) SetEffectBob(); else if( sName=="pulse" ) SetEffectPulse(); else if( sName=="spin" ) SetEffectSpin(); else if( sName=="vibrate" ) SetEffectVibrate(); else if( sName=="stopeffect" ) SetEffectNone(); else if( sName=="effectcolor1" ) SetEffectColor1( cParam(1) ); else if( sName=="effectcolor2" ) SetEffectColor2( cParam(1) ); else if( sName=="effectperiod" ) SetEffectPeriod( fParam(1) ); else if( sName=="effectoffset" ) SetEffectOffset( fParam(1) ); else if( sName=="effectdelay" ) SetEffectDelay( fParam(1) ); else if( sName=="effectclock" ) SetEffectClock( sParam(1) ); else if( sName=="effectmagnitude" ) SetEffectMagnitude( RageVector3(fParam(1),fParam(2),fParam(3)) ); else if( sName=="scaletocover" ) { RectI R(iParam(1), iParam(2), iParam(3), iParam(4)); ScaleToCover(R); } else if( sName=="scaletofit" ) { RectI R(iParam(1), iParam(2), iParam(3), iParam(4)); ScaleToFitInside(R); } // Commands that take effect immediately (ignoring the tweening queue): else if( sName=="animate" ) EnableAnimation( bParam(1) ); else if( sName=="setstate" ) SetState( iParam(1) ); else if( sName=="texturewrapping" ) SetTextureWrapping( bParam(1) ); else if( sName=="additiveblend" ) SetBlendMode( bParam(1) ? BLEND_ADD : BLEND_NORMAL ); else if( sName=="blend" ) SetBlendMode( sParam(1) ); else if( sName=="zbuffer" ) SetUseZBuffer( bParam(1) ); else if( sName=="ztest" ) SetZTestMode( bParam(1)?ZTEST_WRITE_ON_PASS:ZTEST_OFF ); else if( sName=="ztestmode" ) SetZTestMode( sParam(1) ); else if( sName=="zwrite" ) SetZWrite( bParam(1) ); else if( sName=="clearzbuffer" ) SetClearZBuffer( bParam(1) ); else if( sName=="backfacecull" ) SetCullMode( bParam(1) ? CULL_BACK : CULL_NONE ); else if( sName=="cullmode" ) SetCullMode( sParam(1) ); else if( sName=="hidden" ) SetHidden( bParam(1) ); else if( sName=="hibernate" ) SetHibernate( fParam(1) ); else if( sName=="draworder" ) SetDrawOrder( iParam(1) ); else if( sName=="playcommand" ) PlayCommand( sParam(1) ); else if( sName=="queuecommand" ) { ParsedCommand newcommand = command; newcommand.vTokens.erase( newcommand.vTokens.begin() ); QueueCommand( newcommand ); return; // don't do parameter number checking } /* These are commands intended for a Sprite commands, but they will get * sent to all sub-actors (which aren't necessarily Sprites) on * GainFocus and LoseFocus. So, don't run CheckHandledParams * on these commands. */ else if( sName=="customtexturerect" || sName=="texcoordvelocity" || sName=="scaletoclipped" || sName=="stretchtexcoords" || sName=="position" || sName=="loop" || sName=="play" || sName=="pause" || sName=="rate" ) return; else { CString sError = ssprintf( "Actor::HandleCommand: Unrecognized command name '%s'.", sName.c_str() ); LOG->Warn( sError ); Dialog::OK( sError ); } CheckHandledParams; }
void CWndChangeSex::OnDraw( C2DRender* p2DRender ) { if( g_pPlayer == NULL ) return; LPDIRECT3DDEVICE9 pd3dDevice = p2DRender->m_pd3dDevice; pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE ); pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE ); pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ); pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE ); pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); pd3dDevice->SetSamplerState ( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR ); pd3dDevice->SetSamplerState ( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); pd3dDevice->SetRenderState( D3DRS_AMBIENT, D3DCOLOR_ARGB( 255, 255,255,255) ); CRect rect = GetClientRect(); // 뷰포트 세팅 D3DVIEWPORT9 viewport; // 월드 D3DXMATRIXA16 matWorld; D3DXMATRIXA16 matScale; D3DXMATRIXA16 matRot; D3DXMATRIXA16 matTrans; // 카메라 D3DXMATRIX matView; D3DXVECTOR3 vecLookAt( 0.0f, 0.0f, 3.0f ); D3DXVECTOR3 vecPos( 0.0f, 0.7f, -3.5f ); D3DXMatrixLookAtLH( &matView, &vecPos, &vecLookAt, &D3DXVECTOR3(0.0f,1.0f,0.0f) ); pd3dDevice->SetTransform( D3DTS_VIEW, &matView ); // 왼쪽 원본 모델 랜더링 { LPWNDCTRL lpFace = GetWndCtrl( WIDC_STATIC1 ); viewport.X = p2DRender->m_ptOrigin.x + lpFace->rect.left;//2; viewport.X -= 6; viewport.Y = p2DRender->m_ptOrigin.y + lpFace->rect.top;//5; viewport.Width = lpFace->rect.Width();//p2DRender->m_clipRect.Width(); viewport.Height = lpFace->rect.Height();// - 10;//p2DRender->m_clipRect.Height(); viewport.MinZ = 0.0f; viewport.MaxZ = 1.0f; pd3dDevice->SetViewport(&viewport); pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0xffa08080, 1.0f, 0 ) ; D3DXMATRIX matProj; D3DXMatrixIdentity( &matProj ); FLOAT fAspect = ((FLOAT)viewport.Width) / (FLOAT)viewport.Height; /* D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4.0f, fAspect, CWorld::m_fNearPlane - 0.01f, CWorld::m_fFarPlane ); pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj ); */ FLOAT fov = D3DX_PI/4.0f;//796.0f; FLOAT h = cos(fov/2) / sin(fov/2); FLOAT w = h * fAspect; D3DXMatrixOrthoLH( &matProj, w, h, CWorld::m_fNearPlane - 0.01f, CWorld::m_fFarPlane ); pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj ); D3DXMatrixIdentity(&matScale); D3DXMatrixIdentity(&matTrans); D3DXMatrixIdentity(&matWorld); D3DXMatrixScaling(&matScale, 4.5f, 4.5f, 4.5f); if( g_pPlayer->GetSex() == SEX_MALE ) D3DXMatrixTranslation(&matTrans,0.0f,-5.6f,0.0f); else D3DXMatrixTranslation(&matTrans,0.0f,-5.8f,0.0f); D3DXMatrixMultiply(&matWorld,&matWorld,&matScale); D3DXMatrixMultiply(&matWorld, &matWorld, &matTrans ); pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); // 랜더링 pd3dDevice->SetRenderState( D3DRS_FOGENABLE, FALSE ); pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );//m_bViewLight ); ::SetLight( FALSE ); ::SetFog( FALSE ); SetDiffuse( 1.0f, 1.0f, 1.0f ); SetAmbient( 1.0f, 1.0f, 1.0f ); /* m_pModel->GetObject3D(PARTS_HAIR)->m_fAmbient[0] = 0.5f; m_pModel->GetObject3D(PARTS_HAIR)->m_fAmbient[1] = 0.5f; m_pModel->GetObject3D(PARTS_HAIR)->m_fAmbient[2] = 0.5f; */ D3DXVECTOR4 vConst( 1.0f, 1.0f, 1.0f, 1.0f ); #ifdef __YENV D3DXVECTOR3 vDir( 0.0f, 0.0f, 1.0f ); SetLightVec( vDir ); g_Neuz.m_pEffect->SetVector( g_Neuz.m_hvFog, &vConst ); #else //__YENV pd3dDevice->SetVertexShaderConstantF( 95, (float*)&vConst, 1 ); #endif //__YENV ::SetTransformView( matView ); ::SetTransformProj( matProj ); m_pModel->Render( p2DRender->m_pd3dDevice, &matWorld ); } }
//============================================================================= // FunctionName: ChangeGuiState // Param: void // ReturnValue: void // Content: Guiの状態によって変化させる //============================================================================= void CCharPicture::ChangeGuiState(GUI_MODE paramMode){ // 遷移状態の更新 m_Mode = paramMode; // 指定された状態によって分岐 switch (paramMode) { // 通常状態の場合 case GUI_MODE::NORMAL: // α値だけ変える m_Diff.a = 1.0f; // 色情報を設定 SetDiffuse(m_Diff.r, m_Diff.g, m_Diff.b, m_Diff.a); // 分岐を抜ける break; // 点滅状態 case GUI_MODE::FLASH: // チカチカさせる Flash(); // 分岐を抜ける break; // 点滅状態 case GUI_MODE::DESELECT: // ポリゴンを徐々に不透明にする m_Diff.a += m_FadeCoff; // もしα値が最大だったら if (m_Diff.a >= 1.0f) { m_Diff.a = 1.0f; // 通常状態に遷移 m_Mode = GUI_MODE::NORMAL; } // 頂点の色の変更 SetDiffuse(m_Diff.a, m_Diff.a, m_Diff.a, 1.0f); // 分岐を抜ける break; // 表示させたくない状態 case GUI_MODE::HIDE: // α値だけ変える m_Diff.a = 0.0f; // 色情報を設定 SetDiffuse(m_Diff.r, m_Diff.g, m_Diff.b, m_Diff.a); // 分岐を抜ける break; // 表示させたくない状態 case GUI_MODE::GRADUALLY_DESELECT: // 分岐を抜ける break; // 表示させたくない状態 case GUI_MODE::GRADUALLY_SELECT: // ポリゴンを徐々に不透明にする m_Diff.a += m_FadeCoff; // もしα値が最大だったら if (m_Diff.a >= 1.0f) { m_Diff.a = 1.0f; // 通常状態に遷移 m_Mode = GUI_MODE::NORMAL; } // 頂点の色の変更 SetDiffuse(m_Diff.r, m_Diff.g, m_Diff.b, m_Diff.a); // 分岐を抜ける break; // 上記以外の場合 default: // 分岐を抜ける break; }// switch }// ChangeGuiState
void InitScene() { DiSceneManager* sm = DiBase::Driver->GetSceneManager(); sm->SetAmbientColor(DiColor(0.6f, 0.6f, 0.6f)); float scale = 0.5f; DiDirLightPtr dirlight; dirlight = make_shared<DiDirLight>(); DiCullNode* dirNode = sm->GetRootNode()->CreateChild(); dirNode->AttachObject(dirlight); dirlight->SetColor(DiColor(0.8f,0.8f,0.8f)); dirlight->SetDirection(DiVec3(0.3f,-0.7f,0.4).normalisedCopy()); //dirlight->InitForShadowCasting(sm, ShadowTextureConfig(1024,1024,PF_A32B32G32R32F)); auto pos = DiVec3(150,275,130)*2; dirNode->SetPosition(pos); DiCullNode* spotNode = sm->GetRootNode()->CreateChild(); DiSpotLightPtr sptLt = make_shared<DiSpotLight>(); spotNode->AttachObject(sptLt); //spotNode->SetPosition(50, 100, 40); spotNode->SetPosition(pos); sptLt->SetDirection((-pos).normalisedCopy()); sptLt->SetRange( DiDegree(80), DiDegree(90) ); sptLt->InitForShadowCasting(sm, ShadowTextureConfig(1024,1024,PF_A32B32G32R32F)); sptLt->mShadowCameraNear = 50; sptLt->mShadowCameraFar = 200; sptLt->mShadowCameraFov = 50; sptLt->_UpdateShadowCamera(); DiDebugHelperPtr dbghelper; auto mat = DiMaterial::QuickCreate("lambert_v", "lambert_p", SHADER_FLAG_SHADOW_RECEIVER); mat->SetAmbient(DiColor(0.8f, 0.8f, 0.8f)); mat->SetDiffuse(DiColor(0.8f, 0.8f, 0.8f)); dbghelper = make_shared<DiDebugHelper>(); sm->GetRootNode()->AttachObject(dbghelper); DiMaterialPtr helpermat = DiMaterial::QuickCreate("basic_v", "basic_p", SHADER_FLAG_USE_COLOR); helpermat->SetDepthCheck(false); dbghelper->SetMaterial(helpermat); //dbghelper->AddFrustum(dirlight->GetShadowCamera(0), DiColor::Red); hp = dbghelper.get(); lt = sptLt.get(); #if 0 DiSimpleShapePtr plane = make_shared<DiSimpleShape>(); plane->SetShadowCastEnable(false); plane->CreatePlane(600, 600); plane->SetMaterial(mat); plane->GetMaterial()->SetDiffuse(DiColor::White); DiCullNode* planeNode = sm->GetRootNode()->CreateChild(); planeNode->AttachObject(plane); planeNode->Translate(0, 0, 0); const int size = 1; for (int i = -size; i <= size; i++) { for (int j = -size; j <= size; j++) { DiMaterialPtr mat = DiMaterial::QuickCreate("lambert_v", "lambert_p", SHADER_FLAG_SKINNED | SHADER_FLAG_SHADOW_RECEIVER); mat->SetDiffuse(DiColor(1, 1, 1)); mat->SetAmbient(DiColor(0.7f, 0.7f, 0.7f)); DiString name; name.Format("md_%d_%d", i, j); DiAnimModelPtr model = make_shared<DiAnimModel>(name, "robot.model", "robot.motion"); //DiModelPtr model = make_shared<DiModel>(name, "robot.model"); model->SetMaterial(mat); model->SetShadowCastEnable(true); model->SetAutoUpdateAnims(true); model->GetClipSet()->GetClipController("Walk")->SetEnabled(true); DiCullNode* cullnode = sm->GetRootNode()->CreateChild(); cullnode->AttachObject(model); cullnode->SetPosition(i * 140.0f, 0, j * 140.0f); } } #else DiSimpleShapePtr plane = make_shared<DiSimpleShape>(); plane->SetShadowCastEnable(false); plane->CreatePlane(300, 300); plane->SetMaterial(mat); plane->GetMaterial()->SetDiffuse(DiColor::White); DiCullNode* planeNode = sm->GetRootNode()->CreateChild(); planeNode->AttachObject(plane); DiMaterialPtr m = DiMaterial::QuickCreate("basic_v", "basic_p", SHADER_FLAG_SHADOW_RECEIVER); m->SetDiffuse(DiColor(0.9f, 0.9f, 0.9f)); DiSimpleShapePtr box = make_shared<DiSimpleShape>(); box->SetShadowCastEnable(true); box->CreateBox(10); box->SetMaterial(m); DiCullNode* cullnode = sm->GetRootNode()->CreateChild(); cullnode->SetPosition(0,5,0); cullnode->AttachObject(box); #endif //SetupScene(); DiCamera* camera = sm->GetCamera(); camera->SetNearClipDistance(5); camera->SetFarClipDistance(5000); }