00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00020 #ifndef _FCD_LIGHT_H_
00021 #define _FCD_LIGHT_H_
00022
00023 #ifndef _FCD_TARGETED_ENTITY_H_
00024 #include "FCDocument/FCDTargetedEntity.h"
00025 #endif // _FCD_TARGETED_ENTITY_H_
00026 #ifndef _FCD_PARAMETER_ANIMATABLE_H_
00027 #include "FCDocument/FCDParameterAnimatable.h"
00028 #endif // _FCD_PARAMETER_ANIMATABLE_H_
00029
00030 class FCDocument;
00031 class FCDSceneNode;
00032 class FCDAnimated;
00033
00061 class FCOLLADA_EXPORT FCDLight : public FCDTargetedEntity
00062 {
00063 public:
00065 enum LightType
00066 {
00067 POINT,
00068 SPOT,
00069 AMBIENT,
00070 DIRECTIONAL
00071 };
00072
00073 private:
00074 DeclareObjectType(FCDTargetedEntity);
00075
00076
00077 DeclareParameterAnimatable(FMVector3, FUParameterQualifiers::COLOR, color, FC("Color"));
00078 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, intensity, FC("Intensity"));
00079 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, lightType, FC("Light Type"));
00080
00081
00082 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, constantAttenuationFactor, FC("Constant Attenuation Factor"));
00083 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, linearAttenuationFactor, FC("Linear Attenuation Factor"));
00084 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, quadracticAttenuationFactor, FC("Quadratic Attenuation Factor"));
00085
00086
00087 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, fallOffExponent, FC("Fall-off Exponent"));
00088 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, fallOffAngle, FC("Inner Cone Angle"));
00089 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, outerAngle, FC("Outer Cone Angle"));
00090 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, penumbraAngle, FC("Penumbra Angle"));
00091 DeclareParameterAnimatable(float, FUParameterQualifiers::SIMPLE, dropoff, FC("Drop-off"));
00092
00093 public:
00096 FCDLight(FCDocument* document);
00097
00099 virtual ~FCDLight();
00100
00103 virtual Type GetType() const { return LIGHT; }
00104
00109 DEPRECATED(3.05A, GetExtra()->GetDefaultType()->GetTechniques()) virtual bool HasMaxExtras() const { return false; }
00110 DEPRECATED(3.05A, GetExtra()->GetDefaultType()->GetTechniques()) virtual bool HasMayaExtras() const { return false; }
00116 DEPRECATED(3.05A, nothing) void SetHasMaxExtras(bool UNUSED(value)) { }
00117 DEPRECATED(3.05A, nothing) void SetHasMayaExtras(bool UNUSED(value)) { }
00118
00122 FCDParameterAnimatableColor3& GetColor() { return color; }
00123 const FCDParameterAnimatableColor3& GetColor() const { return color; }
00128 void SetColor(const FMVector3& col) { color = col; SetDirtyFlag(); }
00129
00135 void SetColor(float r, float g, float b) { color = FMVector3(r, g, b); SetDirtyFlag(); }
00136
00140 FCDParameterAnimatableFloat& GetIntensity() { return intensity; }
00141 const FCDParameterAnimatableFloat& GetIntensity() const { return intensity; }
00146 void SetIntensity(float _intensity) { intensity = _intensity; SetDirtyFlag(); }
00147
00152 LightType GetLightType() const { return (LightType) *lightType; }
00153
00156 void SetLightType(LightType type) { lightType = type; SetDirtyFlag(); }
00157
00161 FCDParameterAnimatableFloat& GetConstantAttenuationFactor() { return constantAttenuationFactor; }
00162 const FCDParameterAnimatableFloat& GetConstantAttenuationFactor() const { return constantAttenuationFactor; }
00167 void SetConstantAttenuationFactor(float factor) { constantAttenuationFactor = factor; SetDirtyFlag(); }
00168
00172 FCDParameterAnimatableFloat& GetLinearAttenuationFactor() { return linearAttenuationFactor; }
00173 const FCDParameterAnimatableFloat& GetLinearAttenuationFactor() const { return linearAttenuationFactor; }
00178 void SetLinearAttenuationFactor(float factor) { linearAttenuationFactor = factor; SetDirtyFlag(); }
00179
00183 FCDParameterAnimatableFloat& GetQuadraticAttenuationFactor() { return quadracticAttenuationFactor; }
00184 const FCDParameterAnimatableFloat& GetQuadraticAttenuationFactor() const { return quadracticAttenuationFactor; }
00189 void SetQuadraticAttenuationFactor(float factor) { quadracticAttenuationFactor = factor; SetDirtyFlag(); }
00190
00201 FCDParameterAnimatableFloat& GetFallOffExponent() { return fallOffExponent; }
00202 const FCDParameterAnimatableFloat& GetFallOffExponent() const { return fallOffExponent; }
00207 void SetFallOffExponent(float exponent) { fallOffExponent = exponent; SetDirtyFlag(); }
00208
00213 FCDParameterAnimatableFloat& GetFallOffAngle() { return fallOffAngle; }
00214 const FCDParameterAnimatableFloat& GetFallOffAngle() const { return fallOffAngle; }
00219 void SetFallOffAngle(float angle) { fallOffAngle = angle; SetDirtyFlag(); }
00220
00229 FCDParameterAnimatableFloat& GetOuterAngle() { return outerAngle; }
00230 const FCDParameterAnimatableFloat& GetOuterAngle() const { return outerAngle; }
00235 void SetOuterAngle(float angle) { outerAngle = angle; SetDirtyFlag(); }
00236
00249 DEPRECATED(3.05A, GetOuterAngle and GetFallOffAngle) float& GetPenumbraAngle() { return penumbraAngle; }
00250 DEPRECATED(3.05A, GetOuterAngle and GetFallOffAngle) const float& GetPenumbraAngle() const { return penumbraAngle; }
00257 DEPRECATED(3.05A, SetOuterAngle and SetFallOffAngle) void SetPenumbraAngle(float angle) { penumbraAngle = angle; }
00258
00263 FCDParameterAnimatableFloat& GetDropoff() { return dropoff; }
00264 const FCDParameterAnimatableFloat& GetDropoff() const { return dropoff; }
00268 void SetDropoff(float factor) { dropoff = factor; SetDirtyFlag(); }
00269 };
00270
00271 #endif // _FCD_LIGHT_H_
00272