Kaynağa Gözat

Merge pull request #334 from kyrahabattoir/guiViewObject

GuiObjectView TorqueScript setRotation method
SilentMike 12 yıl önce
ebeveyn
işleme
134042e268

+ 11 - 1
Engine/source/T3D/guiObjectView.cpp

@@ -182,7 +182,8 @@ void GuiObjectView::initPersistFields()
          "Minimum distance below which the camera will not zoom in further." );
       addField( "cameraSpeed", TypeF32, Offset( mCameraSpeed, GuiObjectView ),
          "Multiplier for mouse camera operations." );
-   
+      addField( "cameraRotation", TypePoint3F, Offset( mCameraRotation, GuiObjectView ),
+         "Set the camera rotation." );
    endGroup( "Camera" );
    
    Parent::initPersistFields();
@@ -205,6 +206,7 @@ void GuiObjectView::onStaticModified( StringTableEntry slotName, const char* new
    static StringTableEntry sOrbitDistance = StringTable->insert( "orbitDistance" );
    static StringTableEntry sMinOrbitDistance = StringTable->insert( "minOrbitDistance" );
    static StringTableEntry sMaxOrbitDistance = StringTable->insert( "maxOrbitDistance" );
+   static StringTableEntry sCameraRotation = StringTable->insert( "cameraRotation" );
    static StringTableEntry sAnimSequence = StringTable->insert( "animSequence" );
    
    if( slotName == sShapeFile )
@@ -225,6 +227,8 @@ void GuiObjectView::onStaticModified( StringTableEntry slotName, const char* new
       setLightDirection( mLightDirection );
    else if( slotName == sOrbitDistance || slotName == sMinOrbitDistance || slotName == sMaxOrbitDistance )
       setOrbitDistance( mOrbitDist );
+   else if( slotName == sCameraRotation )
+      setCameraRotation( mCameraRotation );
    else if( slotName == sAnimSequence )
       setObjectAnimation( String( mAnimationSeqName ) );
 }
@@ -579,6 +583,12 @@ void GuiObjectView::setCameraSpeed( F32 factor )
 
 //------------------------------------------------------------------------------
 
+void GuiObjectView::setCameraRotation( const EulerF& rotation )
+{
+    mCameraRot.set(rotation);
+}
+
+//------------------------------------------------------------------------------
 void GuiObjectView::setLightColor( const ColorF& color )
 {
    mLightColor = color;

+ 4 - 0
Engine/source/T3D/guiObjectView.h

@@ -88,6 +88,7 @@ class GuiObjectView : public GuiTSCtrl
       
       F32 mMaxOrbitDist;
       F32 mMinOrbitDist;
+      EulerF mCameraRotation;
       
       ///
       F32 mOrbitDist;
@@ -245,6 +246,9 @@ class GuiObjectView : public GuiTSCtrl
       /// @param distance The distance to set the orbit to (will be clamped).
       void setOrbitDistance( F32 distance );
       
+      /// Sets the angle of the camera on it's orbit in relation to the object.
+      void setCameraRotation( const EulerF& rotation );
+      
       /// @}
       
       /// @name Lighting