Bläddra i källkod

Fixed single line UITextInput crashing on mousewheel events, fixed normalized render targets not working properly

Ivan Safrin 12 år sedan
förälder
incheckning
2365cebc9b

+ 1 - 3
Core/Contents/Include/PolyShader.h

@@ -114,7 +114,7 @@ namespace Polycode {
 			Number width;
 			Number width;
 			Number height;
 			Number height;
 			int sizeMode;
 			int sizeMode;
-			Texture *texture;
+			Texture *texture;			
 			
 			
 			Number normalizedWidth;
 			Number normalizedWidth;
 			Number normalizedHeight;
 			Number normalizedHeight;
@@ -145,8 +145,6 @@ namespace Polycode {
 			String name;
 			String name;
 			int mode;
 			int mode;
 			Texture *texture;
 			Texture *texture;
-			Number width;
-			Number height;			
 			static const int MODE_IN= 0;
 			static const int MODE_IN= 0;
 			static const int MODE_OUT = 1;
 			static const int MODE_OUT = 1;
 			static const int MODE_COLOR = 2;
 			static const int MODE_COLOR = 2;

+ 7 - 4
Core/Contents/Source/PolyCamera.cpp

@@ -364,10 +364,13 @@ void Camera::drawFilter(Texture *targetTexture, Number targetTextureWidth, Numbe
 				}
 				}
 		} else {
 		} else {
 			for(int j=0; j < materialBinding->getNumOutTargetBindings(); j++) {
 			for(int j=0; j < materialBinding->getNumOutTargetBindings(); j++) {
-				CoreServices::getInstance()->getRenderer()->setViewportSize(materialBinding->getOutTargetBinding(j)->width, materialBinding->getOutTargetBinding(j)->height);
-				CoreServices::getInstance()->getRenderer()->bindFrameBufferTexture(materialBinding->getOutTargetBinding(j)->texture);
-				CoreServices::getInstance()->getRenderer()->drawScreenQuad(materialBinding->getOutTargetBinding(j)->width, materialBinding->getOutTargetBinding(j)->height);
-				CoreServices::getInstance()->getRenderer()->unbindFramebuffers();
+				Texture *bindingTexture = materialBinding->getOutTargetBinding(j)->texture;
+				if(bindingTexture) {
+					CoreServices::getInstance()->getRenderer()->setViewportSize(bindingTexture->getWidth(), bindingTexture->getHeight());
+					CoreServices::getInstance()->getRenderer()->bindFrameBufferTexture(bindingTexture);				
+					CoreServices::getInstance()->getRenderer()->drawScreenQuad(bindingTexture->getWidth(), bindingTexture->getHeight());
+					CoreServices::getInstance()->getRenderer()->unbindFramebuffers();
+				}
 			}		
 			}		
 		}
 		}
 		CoreServices::getInstance()->getRenderer()->clearShader();
 		CoreServices::getInstance()->getRenderer()->clearShader();

+ 0 - 2
Core/Contents/Source/PolyMaterial.cpp

