فهرست منبع

Merge pull request #210 from Azaezel/alpha40_spotlightBoundsFix

adress #162 based on work by Chad Hall
Brian Roberts 5 سال پیش
والد
کامیت
f6cedc8043
2فایلهای تغییر یافته به همراه35 افزوده شده و 3 حذف شده
  1. 12 3
      Engine/source/T3D/spotLight.cpp
  2. 23 0
      Templates/BaseGame/game/core/gameObjects/datablocks/defaultDatablocks.cs

+ 12 - 3
Engine/source/T3D/spotLight.cpp

@@ -134,9 +134,18 @@ void SpotLight::_conformLights()
 
    // Update the bounds and scale to fit our spotlight.
    F32 radius = mRange * mSin( mDegToRad( mOuterConeAngle ) * 0.5f );
-   mObjBox.minExtents.set( -1, 0, -1 );
-   mObjBox.maxExtents.set( 1, 1, 1 );
-   mObjScale.set( radius, mRange, radius );
+   Point3F objectScale(radius, mRange, radius);
+   Point3F objectBoxMin(-1, 0, -1);
+
+   if (mAnimationData && mAnimationData->mRot.keyLen > 0)
+   {
+      objectBoxMin.set(-1, -1, -1);
+      objectScale.set(mRange, mRange, mRange);
+   }
+
+   mObjBox.minExtents.set(objectBoxMin);
+   mObjBox.maxExtents.set(1, 1, 1);
+   mObjScale.set(objectScale);
 
    // Skip our transform... it just dirties mask bits.
    Parent::setTransform( mObjToWorld );

+ 23 - 0
Templates/BaseGame/game/core/gameObjects/datablocks/defaultDatablocks.cs

@@ -146,3 +146,26 @@ datablock CameraData(Observer)
 {
    mode = "Observer";
 };
+
+datablock LightAnimData( NullLightAnim )
+{   
+   animEnabled = false;
+};
+
+datablock LightAnimData( PulseLightAnim )
+{   
+   brightnessA = 0;
+   brightnessZ = 1;
+   brightnessPeriod = 1;
+   brightnessKeys = "aza";
+   brightnessSmooth = true;
+};
+
+datablock LightAnimData( SpinLightAnim )
+{
+   rotA[2] = "0";
+   rotZ[2] = "360";
+   rotPeriod[2] = "1";
+   rotKeys[2] = "az";
+   rotSmooth[2] = true;
+};