Split light size into different variables per type.
This commit is contained in:
+12
-12
@@ -647,9 +647,9 @@ QVariant lcCamera::GetPropertyValue(lcObjectPropertyId PropertyId) const
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -711,9 +711,9 @@ bool lcCamera::SetPropertyValue(lcObjectPropertyId PropertyId, lcStep Step, bool
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -774,9 +774,9 @@ bool lcCamera::HasKeyFrame(lcObjectPropertyId PropertyId, lcStep Time) const
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -837,9 +837,9 @@ bool lcCamera::SetKeyFrame(lcObjectPropertyId PropertyId, lcStep Time, bool KeyF
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
|
||||
+33
-3
@@ -3180,12 +3180,42 @@ void lcModel::SetSpotLightPOVRayTightness(lcLight* Light, float Tightness)
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcModel::SetLightSize(lcLight* Light, lcVector2 LightAreaSize)
|
||||
void lcModel::SetLightPointBlenderRadius(lcLight* Light, float Radius)
|
||||
{
|
||||
Light->SetSize(LightAreaSize, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
Light->SetPointBlenderRadius(Radius, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
Light->UpdatePosition(mCurrentStep);
|
||||
|
||||
SaveCheckpoint(tr("Changing Light Size"));
|
||||
SaveCheckpoint(tr("Changing Point Light Blender Radius"));
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcModel::SetLightSpotBlenderRadius(lcLight* Light, float Radius)
|
||||
{
|
||||
Light->SetSpotBlenderRadius(Radius, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
Light->UpdatePosition(mCurrentStep);
|
||||
|
||||
SaveCheckpoint(tr("Changing Light Spot Light Blender Radius"));
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcModel::SetLightDirectionalBlenderAngle(lcLight* Light, float Angle)
|
||||
{
|
||||
Light->SetDirectionalBlenderAngle(Angle, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
Light->UpdatePosition(mCurrentStep);
|
||||
|
||||
SaveCheckpoint(tr("Changing Directional Light Blender Angle"));
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcModel::SetLightAreaSize(lcLight* Light, lcVector2 LightAreaSize)
|
||||
{
|
||||
Light->SetAreaSize(LightAreaSize, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
Light->UpdatePosition(mCurrentStep);
|
||||
|
||||
SaveCheckpoint(tr("Changing Light Area Size"));
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
+4
-1
@@ -376,7 +376,10 @@ public:
|
||||
void SetSpotLightConeAngle(lcLight* Light, float Angle);
|
||||
void SetSpotLightPenumbraAngle(lcLight* Light, float Angle);
|
||||
void SetSpotLightPOVRayTightness(lcLight* Light, float Tightness);
|
||||
void SetLightSize(lcLight* Light, lcVector2 LightAreaSize);
|
||||
void SetLightPointBlenderRadius(lcLight* Light, float Radius);
|
||||
void SetLightSpotBlenderRadius(lcLight* Light, float Radius);
|
||||
void SetLightDirectionalBlenderAngle(lcLight* Light, float Angle);
|
||||
void SetLightAreaSize(lcLight* Light, lcVector2 LightAreaSize);
|
||||
void SetLightBlenderPower(lcLight* Light, float Power);
|
||||
void SetLightPOVRayPower(lcLight* Light, float Power);
|
||||
|
||||
|
||||
@@ -30,9 +30,9 @@ enum class lcObjectPropertyId
|
||||
LightCastShadow,
|
||||
LightPOVRayFadeDistance,
|
||||
LightPOVRayFadePower,
|
||||
LightPointSize,
|
||||
LightSpotSize,
|
||||
LightDirectionalSize,
|
||||
LightPointBlenderRadius,
|
||||
LightSpotBlenderRadius,
|
||||
LightDirectionalBlenderAngle,
|
||||
LightAreaSize,
|
||||
LightAreaSizeX,
|
||||
LightAreaSizeY,
|
||||
|
||||
@@ -388,19 +388,31 @@ void lcPropertiesWidget::FloatChanged()
|
||||
{
|
||||
Model->SetLightPOVRayFadePower(Light, Value);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::LightPointSize || PropertyId == lcObjectPropertyId::LightSpotSize || PropertyId == lcObjectPropertyId::LightDirectionalSize || PropertyId == lcObjectPropertyId::LightAreaSizeX)
|
||||
else if (PropertyId == lcObjectPropertyId::LightPointBlenderRadius)
|
||||
{
|
||||
lcVector2 LightSize = Light->GetSize();
|
||||
Model->SetLightPointBlenderRadius(Light, Value);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::LightSpotBlenderRadius)
|
||||
{
|
||||
Model->SetLightSpotBlenderRadius(Light, Value);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::LightDirectionalBlenderAngle)
|
||||
{
|
||||
Model->SetLightDirectionalBlenderAngle(Light, Value);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::LightAreaSizeX)
|
||||
{
|
||||
lcVector2 LightSize = Light->GetAreaSize();
|
||||
LightSize[0] = Value;
|
||||
|
||||
Model->SetLightSize(Light, LightSize);
|
||||
Model->SetLightAreaSize(Light, LightSize);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::LightAreaSizeY)
|
||||
{
|
||||
lcVector2 LightSize = Light->GetSize();
|
||||
lcVector2 LightSize = Light->GetAreaSize();
|
||||
LightSize[1] = Value;
|
||||
|
||||
Model->SetLightSize(Light, LightSize);
|
||||
Model->SetLightAreaSize(Light, LightSize);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::LightSpotConeAngle)
|
||||
{
|
||||
@@ -1043,14 +1055,14 @@ void lcPropertiesWidget::CreateWidgets()
|
||||
|
||||
AddSpacing();
|
||||
|
||||
AddFloatProperty(lcObjectPropertyId::LightPointSize, tr("Radius"), tr("Shadow soft size (Blender only)"), true, 0.0f, FLT_MAX);
|
||||
AddFloatProperty(lcObjectPropertyId::LightPointBlenderRadius, tr("Radius"), tr("Shadow soft size (Blender only)"), true, 0.0f, FLT_MAX);
|
||||
|
||||
AddFloatProperty(lcObjectPropertyId::LightSpotSize, tr("Radius"), tr("Shadow soft size (Blender only)"), true, 0.0f, FLT_MAX);
|
||||
AddFloatProperty(lcObjectPropertyId::LightSpotBlenderRadius, tr("Radius"), tr("Shadow soft size (Blender only)"), true, 0.0f, FLT_MAX);
|
||||
AddFloatProperty(lcObjectPropertyId::LightSpotConeAngle, tr("Spot Cone Angle"), tr("Angle in degrees of the spot light's beam"), true, 0.0f, 179.9f);
|
||||
AddFloatProperty(lcObjectPropertyId::LightSpotPenumbraAngle, tr("Spot Penumbra Angle"), tr("Angle in degrees over which the intensity of the spot light falls off to zero"), true, 0.0f, 179.9f);
|
||||
AddFloatProperty(lcObjectPropertyId::LightSpotPOVRayTightness, tr("Spot Tightness"), tr("Additional exponential spot light edge softening (POV-Ray only)"), true, 0.0f, FLT_MAX);
|
||||
|
||||
AddFloatProperty(lcObjectPropertyId::LightDirectionalSize, tr("Angle"), tr("Angular diameter of the light (Blender only)"), true, 0.0f, 180.0f);
|
||||
AddFloatProperty(lcObjectPropertyId::LightDirectionalBlenderAngle, tr("Angle"), tr("Angular diameter of the light (Blender only)"), true, 0.0f, 180.0f);
|
||||
|
||||
AddStringListProperty(lcObjectPropertyId::LightAreaShape, tr("Area Shape"), tr("The shape of the area light"), false, lcLight::GetAreaShapeStrings());
|
||||
AddFloatProperty(lcObjectPropertyId::LightAreaSizeX, tr("Size X"), tr("The width of the area light"), true, 0.0f, FLT_MAX);
|
||||
@@ -1262,7 +1274,8 @@ void lcPropertiesWidget::SetLight(const lcArray<lcObject*>& Selection, lcObject*
|
||||
|
||||
lcLightType LightType = lcLightType::Count;
|
||||
lcLightAreaShape LightAreaShape = lcLightAreaShape::Count;
|
||||
lcVector2 LightSize(0.0f, 0.0f);
|
||||
float PointBlenderRadius = 0.0f, SpotBlenderRadius = 0.0f, DirectionalBlenderAngle = 0.0f;
|
||||
lcVector2 AreaSize(0.0f, 0.0f);
|
||||
float BlenderPower = 0.0f, POVRayPower = 0.0f;
|
||||
float FadeDistance = 0.0f;
|
||||
float FadePower = 0.0f;
|
||||
@@ -1284,7 +1297,10 @@ void lcPropertiesWidget::SetLight(const lcArray<lcObject*>& Selection, lcObject*
|
||||
SpotConeAngle = Light->GetSpotConeAngle();
|
||||
SpotPenumbraAngle = Light->GetSpotPenumbraAngle();
|
||||
SpotTightness = Light->GetSpotPOVRayTightness();
|
||||
LightSize = Light->GetSize();
|
||||
PointBlenderRadius = Light->GetPointBlenderRadius();
|
||||
SpotBlenderRadius = Light->GetSpotBlenderRadius();
|
||||
DirectionalBlenderAngle = Light->GetDirectionalBlenderAngle();
|
||||
AreaSize = Light->GetAreaSize();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1333,30 +1349,30 @@ void lcPropertiesWidget::SetLight(const lcArray<lcObject*>& Selection, lcObject*
|
||||
UpdateFloat(lcObjectPropertyId::LightPOVRayFadePower, FadePower);
|
||||
|
||||
const bool IsPointLight = (LightType == lcLightType::Point);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightPointSize, IsPointLight);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightPointBlenderRadius, IsPointLight);
|
||||
|
||||
if (IsPointLight)
|
||||
UpdateFloat(lcObjectPropertyId::LightPointSize, LightSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightPointBlenderRadius, PointBlenderRadius);
|
||||
|
||||
const bool IsSpotLight = (LightType == lcLightType::Spot);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightSpotSize, IsSpotLight);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightSpotBlenderRadius, IsSpotLight);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightSpotConeAngle, IsSpotLight);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightSpotPenumbraAngle, IsSpotLight);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightSpotPOVRayTightness, IsSpotLight);
|
||||
|
||||
if (IsSpotLight)
|
||||
{
|
||||
UpdateFloat(lcObjectPropertyId::LightSpotSize, LightSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightSpotBlenderRadius, SpotBlenderRadius);
|
||||
UpdateFloat(lcObjectPropertyId::LightSpotConeAngle, SpotConeAngle);
|
||||
UpdateFloat(lcObjectPropertyId::LightSpotPenumbraAngle, SpotPenumbraAngle);
|
||||
UpdateFloat(lcObjectPropertyId::LightSpotPOVRayTightness, SpotTightness);
|
||||
}
|
||||
|
||||
const bool IsDirectionalLight = (LightType == lcLightType::Directional);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightDirectionalSize, IsDirectionalLight);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightDirectionalBlenderAngle, IsDirectionalLight);
|
||||
|
||||
if (IsDirectionalLight)
|
||||
UpdateFloat(lcObjectPropertyId::LightDirectionalSize, LightSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightDirectionalBlenderAngle, DirectionalBlenderAngle);
|
||||
|
||||
const bool IsAreaLight = (LightType == lcLightType::Area);
|
||||
SetPropertyVisible(lcObjectPropertyId::LightAreaShape, IsAreaLight);
|
||||
@@ -1372,9 +1388,9 @@ void lcPropertiesWidget::SetLight(const lcArray<lcObject*>& Selection, lcObject*
|
||||
if (IsAreaLight)
|
||||
{
|
||||
UpdateStringList(lcObjectPropertyId::LightAreaShape);
|
||||
UpdateFloat(lcObjectPropertyId::LightAreaSize, LightSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightAreaSizeX, LightSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightAreaSizeY, LightSize.y);
|
||||
UpdateFloat(lcObjectPropertyId::LightAreaSize, AreaSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightAreaSizeX, AreaSize.x);
|
||||
UpdateFloat(lcObjectPropertyId::LightAreaSizeY, AreaSize.y);
|
||||
UpdateInteger(lcObjectPropertyId::LightAreaPOVRayGridX);
|
||||
UpdateInteger(lcObjectPropertyId::LightAreaPOVRayGridY);
|
||||
}
|
||||
|
||||
+74
-56
@@ -25,37 +25,9 @@ lcLight::lcLight(const lcVector3& Position, lcLightType LightType)
|
||||
{
|
||||
mPosition.SetValue(Position);
|
||||
|
||||
UpdateLightType();
|
||||
|
||||
UpdatePosition(1);
|
||||
}
|
||||
|
||||
void lcLight::UpdateLightType()
|
||||
{
|
||||
lcVector2 Size(0.0f, 0.0f);
|
||||
|
||||
switch (mLightType)
|
||||
{
|
||||
case lcLightType::Point:
|
||||
case lcLightType::Spot:
|
||||
break;
|
||||
|
||||
case lcLightType::Directional:
|
||||
Size = lcVector2(0.00918f * LC_DTOR, 0.0f);
|
||||
break;
|
||||
|
||||
case lcLightType::Area:
|
||||
Size = lcVector2(200.0f, 200.0f);
|
||||
break;
|
||||
|
||||
case lcLightType::Count:
|
||||
break;
|
||||
}
|
||||
|
||||
mSize.RemoveAllKeys();
|
||||
mSize.SetValue(Size);
|
||||
}
|
||||
|
||||
QString lcLight::GetLightTypeString(lcLightType LightType)
|
||||
{
|
||||
switch (LightType)
|
||||
@@ -132,7 +104,10 @@ void lcLight::SaveLDraw(QTextStream& Stream) const
|
||||
mPosition.Save(Stream, "LIGHT", "POSITION", true);
|
||||
mRotation.Save(Stream, "LIGHT", "ROTATION", true);
|
||||
mColor.Save(Stream, "LIGHT", "COLOR", true);
|
||||
mSize.Save(Stream, "LIGHT", "SIZE", true);
|
||||
mPointBlenderRadius.Save(Stream, "LIGHT", "BLENDER_POINT_RADIUS", true);
|
||||
mSpotBlenderRadius.Save(Stream, "LIGHT", "BLENDER_SPOT_RADIUS", true);
|
||||
mDirectionalBlenderAngle.Save(Stream, "LIGHT", "BLENDER_DIRECTIONAL_ANGLE", true);
|
||||
mAreaSize.Save(Stream, "LIGHT", "AREA_SIZE", true);
|
||||
mBlenderPower.Save(Stream, "LIGHT", "BLENDER_POWER", true);
|
||||
mPOVRayPower.Save(Stream, "LIGHT", "POVRAY_POWER", true);
|
||||
mPOVRayFadeDistance.Save(Stream, "LIGHT", "POVRAY_FADE_DISTANCE", true);
|
||||
@@ -237,7 +212,13 @@ bool lcLight::ParseLDrawLine(QTextStream& Stream)
|
||||
continue;
|
||||
else if (mColor.Load(Stream, Token, "COLOR"))
|
||||
continue;
|
||||
else if (mSize.Load(Stream, Token, "SIZE"))
|
||||
else if (mPointBlenderRadius.Load(Stream, Token, "BLENDER_POINT_RADIUS"))
|
||||
continue;
|
||||
else if (mSpotBlenderRadius.Load(Stream, Token, "BLENDER_SPOT_RADIUS"))
|
||||
continue;
|
||||
else if (mDirectionalBlenderAngle.Load(Stream, Token, "BLENDER_DIRECTIONAL_ANGLE"))
|
||||
continue;
|
||||
else if (mAreaSize.Load(Stream, Token, "AREA_SIZE"))
|
||||
continue;
|
||||
else if (mBlenderPower.Load(Stream, Token, "BLENDER_POWER"))
|
||||
continue;
|
||||
@@ -353,7 +334,7 @@ void lcLight::RayTest(lcObjectRayTest& ObjectRayTest) const
|
||||
|
||||
float x = lcDot(IntersectionDirection, XAxis);
|
||||
float y = lcDot(IntersectionDirection, YAxis);
|
||||
const lcVector2& Size = mSize;
|
||||
const lcVector2& Size = mAreaSize;
|
||||
|
||||
if (fabsf(x) < Size.x / 2.0f && fabsf(y) < Size.y / 2.0f)
|
||||
{
|
||||
@@ -507,8 +488,6 @@ bool lcLight::SetLightType(lcLightType LightType)
|
||||
|
||||
mLightType = LightType;
|
||||
|
||||
UpdateLightType();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -563,12 +542,27 @@ bool lcLight::SetAreaPOVRayGrid(lcVector2i AreaGrid, lcStep Step, bool AddKey)
|
||||
return true;
|
||||
}
|
||||
|
||||
void lcLight::SetSize(lcVector2 Size, lcStep Step, bool AddKey)
|
||||
void lcLight::SetPointBlenderRadius(float Radius, lcStep Step, bool AddKey)
|
||||
{
|
||||
if (mLightType == lcLightType::Area && (mAreaShape == lcLightAreaShape::Square || mAreaShape == lcLightAreaShape::Disk))
|
||||
mPointBlenderRadius.ChangeKey(Radius, Step, AddKey);
|
||||
}
|
||||
|
||||
void lcLight::SetSpotBlenderRadius(float Radius, lcStep Step, bool AddKey)
|
||||
{
|
||||
mSpotBlenderRadius.ChangeKey(Radius, Step, AddKey);
|
||||
}
|
||||
|
||||
void lcLight::SetDirectionalBlenderAngle(float Angle, lcStep Step, bool AddKey)
|
||||
{
|
||||
mDirectionalBlenderAngle.ChangeKey(Angle, Step, AddKey);
|
||||
}
|
||||
|
||||
void lcLight::SetAreaSize(lcVector2 Size, lcStep Step, bool AddKey)
|
||||
{
|
||||
if (mAreaShape == lcLightAreaShape::Square || mAreaShape == lcLightAreaShape::Disk)
|
||||
Size[1] = Size[0];
|
||||
|
||||
mSize.ChangeKey(Size, Step, AddKey);
|
||||
mAreaSize.ChangeKey(Size, Step, AddKey);
|
||||
}
|
||||
|
||||
void lcLight::SetBlenderPower(float Power, lcStep Step, bool AddKey)
|
||||
@@ -601,7 +595,10 @@ void lcLight::InsertTime(lcStep Start, lcStep Time)
|
||||
mSpotPenumbraAngle.InsertTime(Start, Time);
|
||||
mSpotPOVRayTightness.InsertTime(Start, Time);
|
||||
mAreaPOVRayGrid.InsertTime(Start, Time);
|
||||
mSize.InsertTime(Start, Time);
|
||||
mPointBlenderRadius.InsertTime(Start, Time);
|
||||
mSpotBlenderRadius.InsertTime(Start, Time);
|
||||
mDirectionalBlenderAngle.InsertTime(Start, Time);
|
||||
mAreaSize.InsertTime(Start, Time);
|
||||
mBlenderPower.InsertTime(Start, Time);
|
||||
mPOVRayPower.InsertTime(Start, Time);
|
||||
mPOVRayFadeDistance.InsertTime(Start, Time);
|
||||
@@ -617,7 +614,10 @@ void lcLight::RemoveTime(lcStep Start, lcStep Time)
|
||||
mSpotPenumbraAngle.RemoveTime(Start, Time);
|
||||
mSpotPOVRayTightness.RemoveTime(Start, Time);
|
||||
mAreaPOVRayGrid.RemoveTime(Start, Time);
|
||||
mSize.RemoveTime(Start, Time);
|
||||
mPointBlenderRadius.RemoveTime(Start, Time);
|
||||
mSpotBlenderRadius.RemoveTime(Start, Time);
|
||||
mDirectionalBlenderAngle.RemoveTime(Start, Time);
|
||||
mAreaSize.RemoveTime(Start, Time);
|
||||
mBlenderPower.RemoveTime(Start, Time);
|
||||
mPOVRayPower.RemoveTime(Start, Time);
|
||||
mPOVRayFadeDistance.RemoveTime(Start, Time);
|
||||
@@ -633,7 +633,10 @@ void lcLight::UpdatePosition(lcStep Step)
|
||||
mSpotPenumbraAngle.Update(Step);
|
||||
mSpotPOVRayTightness.Update(Step);
|
||||
mAreaPOVRayGrid.Update(Step);
|
||||
mSize.Update(Step);
|
||||
mPointBlenderRadius.Update(Step);
|
||||
mSpotBlenderRadius.Update(Step);
|
||||
mDirectionalBlenderAngle.Update(Step);
|
||||
mAreaSize.Update(Step);
|
||||
mBlenderPower.Update(Step);
|
||||
mPOVRayPower.Update(Step);
|
||||
mPOVRayFadeDistance.Update(Step);
|
||||
@@ -744,7 +747,7 @@ void lcLight::DrawAreaLight(lcContext* Context) const
|
||||
{
|
||||
float Verts[4 * 3];
|
||||
float* CurVert = Verts;
|
||||
const lcVector2& Size = mSize;
|
||||
const lcVector2& Size = mAreaSize;
|
||||
|
||||
*CurVert++ = -Size.x / 2.0f;
|
||||
*CurVert++ = -Size.y / 2.0f;
|
||||
@@ -784,7 +787,7 @@ void lcLight::DrawAreaLight(lcContext* Context) const
|
||||
|
||||
for (int EdgeIndex = 0; EdgeIndex < CircleEdges; EdgeIndex++)
|
||||
{
|
||||
const lcVector2& Size = mSize;
|
||||
const lcVector2& Size = mAreaSize;
|
||||
float c = cosf((float)EdgeIndex / CircleEdges * LC_2PI) * Size.x / 2.0f;
|
||||
float s = sinf((float)EdgeIndex / CircleEdges * LC_2PI) * Size.y / 2.0f;
|
||||
|
||||
@@ -1101,9 +1104,9 @@ QVariant lcLight::GetPropertyValue(lcObjectPropertyId PropertyId) const
|
||||
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -1176,9 +1179,9 @@ bool lcLight::SetPropertyValue(lcObjectPropertyId PropertyId, lcStep Step, bool
|
||||
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -1253,13 +1256,19 @@ bool lcLight::HasKeyFrame(lcObjectPropertyId PropertyId, lcStep Time) const
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
return mPOVRayFadePower.HasKeyFrame(Time);
|
||||
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
return mPointBlenderRadius.HasKeyFrame(Time);
|
||||
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
return mSpotBlenderRadius.HasKeyFrame(Time);
|
||||
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
return mDirectionalBlenderAngle.HasKeyFrame(Time);
|
||||
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
return mSize.HasKeyFrame(Time);
|
||||
return mAreaSize.HasKeyFrame(Time);
|
||||
|
||||
case lcObjectPropertyId::LightSpotConeAngle:
|
||||
return mSpotConeAngle.HasKeyFrame(Time);
|
||||
@@ -1338,13 +1347,19 @@ bool lcLight::SetKeyFrame(lcObjectPropertyId PropertyId, lcStep Time, bool KeyFr
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
return mPOVRayFadePower.SetKeyFrame(Time, KeyFrame);
|
||||
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
return mPointBlenderRadius.SetKeyFrame(Time, KeyFrame);
|
||||
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
return mSpotBlenderRadius.SetKeyFrame(Time, KeyFrame);
|
||||
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
return mDirectionalBlenderAngle.SetKeyFrame(Time, KeyFrame);
|
||||
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
return mSize.SetKeyFrame(Time, KeyFrame);
|
||||
return mAreaSize.SetKeyFrame(Time, KeyFrame);
|
||||
|
||||
case lcObjectPropertyId::LightSpotConeAngle:
|
||||
return mSpotConeAngle.SetKeyFrame(Time, KeyFrame);
|
||||
@@ -1388,7 +1403,10 @@ void lcLight::RemoveKeyFrames()
|
||||
mSpotPenumbraAngle.RemoveAllKeys();
|
||||
mSpotPOVRayTightness.RemoveAllKeys();
|
||||
mAreaPOVRayGrid.RemoveAllKeys();
|
||||
mSize.RemoveAllKeys();
|
||||
mPointBlenderRadius.RemoveAllKeys();
|
||||
mSpotBlenderRadius.RemoveAllKeys();
|
||||
mDirectionalBlenderAngle.RemoveAllKeys();
|
||||
mAreaSize.RemoveAllKeys();
|
||||
mBlenderPower.RemoveAllKeys();
|
||||
mPOVRayPower.RemoveAllKeys();
|
||||
mPOVRayFadeDistance.RemoveAllKeys();
|
||||
|
||||
+28
-6
@@ -283,11 +283,32 @@ public:
|
||||
return mAreaPOVRayGrid;
|
||||
}
|
||||
|
||||
void SetSize(lcVector2 Size, lcStep Step, bool AddKey);
|
||||
void SetPointBlenderRadius(float Radius, lcStep Step, bool AddKey);
|
||||
|
||||
lcVector2 GetSize() const
|
||||
float GetPointBlenderRadius() const
|
||||
{
|
||||
return mSize;
|
||||
return mPointBlenderRadius;
|
||||
}
|
||||
|
||||
void SetSpotBlenderRadius(float Radius, lcStep Step, bool AddKey);
|
||||
|
||||
float GetSpotBlenderRadius() const
|
||||
{
|
||||
return mSpotBlenderRadius;
|
||||
}
|
||||
|
||||
void SetDirectionalBlenderAngle(float Angle, lcStep Step, bool AddKey);
|
||||
|
||||
float GetDirectionalBlenderAngle() const
|
||||
{
|
||||
return mDirectionalBlenderAngle;
|
||||
}
|
||||
|
||||
void SetAreaSize(lcVector2 Size, lcStep Step, bool AddKey);
|
||||
|
||||
lcVector2 GetAreaSize() const
|
||||
{
|
||||
return mAreaSize;
|
||||
}
|
||||
|
||||
void SetBlenderPower(float Power, lcStep Step, bool AddKey);
|
||||
@@ -325,8 +346,6 @@ public:
|
||||
void CreateName(const lcArray<lcLight*>& Lights);
|
||||
|
||||
protected:
|
||||
void UpdateLightType();
|
||||
|
||||
void DrawPointLight(lcContext* Context) const;
|
||||
void DrawSpotLight(lcContext* Context) const;
|
||||
void DrawDirectionalLight(lcContext* Context) const;
|
||||
@@ -344,7 +363,10 @@ protected:
|
||||
lcObjectProperty<lcVector3> mPosition = lcObjectProperty<lcVector3>(lcVector3(0.0f, 0.0f, 0.0f));
|
||||
lcObjectProperty<lcMatrix33> mRotation = lcObjectProperty<lcMatrix33>(lcMatrix33Identity());
|
||||
lcObjectProperty<lcVector3> mColor = lcObjectProperty<lcVector3>(lcVector3(1.0f, 1.0f, 1.0f));
|
||||
lcObjectProperty<lcVector2> mSize = lcObjectProperty<lcVector2>(lcVector2(0.0f, 0.0f));
|
||||
lcObjectProperty<float> mPointBlenderRadius = lcObjectProperty<float>(0.0f);
|
||||
lcObjectProperty<float> mSpotBlenderRadius = lcObjectProperty<float>(0.0f);
|
||||
lcObjectProperty<float> mDirectionalBlenderAngle = lcObjectProperty<float>(0.00918f * LC_DTOR);
|
||||
lcObjectProperty<lcVector2> mAreaSize = lcObjectProperty<lcVector2>(lcVector2(200.0f, 200.0f));
|
||||
lcObjectProperty<float> mBlenderPower = lcObjectProperty<float>(10.0f);
|
||||
lcObjectProperty<float> mPOVRayPower = lcObjectProperty<float>(1.0f);
|
||||
lcObjectProperty<float> mPOVRayFadeDistance = lcObjectProperty<float>(0.0f);
|
||||
|
||||
+3
-3
@@ -64,9 +64,9 @@ QString lcObject::GetCheckpointString(lcObjectPropertyId PropertyId)
|
||||
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
|
||||
+12
-12
@@ -692,9 +692,9 @@ QVariant lcPiece::GetPropertyValue(lcObjectPropertyId PropertyId) const
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -754,9 +754,9 @@ bool lcPiece::SetPropertyValue(lcObjectPropertyId PropertyId, lcStep Step, bool
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -809,9 +809,9 @@ bool lcPiece::HasKeyFrame(lcObjectPropertyId PropertyId, lcStep Time) const
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
@@ -870,9 +870,9 @@ bool lcPiece::SetKeyFrame(lcObjectPropertyId PropertyId, lcStep Time, bool KeyFr
|
||||
case lcObjectPropertyId::LightCastShadow:
|
||||
case lcObjectPropertyId::LightPOVRayFadeDistance:
|
||||
case lcObjectPropertyId::LightPOVRayFadePower:
|
||||
case lcObjectPropertyId::LightPointSize:
|
||||
case lcObjectPropertyId::LightSpotSize:
|
||||
case lcObjectPropertyId::LightDirectionalSize:
|
||||
case lcObjectPropertyId::LightPointBlenderRadius:
|
||||
case lcObjectPropertyId::LightSpotBlenderRadius:
|
||||
case lcObjectPropertyId::LightDirectionalBlenderAngle:
|
||||
case lcObjectPropertyId::LightAreaSize:
|
||||
case lcObjectPropertyId::LightAreaSizeX:
|
||||
case lcObjectPropertyId::LightAreaSizeY:
|
||||
|
||||
+2
-2
@@ -2207,8 +2207,8 @@ bool Project::ExportPOVRay(const QString& FileName)
|
||||
|
||||
case lcLightType::Area:
|
||||
AreaCircle = (Light->GetAreaShape() == lcLightAreaShape::Disk || Light->GetAreaShape() == lcLightAreaShape::Ellipse) ? 1 : 0;
|
||||
AreaX = lcVector3(Light->GetWorldMatrix()[0]) * Light->GetSize().x;
|
||||
AreaY = lcVector3(Light->GetWorldMatrix()[1]) * Light->GetSize().y;
|
||||
AreaX = lcVector3(Light->GetWorldMatrix()[0]) * Light->GetAreaSize().x;
|
||||
AreaY = lcVector3(Light->GetWorldMatrix()[1]) * Light->GetAreaSize().y;
|
||||
AreaGrid = Light->GetAreaPOVRayGrid();
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user