Преглед на файлове

colorAffectsChildren=false now prevents all parent color from affecting child entities, fixed bezier curve not deselecting properly when selecting another bezier curve in the entity editor

Ivan Safrin преди 11 години
родител
ревизия
fd96742c9b

+ 1 - 0
Core/Contents/Include/PolyRenderer.h

@@ -304,6 +304,7 @@ namespace Polycode {
         
         
         void pushVertexColor();
         void pushVertexColor();
         void popVertexColor();
         void popVertexColor();
+        void loadVertexColorIdentity();
         void multiplyVertexColor(const Color &color);
         void multiplyVertexColor(const Color &color);
         
         
 	protected:
 	protected:

+ 5 - 4
Core/Contents/Source/PolyEntity.cpp

@@ -503,7 +503,6 @@ void Entity::transformAndRender() {
 	}
 	}
 
 
     renderer->multModelviewMatrix(transformMatrix);
     renderer->multModelviewMatrix(transformMatrix);
-	renderer->setVertexColor(color.r,color.g,color.b,color.a);
 	
 	
 	if(billboardMode) {
 	if(billboardMode) {
 		if(billboardIgnoreScale) {
 		if(billboardIgnoreScale) {
@@ -539,18 +538,20 @@ void Entity::transformAndRender() {
 	}
 	}
     
     
     if(!colorAffectsChildren) {
     if(!colorAffectsChildren) {
-        renderer->popVertexColor();
+        renderer->pushVertexColor();
+        renderer->loadVertexColorIdentity();
         if(visible || (!visible && !visibilityAffectsChildren)) {
         if(visible || (!visible && !visibilityAffectsChildren)) {
             renderChildren();
             renderChildren();
         }
         }
+        renderer->popVertexColor();
     } else {
     } else {
         if(visible || (!visible && !visibilityAffectsChildren)) {
         if(visible || (!visible && !visibilityAffectsChildren)) {
             renderChildren();
             renderChildren();
         }
         }
-        renderer->popVertexColor();
     }
     }
 		
 		
-				
+    renderer->popVertexColor();
+    
 	renderer->popMatrix();
 	renderer->popMatrix();
 	
 	
 	if(!depthWrite)
 	if(!depthWrite)

+ 5 - 0
Core/Contents/Source/PolyRenderer.cpp

@@ -88,6 +88,11 @@ void Renderer::multiplyVertexColor(const Color &color) {
     setVertexColor(currentVertexColor.r, currentVertexColor.g, currentVertexColor.b, currentVertexColor.a);
     setVertexColor(currentVertexColor.r, currentVertexColor.g, currentVertexColor.b, currentVertexColor.a);
 }
 }
 
 
+void Renderer::loadVertexColorIdentity() {
+    currentVertexColor = Color(1.0, 1.0, 1.0, 1.0);
+    setVertexColor(currentVertexColor.r, currentVertexColor.g, currentVertexColor.b, currentVertexColor.a);
+}
+
 void Renderer::enableShaders(bool flag) {
 void Renderer::enableShaders(bool flag) {
 	shadersEnabled = flag;
 	shadersEnabled = flag;
 }
 }

+ 4 - 0
IDE/Contents/Source/PolycodeEntityEditor.cpp

@@ -92,6 +92,7 @@ CurveDisplay::CurveDisplay(Scene *parentScene, SceneCurve *curve) : DummyTargetE
     this->parentScene = parentScene;
     this->parentScene = parentScene;
     targetPoint = NULL;
     targetPoint = NULL;
     propertyEntity = curve;
     propertyEntity = curve;
+    colorAffectsChildren = false;
     
     
     controlPointLines = new SceneMesh(Mesh::LINE_MESH);
     controlPointLines = new SceneMesh(Mesh::LINE_MESH);
     controlPointLines->setColor(1.0, 1.0, 0.4, 1.0);
     controlPointLines->setColor(1.0, 1.0, 0.4, 1.0);
@@ -1606,6 +1607,9 @@ void EntityEditorMainView::handleEvent(Event *event) {
                 DummyTargetEntity *dummyTarget = dynamic_cast<DummyTargetEntity*>(event->getDispatcher());
                 DummyTargetEntity *dummyTarget = dynamic_cast<DummyTargetEntity*>(event->getDispatcher());
                 if(dummyTarget) {
                 if(dummyTarget) {
                     targetEntity = dummyEntity;
                     targetEntity = dummyEntity;
+                    if(dummyTargetEntity) {
+                        dummyTargetEntity->handleDeselect();
+                    }
                     dummyTargetEntity = dummyTarget;
                     dummyTargetEntity = dummyTarget;
                     dummyEntity->setPosition(dummyTarget->getSelectedPoint());
                     dummyEntity->setPosition(dummyTarget->getSelectedPoint());
                 }
                 }