Axiom.Demos.VolumeRenderable.NotifyCurrentCamera C# (CSharp) Method

NotifyCurrentCamera() public method

public NotifyCurrentCamera ( Camera camera ) : void
camera Axiom.Core.Camera
return void
        public override void NotifyCurrentCamera( Camera camera )
        {
            base.NotifyCurrentCamera( camera );

            Vector3 zVec = ParentNode.DerivedPosition - camera.DerivedPosition;
            float sqdist = zVec.LengthSquared;
            zVec.Normalize();
            Vector3 fixedAxis = camera.DerivedOrientation * Vector3.UnitY;
            Vector3 xVec = fixedAxis.Cross( zVec );
            xVec.Normalize();
            Vector3 yVec = zVec.Cross( xVec );
            yVec.Normalize();
            Quaternion oriQuat = Quaternion.FromAxes( xVec, yVec, zVec );
            if ( sqdist > mSize * mSize / 2 )    // ADD THIS CONDITION HERE
            {
                mFakeOrientation = oriQuat.ToRotationMatrix();
            }
            else
            {
                mFakeOrientation = camera.DerivedOrientation.ToRotationMatrix(); //cam->getDerivedOrientation().ToRotationMatrix(m_fakeOrientation);
            }


            Matrix3 tempMat = Matrix3.Zero;
            Quaternion q = ParentNode.DerivedOrientation.UnitInverse * oriQuat;
            tempMat = q.ToRotationMatrix();
            Matrix4 rotMat = Matrix4.Identity;
            rotMat = tempMat;
            rotMat.Translation = new Vector3( 0.5f, 0.5f, 0.5f );
            mUnit.TextureMatrix = rotMat;
            material.GetTechnique( 0 ).GetPass( 0 ).GetTextureUnitState( 0 ).TextureMatrix = rotMat;
        }