public AsFragmentFilter(int numPasses, float resolution) { if(AsCapabilities.getIsDebugger() && AsGlobal.getQualifiedClassName(this) == "starling.filters::FragmentFilter") { throw new AsAbstractClassError(); } if(numPasses < 1) { throw new AsArgumentError("At least one pass is required."); } mNumPasses = numPasses; mMarginX = mMarginY = 0.0f; mOffsetX = mOffsetY = 0; mResolution = resolution; mMode = AsFragmentFilterMode.REPLACE; mVertexData = new AsVertexData(4); mVertexData.setTexCoords(0, 0, 0); mVertexData.setTexCoords(1, 1, 0); mVertexData.setTexCoords(2, 0, 1); mVertexData.setTexCoords(3, 1, 1); mIndexData = new AsVector<uint>(); mIndexData.setOwnProperty("_fixed", true); createPrograms(); AsStarling.getCurrent().getStage3D().addEventListener(AsEvent.CONTEXT3D_CREATE, onContextCreated, false, 0, true); }
public AsQuadBatch() { mVertexData = new AsVertexData(0, true); mIndexData = new AsVector<uint>(); mNumQuads = 0; mTinted = false; mSyncRequired = false; AsStarling.getCurrent().getStage3D().addEventListener(AsEvent.CONTEXT3D_CREATE, onContextCreated, false, 0, true); }
public override void copyVertexDataTo(AsVertexData targetData, int targetVertexID) { if(mVertexDataCacheInvalid) { mVertexDataCacheInvalid = false; mVertexData.copyTo(mVertexDataCache); mTexture.adjustVertexData(mVertexDataCache, 0, 4); } mVertexDataCache.copyTo(targetData, targetVertexID); }
public AsQuad(float width, float height, uint color, bool premultipliedAlpha) { mTinted = color != 0xffffff; mVertexData = new AsVertexData(4, premultipliedAlpha); mVertexData.setPosition(0, 0.0f, 0.0f); mVertexData.setPosition(1, width, 0.0f); mVertexData.setPosition(2, 0.0f, height); mVertexData.setPosition(3, width, height); mVertexData.setUniformColor(color); onVertexDataChanged(); }
public virtual AsVertexData clone(int vertexID, int numVertices) { if(numVertices < 0 || vertexID + numVertices > mNumVertices) { numVertices = mNumVertices - vertexID; } AsVertexData clone = new AsVertexData(0, mPremultipliedAlpha); clone.mNumVertices = numVertices; clone.mRawData = mRawData.slice(vertexID * ELEMENTS_PER_VERTEX, numVertices * ELEMENTS_PER_VERTEX); clone.mRawData.setOwnProperty("_fixed", true); return clone; }
public virtual AsVertexData clone(int vertexID, int numVertices) { if (numVertices < 0 || vertexID + numVertices > mNumVertices) { numVertices = mNumVertices - vertexID; } AsVertexData clone = new AsVertexData(0, mPremultipliedAlpha); clone.mNumVertices = numVertices; clone.mRawData = mRawData.slice(vertexID * ELEMENTS_PER_VERTEX, numVertices * ELEMENTS_PER_VERTEX); clone.mRawData.setOwnProperty("_fixed", true); return(clone); }
public AsImage(AsTexture texture) : base(texture.getFrame() != null ? texture.getFrame().width : texture.getWidth(), texture.getFrame() != null ? texture.getFrame().height : texture.getHeight(), 0xffffff, texture.getPremultipliedAlpha()) { bool pma = texture.getPremultipliedAlpha(); mVertexData.setTexCoords(0, 0.0f, 0.0f); mVertexData.setTexCoords(1, 1.0f, 0.0f); mVertexData.setTexCoords(2, 0.0f, 1.0f); mVertexData.setTexCoords(3, 1.0f, 1.0f); mTexture = texture; mSmoothing = AsTextureSmoothing.BILINEAR; mVertexDataCache = new AsVertexData(4, pma); mVertexDataCacheInvalid = true; }
public virtual void append(AsVertexData data) { mRawData.setOwnProperty("_fixed", false); int targetIndex = (int)(mRawData.getLength()); AsVector<float> rawData = data.mRawData; int rawDataLength = (int)(rawData.getLength()); int i = 0; for (; i < rawDataLength; ++i) { mRawData[targetIndex++] = rawData[i]; } mNumVertices = mNumVertices + data.getNumVertices(); mRawData.setOwnProperty("_fixed", true); }
public virtual void append(AsVertexData data) { mRawData.setOwnProperty("_fixed", false); int targetIndex = (int)(mRawData.getLength()); AsVector <float> rawData = data.mRawData; int rawDataLength = (int)(rawData.getLength()); int i = 0; for (; i < rawDataLength; ++i) { mRawData[targetIndex++] = rawData[i]; } mNumVertices = mNumVertices + data.getNumVertices(); mRawData.setOwnProperty("_fixed", true); }
public override void adjustVertexData(AsVertexData vertexData, int vertexID, int count) { base.adjustVertexData(vertexData, vertexID, count); float clipX = mRootClipping.x; float clipY = mRootClipping.y; float clipWidth = mRootClipping.width; float clipHeight = mRootClipping.height; int endIndex = vertexID + count; int i = vertexID; for (; i < endIndex; ++i) { vertexData.getTexCoords(i, sTexCoords); vertexData.setTexCoords(i, clipX + sTexCoords.x * clipWidth, clipY + sTexCoords.y * clipHeight); } }
public virtual void copyTo(AsVertexData targetData, int targetVertexID, int vertexID, int numVertices) { if(numVertices < 0 || vertexID + numVertices > mNumVertices) { numVertices = mNumVertices - vertexID; } AsVector<float> targetRawData = targetData.mRawData; int targetIndex = targetVertexID * ELEMENTS_PER_VERTEX; int sourceIndex = vertexID * ELEMENTS_PER_VERTEX; int dataLength = numVertices * ELEMENTS_PER_VERTEX; int i = sourceIndex; for (; i < dataLength; ++i) { targetRawData[targetIndex++] = mRawData[i]; } }
public virtual void copyTo(AsVertexData targetData, int targetVertexID, int vertexID, int numVertices) { if (numVertices < 0 || vertexID + numVertices > mNumVertices) { numVertices = mNumVertices - vertexID; } AsVector <float> targetRawData = targetData.mRawData; int targetIndex = targetVertexID * ELEMENTS_PER_VERTEX; int sourceIndex = vertexID * ELEMENTS_PER_VERTEX; int dataLength = numVertices * ELEMENTS_PER_VERTEX; int i = sourceIndex; for (; i < dataLength; ++i) { targetRawData[targetIndex++] = mRawData[i]; } }
public virtual void copyTo(AsVertexData targetData) { copyTo(targetData, 0, 0, -1); }
public virtual void copyVertexDataTo(AsVertexData targetData) { copyVertexDataTo(targetData, 0); }
public virtual void copyVertexDataTo(AsVertexData targetData, int targetVertexID) { mVertexData.copyTo(targetData, targetVertexID); }
public virtual void copyTo(AsVertexData targetData, int targetVertexID) { copyTo(targetData, targetVertexID, 0, -1); }
public virtual void copyTo(AsVertexData targetData, int targetVertexID, int vertexID) { copyTo(targetData, targetVertexID, vertexID, -1); }
public virtual void adjustVertexData(AsVertexData vertexData, int vertexID, int count) { if(mFrame != null) { if(count != 4) { throw new AsArgumentError("Textures with a frame can only be used on quads"); } float deltaRight = mFrame.width + mFrame.x - getWidth(); float deltaBottom = mFrame.height + mFrame.y - getHeight(); vertexData.translateVertex(vertexID, -mFrame.x, -mFrame.y); vertexData.translateVertex(vertexID + 1, -deltaRight, -mFrame.y); vertexData.translateVertex(vertexID + 2, -mFrame.x, -deltaBottom); vertexData.translateVertex(vertexID + 3, -deltaRight, -deltaBottom); } }