@@ -121,8 +121,6 @@ void Material::recreateRenderTarget(ShaderRenderTarget *renderTarget) {
 			for(int j=0; j < shaderBindings[i]->getNumRenderTargetBindings(); j++) {
 			for(int j=0; j < shaderBindings[i]->getNumRenderTargetBindings(); j++) {
 				if(shaderBindings[i]->getRenderTargetBinding(j)->texture == oldTexture) {
 				if(shaderBindings[i]->getRenderTargetBinding(j)->texture == oldTexture) {
 					shaderBindings[i]->getRenderTargetBinding(j)->texture = newTexture;
 					shaderBindings[i]->getRenderTargetBinding(j)->texture = newTexture;
-					shaderBindings[i]->getRenderTargetBinding(j)->width = newTexture->getWidth();
-					shaderBindings[i]->getRenderTargetBinding(j)->height = newTexture->getHeight();
 					shaderBindings[i]->clearTexture(shaderBindings[i]->getRenderTargetBinding(j)->name);
 					shaderBindings[i]->clearTexture(shaderBindings[i]->getRenderTargetBinding(j)->name);
 					shaderBindings[i]->addTexture(shaderBindings[i]->getRenderTargetBinding(j)->name, newTexture);					
 					shaderBindings[i]->addTexture(shaderBindings[i]->getRenderTargetBinding(j)->name, newTexture);					
 				}
 				}

+ 0 - 2
Core/Contents/Source/PolyMaterialManager.cpp

@@ -564,8 +564,6 @@ Material *MaterialManager::materialFromXMLNode(TiXmlNode *node) {
 									if(renderTargets[l]->id == newBinding->id) {
 									if(renderTargets[l]->id == newBinding->id) {
 										printf("Assigning texture to %s\n", newBinding->id.c_str());
 										printf("Assigning texture to %s\n", newBinding->id.c_str());
 										newBinding->texture = renderTargets[l]->texture;
 										newBinding->texture = renderTargets[l]->texture;
-										newBinding->width = renderTargets[l]->width;
-										newBinding->height = renderTargets[l]->height;
 									}
 									}
 								}
 								}
 								
 								

+ 3 - 2
Core/Contents/Source/PolyScreen.cpp

@@ -162,9 +162,10 @@ void Screen::drawFilter() {
 			renderer->drawScreenQuad(renderer->getXRes(), renderer->getYRes());		
 			renderer->drawScreenQuad(renderer->getXRes(), renderer->getYRes());		
 		} else {
 		} else {
 			for(int j=0; j < materialBinding->getNumOutTargetBindings(); j++) {
 			for(int j=0; j < materialBinding->getNumOutTargetBindings(); j++) {
-				renderer->bindFrameBufferTexture(materialBinding->getOutTargetBinding(j)->texture);
+				Texture *bindingTexture = materialBinding->getOutTargetBinding(j)->texture;
+				renderer->bindFrameBufferTexture(bindingTexture);
 				
 				
-				renderer->drawScreenQuad(materialBinding->getOutTargetBinding(j)->width, materialBinding->getOutTargetBinding(j)->height);
+				renderer->drawScreenQuad(bindingTexture->getWidth(), bindingTexture->getHeight());
 				renderer->unbindFramebuffers();
 				renderer->unbindFramebuffers();
 			}						
 			}						
 		}
 		}

+ 0 - 2
IDE/Contents/Source/PolycodeProps.cpp

@@ -1383,8 +1383,6 @@ void TargetBindingProp::handleEvent(Event *event) {
 		ShaderRenderTarget *target = (ShaderRenderTarget*)targetComboBox->getSelectedItem()->data;		
 		ShaderRenderTarget *target = (ShaderRenderTarget*)targetComboBox->getSelectedItem()->data;		
 		targetBinding->texture = target->texture;
 		targetBinding->texture = target->texture;
 		targetBinding->id  = target->id;
 		targetBinding->id  = target->id;
-		targetBinding->width = target->width;
-		targetBinding->height = target->height;
 		
 		
 		binding->removeRenderTargetBinding(targetBinding);		
 		binding->removeRenderTargetBinding(targetBinding);		
 		binding->addRenderTargetBinding(targetBinding);		
 		binding->addRenderTargetBinding(targetBinding);		

+ 1 - 1
Modules/Contents/UI/Include/PolyUITextInput.h

@@ -113,7 +113,7 @@ namespace Polycode {
 			 * If the input is single-line, insert the complete text into
 			 * If the input is single-line, insert the complete text into
 			 * the line, without taking linebreaks into account.
 			 * the line, without taking linebreaks into account.
 			 *
 			 *
-			 * If the input is multi-line, each line is inserted separately
+			* If the input is multi-line, each line is inserted separately
 			 * into the text field
 			 * into the text field
 			 *
 			 *
 			 * @param text The new text contents.
 			 * @param text The new text contents.

+ 6 - 2
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -1568,10 +1568,14 @@ void UITextInput::handleEvent(Event *event) {
 				draggingSelection = false;
 				draggingSelection = false;
 			break;
 			break;
 			case InputEvent::EVENT_MOUSEWHEEL_UP:
 			case InputEvent::EVENT_MOUSEWHEEL_UP:
-				scrollContainer->onMouseWheelUp(0, 0);
+				if(scrollContainer) {
+					scrollContainer->onMouseWheelUp(0, 0);
+				}
 			break;
 			break;
 			case InputEvent::EVENT_MOUSEWHEEL_DOWN:
 			case InputEvent::EVENT_MOUSEWHEEL_DOWN:
-				scrollContainer->onMouseWheelDown(0, 0);
+				if(scrollContainer) {
+					scrollContainer->onMouseWheelDown(0, 0);
+				}
 			break;
 			break;
 			case InputEvent::EVENT_DOUBLECLICK:
 			case InputEvent::EVENT_DOUBLECLICK:
 				selectWordAtCaret();
 				selectWordAtCaret();