コード例 #1
0
 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);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 public override void copyVertexDataTo(AsVertexData targetData, int targetVertexID)
 {
     if(mVertexDataCacheInvalid)
     {
         mVertexDataCacheInvalid = false;
         mVertexData.copyTo(mVertexDataCache);
         mTexture.adjustVertexData(mVertexDataCache, 0, 4);
     }
     mVertexDataCache.copyTo(targetData, targetVertexID);
 }
コード例 #4
0
 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();
 }
コード例 #5
0
 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;
 }
コード例 #6
0
        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);
        }
コード例 #7
0
 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;
 }
コード例 #8
0
 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);
 }
コード例 #9
0
        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);
        }
コード例 #10
0
 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);
     }
 }
コード例 #11
0
 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];
     }
 }
コード例 #12
0
        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];
            }
        }
コード例 #13
0
 public virtual void copyTo(AsVertexData targetData)
 {
     copyTo(targetData, 0, 0, -1);
 }
コード例 #14
0
 public virtual void copyVertexDataTo(AsVertexData targetData)
 {
     copyVertexDataTo(targetData, 0);
 }
コード例 #15
0
 public virtual void copyVertexDataTo(AsVertexData targetData, int targetVertexID)
 {
     mVertexData.copyTo(targetData, targetVertexID);
 }
コード例 #16
0
 public virtual void copyTo(AsVertexData targetData)
 {
     copyTo(targetData, 0, 0, -1);
 }
コード例 #17
0
 public virtual void copyTo(AsVertexData targetData, int targetVertexID)
 {
     copyTo(targetData, targetVertexID, 0, -1);
 }
コード例 #18
0
 public virtual void copyTo(AsVertexData targetData, int targetVertexID, int vertexID)
 {
     copyTo(targetData, targetVertexID, vertexID, -1);
 }
コード例 #19
0
 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);
     }
 }