/////////////////////////////////////////////////////////////////////// // CSpeedTreeMaterial Class // // (c) 2003 IDV, Inc. // // This class is provided to illustrate one way to incorporate // SpeedTreeRT into an OpenGL application. All of the SpeedTreeRT // calls that must be made on a per tree basis are done by this class. // Calls that apply to all trees (i.e. static SpeedTreeRT functions) // are made in the functions in main.cpp. // // // *** INTERACTIVE DATA VISUALIZATION (IDV) PROPRIETARY INFORMATION *** // // This software is supplied under the terms of a license agreement or // nondisclosure agreement with Interactive Data Visualization and may // not be copied or disclosed except in accordance with the terms of // that agreement. // // Copyright (c) 2001-2003 IDV, Inc. // All Rights Reserved. // // IDV, Inc. // 1233 Washington St. Suite 610 // Columbia, SC 29201 // Voice: (803) 799-1699 // Fax: (803) 931-0320 // Web: http://www.idvinc.com #pragma once /////////////////////////////////////////////////////////////////////// // Include Files #include "KRenderDevice.h" /////////////////////////////////////////////////////////////////////// /// class CSpeedTreeMaterial declaration/definiton class CSpeedTreeMaterial { public: CSpeedTreeMaterial( ) { m_cMaterial.Ambient.r = m_cMaterial.Diffuse.r = m_cMaterial.Specular.r = m_cMaterial.Emissive.r = 1.0f; m_cMaterial.Ambient.g = m_cMaterial.Diffuse.g = m_cMaterial.Specular.g = m_cMaterial.Emissive.g = 1.0f; m_cMaterial.Ambient.b = m_cMaterial.Diffuse.b = m_cMaterial.Specular.b = m_cMaterial.Emissive.b = 1.0f; m_cMaterial.Ambient.a = m_cMaterial.Diffuse.a = m_cMaterial.Specular.a = m_cMaterial.Emissive.a = 1.0f; m_cMaterial.Power = 5.0f; } void SetLight(const K3DLight * pLight) { if( pLight ) { m_cMaterial.Diffuse = pLight->diffuse; m_cMaterial.Ambient = pLight->ambient; m_cMaterial.Specular = pLight->specular; } else { m_cMaterial.Diffuse = K3DColor(1.f, 1.f, 1.f); m_cMaterial.Ambient = K3DColor(1.f, 1.f, 1.f); m_cMaterial.Specular = K3DColor(1.f, 1.f, 1.f); } m_cMaterial.Emissive = 0x00000000; m_cMaterial.Power = 0.f; } void Set(const float* pMaterialArray) { memcpy(&m_cMaterial.Diffuse, pMaterialArray, 3 * sizeof(float)); memcpy(&m_cMaterial.Ambient, pMaterialArray + 3, 3 * sizeof(float)); memcpy(&m_cMaterial.Specular, pMaterialArray + 6, 3 * sizeof(float)); memcpy(&m_cMaterial.Emissive, pMaterialArray + 9, 3 * sizeof(float)); m_cMaterial.Power = pMaterialArray[12]; } K3DMaterial * GetMaterial() { return &m_cMaterial; } private: K3DMaterial m_cMaterial; ///< material object };