Pass Hierarchy Variable to RSR_OLAP_BADI
Hi Gurus,
I am using RSR_OLAP_BADI. Within the variable selection screen there is a hierarchy selection variable, I would like to pass the variable to the 'compute' badi logic.
What is the best way to do this?
Thanks in advance!.
Hello Tom,
Iu2019m glad that You said youu2019re not struggling with Badi. Let me refresh the memory briefly.
Step 1, Include ZXRSRU01
IF i_s_rkb1d-infocube EQ 'AA'.
IF i_step = '3'.
u2026..
Step 2, Define Method
CASE i_s_rkb1d-infocube.
WHEN u2018AAu2019.
u2026
append l_s_chanm to c_t_chanm
Step 3, Compute Method
u2026
ASSIGN COMPONENT XYZ OF STRUCTURE c_s_data
TO <XYYZZ>.
u2026
Logic for Your Spec
u2026
Jen
PS: Should search for articles about Virtual KF/Char for more details about step 2 and 3.
Edited by: Jen Yakimoto on Jan 18, 2011 1:35 AM
Similar Messages
-
Passing Hierarchy Variable from URL to Template
Hi
How do I pass a Hierarchy Variable from URL Query String to the Web Template.
I am on NW04s SP11. Could anyone please help me out as it is urgent and we need to show case BI capabillities to Client.
Thank You
With Wishes
KrishThis link might be useful...
http://help.sap.com/saphelp_nw04/helpdata/en/72/726b11561e6b4fafc43d692c4e27ab/content.htm -
Hierarchy variable not passed over to universe
Hierarchy variable is not passed to the universe from the query, note 1007048 is not applicable to our system.
Any ideas on what other config to check and change ?Hi,
- does the query work without any issues in transaction RSRT ?
- do you see the variable as filter in the Universe ?
Ingo -
Input hierarchy variable is not working
Hi,
i have created a BI quary which have a manual input hierarchy variable.Now i have created a Universe on it,and then Qaaws.
In Qaaws this varibale working fine,its gives proper result aCcording to selection of node.Then i have used this in Xcelsius,i have created a connection and then as input value i provided ROOT node key thorugh mapping this to one cell, and mapped the output cell.
Now if when i preview it,its showing no data,and if remove the input node value(balnck cell) then its showing data.I find out that its not taking the value.
What could be wrong here?How to pass hhierarchy node in xcelsius?
Thanks,
PiyushHi,
I had the exact same problem. Please have a look at this thread:
xPost: QaaWS, BW, Xcelsius and aggregation
Here is what you need to do (assuming you are on XI 3.1 SP2)
1) Refresh you universe with the option Generate technical names. This will give you an additional detail for each dimension in your universe called ...techname. So if you now check e.g. L01, L02 in your hierarchy they will have this attribute.
2) Create a new web service that includes key and the techname detail
3) Insert this into your visualization and use it to fill e.g. a combo box (key) and return the key + techname when selected
4) You can then use the techname to filter your second web service in the input values
Hth.,
Jacob Lund -
How to pass hierarchy node value to another report using RRI
hi,
i want to pass hierarchy node value to another report but i can not able to do this using hierarchy variable so i want solution for this.
Reply me as soon as possible its very argent.Did you wanted to jump from Node to Node ? I guess you cannot do that....did you try ?
-
How do I pass a variable from edge animate to an external JS?
I need to pass a variable value from Edge Animate to an external JS file. How can I do it?
Not sure if this is the best way ,but works
Set the variable as a property of a global variable
Like
SET
window.myVar = 'your value';
AdobeEdge.myVar = 'your value';
Read
window.myVar
AdobeEdge.myVar -
How do i pass a variable in flex
i've been looking all over google for how to pass a variable yet
i've come up empty handed
i have a C code and as3
i've never been able to get a C program to compile on my own, this is from a tutorial im trying to understand about raycasting
from what i can gather i think that the variables are passed threw this
#######raycaster.c##########
AS3_Val loop( void* self, AS3_Val args )
AS3_ArrayValue(args,"IntType,IntType,IntType,IntType",&K_UP,&K_DOWN,&K_LEFT,&K_RIGHT);
CastRay();
int opos,j,i,jpos;
for(j=0; j < resY; j++ ){
jpos = resX*j;
for(i=0; i < resX; i++ ){
opos = (jpos+i);
tBuffer[opos] = buffer[i][j];
}//end of for
}//end of for
return 0;
}//end of loop
however not one of the values inside of AS3_ArrayValue is to be found on the Main.as
this is the only function that comunicates with the C code, but i could be wrong
####Main.as######
private function enterFrame(event:Event):void {
alcRCLib.loop(upKey,downKey,leftKey,rightKey);
alchemyMemory.position=alcScreenBufferPointer;
screenBitmapData.setPixels(screenBitmapData.rect,alchemyMemory);
the reason i want to do this, other than to know how, because that would be useful above all else, i've already written a as3 that comunicates with php
to get a array of images for a topdown game, and i wouldn't know how to load these variables to C from a HTTP request but if i can get flash to tell c what they are then every thing worked out
heres both codes in full
#####Main.as####
*Alchemy Ray Caster
*April 6, 2010
*Bruce Jawn
*http://bruce-lab.blogspot.com
*Copyright (c) <2010> <Bruce Jawn>
*This software is released under the MIT License
*<http://www.opensource.org/licenses/mit-license.php>
package {
// import cmodule.Ray_Caster._worldMap;
// import cmodule.Ray_Caster._worldMap;
import cmodule.Ray_Caster.CLibInit;
// import cmodule.Ray_Caster.TextFieldI;
import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.geom.*;
import flash.text.engine.TextBlock;
import flash.text.engine.TextLine;
import flash.text.TextField;
import flash.utils.*;
import flash.ui.*;
[SWF(width="840", height="880")]
public class Main extends Sprite {
[Embed(source="../wolftex/barrel.png")]
public static var barrelClass:Class;
[Embed(source="../wolftex/bluestone.png")]
public static var bluestoneClass:Class;
[Embed(source="../wolftex/colorstone.png")]
public static var colorstoneClass:Class;
[Embed(source="../wolftex/eagle.png")]
public static var eagleClass:Class;
[Embed(source="../wolftex/greenlight.png")]
public static var greenlightClass:Class;
[Embed(source="../wolftex/greystone.png")]
public static var greystoneClass:Class;
[Embed(source="../wolftex/mossy.png")]
public static var mossyClass:Class;
[Embed(source="../wolftex/pillar.png")]
public static var pillarClass:Class;
[Embed(source="../wolftex/purplestone.png")]
public static var purplestoneClass:Class;
[Embed(source="../wolftex/redbrick.png")]
public static var redbrickClass:Class;
[Embed(source="../wolftex/wood.png")]
public static var woodClass:Class;
//Array to hold all the textures
private var texs:Array=[];
private var worldMap:Array = [];
//private var worldMap[1]:Array=[];
private static const SCREEN_WIDTH:int=640;
private static const SCREEN_HEIGHT:int=480;
private var screenBitmapData:BitmapData;
private var screenBitmap:Bitmap;
private var alchemyMemory:ByteArray;
private var alcRCLib:Object;
private var cLibInit:CLibInit;
private var alcScreenBufferPointer:uint;
private var alcTexPointer:uint;
private var upKey:int=0;
private var downKey:int=0;
private var leftKey:int=0;
private var rightKey:int=0;
private var a:flash.text.TextField;
public function Main() {
stage.frameRate=60;
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.fullScreenSourceRect=new Rectangle(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
init();
}//end of function Main
private function init():void {
initBitmaps();
initAlchemy();
initRendering();
}//end of function init
private function initBitmaps():void {
texs.push(prepareBitmapData(new eagleClass().bitmapData ));
texs.push(prepareBitmapData(new redbrickClass().bitmapData ));
texs.push(prepareBitmapData(new purplestoneClass().bitmapData ));
texs.push(prepareBitmapData(new greystoneClass().bitmapData ));
texs.push(prepareBitmapData(new bluestoneClass().bitmapData ));
texs.push(prepareBitmapData(new mossyClass().bitmapData ));
texs.push(prepareBitmapData(new woodClass().bitmapData ));
texs.push(prepareBitmapData(new colorstoneClass().bitmapData ));
texs.push(prepareBitmapData(new barrelClass().bitmapData ));
texs.push(prepareBitmapData(new pillarClass().bitmapData ));
texs.push(prepareBitmapData(new greenlightClass().bitmapData ));
screenBitmapData=new BitmapData(SCREEN_WIDTH,SCREEN_HEIGHT,false,0);
screenBitmap=new Bitmap(screenBitmapData);
addChild(screenBitmap);
worldMap[1] = (1,2,3,4);
worldMap[2] = (1,2,3,4);
worldMap[3] = (1,2,3,4);
worldMap[4] = (1,2,3,4);
worldMap[5] = (1,2,3,4);
worldMap[6] = (1,2,3,4);
worldMap[7] = (1,2,3,4);
}//end of function initBitmaps
//Prepare the bitmap once to take into account the lower-endianess of the alchemy code.
private function prepareBitmapData(sourceMap:BitmapData):BitmapData {
var outBitmapData:BitmapData=sourceMap.clone();
outBitmapData=new BitmapData(outBitmapData.width,outBitmapData.height,true,0xFF000000);
outBitmapData.copyChannel(sourceMap,outBitmapData.rect,outBitmapData.rect.topLeft,BitmapD ataChannel.ALPHA,BitmapDataChannel.BLUE);
outBitmapData.copyChannel(sourceMap,outBitmapData.rect,outBitmapData.rect.topLeft,BitmapD ataChannel.RED,BitmapDataChannel.GREEN);
outBitmapData.copyChannel(sourceMap,outBitmapData.rect,outBitmapData.rect.topLeft,BitmapD ataChannel.GREEN,BitmapDataChannel.RED);
outBitmapData.copyChannel(sourceMap,outBitmapData.rect,outBitmapData.rect.topLeft,BitmapD ataChannel.BLUE,BitmapDataChannel.ALPHA);
return outBitmapData;
}//end of function prepareBitmapData
private function initAlchemy():void {
cLibInit=new CLibInit ;
alcRCLib=cLibInit.init();
//Retrieve the "Alchemy Memory".
var ns:Namespace=new Namespace("cmodule.Ray_Caster");
alchemyMemory=ns::gstate.ds;
//Allocate the buffers in Alchemy.
alcScreenBufferPointer=alcRCLib.initializeScreenBuffer(SCREEN_WIDTH,SCREEN_HEIGHT);//Setu p a screenbuffer of size x,y;
//Copy the textures to alchemy memory.
for (var i:int=0; i<11; i++) {
var ba:ByteArray=texs[i].getPixels(texs[i].rect);
alcTexPointer=alcRCLib.initializeTexBuffer(i);
alchemyMemory.position=alcTexPointer;
alchemyMemory.writeBytes(ba,0,ba.length);
}//end of for
}//end of function initAlchemy
private function initRendering():void {
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_pressed);
stage.addEventListener(KeyboardEvent.KEY_UP,key_released);
addEventListener(Event.ENTER_FRAME,enterFrame);
}//end of function initRendering
private function enterFrame(event:Event):void {
alcRCLib.loop(upKey,downKey,leftKey,rightKey);
alchemyMemory.position=alcScreenBufferPointer;
screenBitmapData.setPixels(screenBitmapData.rect,alchemyMemory);
}//end of function enterFrame
private function key_pressed(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.UP :
upKey=1;
break;
case Keyboard.DOWN :
downKey=1;
break;
case Keyboard.LEFT :
leftKey=1;
break;
case Keyboard.RIGHT :
rightKey=1;
break;
}//end of switch
}//end of function key_pressed
private function key_released(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.UP :
upKey=0;
break;
case Keyboard.DOWN :
downKey=0;
break;
case Keyboard.LEFT :
leftKey=0;
break;
case Keyboard.RIGHT :
rightKey=0;
break;
}//end of switch
}//end of function key_released
}//end of class
}//end of package
###raycaster####
//Raycasting Engine from Lode's Computer Graphics Tutorial
//http://www.student.kuleuven.be/~m0216922/CG/raycasting.html
//Modified for Alchemy by Bruce Jawn
//http://bruce-lab.blogspot.com
#include "AS3.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//============================================================
//============================================================
enum bool {false=0,true=!false};
#define screenWidth 1640
#define screenHeight 1480
#define texWidth 64
#define texHeight 64
#define mapWidth 24
#define mapHeight 24
//1D Screen Buffer
int* tBuffer;
int resX = 0;
int resY = 0;
//2D Screen Buffer
int buffer[screenWidth][screenHeight];
//1D Zbuffer
double ZBuffer[screenWidth];
//============================================================
//============================================================
//textures
int texture[11][texWidth*texHeight];
#define numSprites 19
//arrays used to sort the sprites
int spriteOrder[numSprites];
double spriteDistance[numSprites];
struct SSprite
double x;
double y;
int texture;
struct SSprite sprite[numSprites]=
//green light in front of playerstart
{20.5, 11.5, 10},
//green lights in every room
{18.5,4.5, 10},
{10.0,4.5, 10},
{10.0,12.5,10},
{3.5, 6.5, 10},
{3.5, 20.5,10},
{3.5, 14.5,10},
{14.5,20.5,10},
//row of pillars in front of wall: fisheye test
{18.5, 10.5, 9},
{18.5, 11.5, 9},
{18.5, 12.5, 9},
//some barrels around the map
{21.5, 1.5, 8},
{15.5, 1.5, 8},
{16.0, 1.8, 8},
{16.2, 1.2, 8},
{3.5, 2.5, 8},
{9.5, 15.5, 8},
{10.0, 15.1,8},
{10.5, 15.8,8},
//============================================================
//============================================================
//map
int worldMap[mapWidth][mapHeight] =
{8,8,8,8,8,8,8,8,8,8,8,4,4,6,4,4,6,4,6,4,4,4,6,4},
{8,0,0,0,0,0,0,0,0,0,8,4,0,0,0,0,0,0,0,0,0,0,0,4},
{8,0,3,3,0,0,0,0,0,8,8,4,0,0,0,0,0,0,0,0,0,0,0,6},
{8,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6},
{8,0,3,3,0,0,0,0,0,8,8,4,0,0,0,0,0,0,0,0,0,0,0,4},
{8,0,0,0,0,0,0,0,0,0,8,4,0,0,0,0,0,6,6,6,0,6,4,6},
{8,8,8,8,0,8,8,8,8,8,8,4,4,4,4,4,4,6,0,0,0,0,0,6},
{7,7,7,7,0,7,7,7,7,0,8,0,8,0,8,0,8,4,0,4,0,6,0,6},
{7,7,0,0,0,0,0,0,7,8,0,8,0,8,0,8,8,6,0,0,0,0,0,6},
{7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,0,0,0,0,0,4},
{7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,0,6,0,6,0,6},
{7,7,0,0,0,0,0,0,7,8,0,8,0,8,0,8,8,6,4,6,0,6,6,6},
{7,7,7,7,0,7,7,7,7,8,8,4,0,6,8,4,8,3,3,3,0,3,3,3},
{2,2,2,2,0,2,2,2,2,4,6,4,0,0,6,0,6,3,0,0,0,0,0,3},
{2,2,0,0,0,0,0,2,2,4,0,0,0,0,0,0,4,3,0,0,0,0,0,3},
{2,0,0,0,0,0,0,0,2,4,0,0,0,0,0,0,4,3,0,0,0,0,0,3},
{1,0,0,0,0,0,0,0,1,4,4,4,4,4,6,0,6,3,3,0,0,0,3,3},
{2,0,0,0,0,0,0,0,2,2,2,1,2,2,2,6,6,0,0,5,0,5,0,5},
{2,2,0,0,0,0,0,2,2,2,0,0,0,2,2,0,5,0,5,0,0,0,5,5},
{2,0,0,0,0,0,0,0,2,0,0,0,0,0,2,5,0,5,0,5,0,5,0,5},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5},
{2,0,0,0,0,0,0,0,2,0,0,0,0,0,2,5,0,5,0,5,0,5,0,5},
{2,2,0,0,0,0,0,2,2,2,0,0,0,2,2,0,5,0,5,0,0,0,5,5},
{2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,5,5,5,5,5,5,5,5,5}
//============================================================
//============================================================
double posX = 22.0, posY = 11.5; //x and y start position
double dirX = -1.0, dirY = 0.0; //initial direction vector
double planeX = 0.0, planeY = 0.66; //the 2d raycaster version of camera plane
int K_LEFT=0;
int K_RIGHT=0;
int K_UP=0;
int K_DOWN=0;
//speed modifiers
double moveSpeed = .30; //the constant value is in squares/second
double rotSpeed = .20; //the constant value is in radians/second
//============================================================
//============================================================
AS3_Val initializeScreenBuffer(void* self, AS3_Val args)
AS3_ArrayValue(args, "IntType, IntType", &resX, &resY);
tBuffer = malloc( resX * resY * sizeof(int) );
return AS3_Ptr( tBuffer );
}//end of initializeScreenBuffer
//used to load some textures & sprite textures
AS3_Val initializeTexBuffer(void* self, AS3_Val args)
int index;
AS3_ArrayValue(args, "IntType", &index);
return AS3_Ptr( texture[index] );
}//end of initializeTexBuffer
//start the main loop
AS3_Val loop( void* self, AS3_Val args )
AS3_ArrayValue(args,"IntType,IntType,IntType,IntType",&K_UP,&K_DOWN,&K_LEFT,&K_RIGHT);
CastRay();
int opos,j,i,jpos;
for(j=0; j < resY; j++ ){
jpos = resX*j;
for(i=0; i < resX; i++ ){
opos = (jpos+i);
tBuffer[opos] = buffer[i][j];
}//end of for
}//end of for
return 0;
}//end of loop
int main()
AS3_Val initializeScreenBufferMethod = AS3_Function( NULL,initializeScreenBuffer );
AS3_Val loopMethod = AS3_Function( NULL,loop );
AS3_Val initializeTexBufferMethod = AS3_Function( NULL,initializeTexBuffer );
AS3_Val result = AS3_Object("initializeScreenBuffer:AS3ValType,loop:AS3ValType,initializeTexBuffer:AS3ValT ype"
,initializeScreenBufferMethod,loopMethod,initializeTexBufferMethod);
AS3_Release( initializeScreenBufferMethod );
AS3_Release( loopMethod );
AS3_Release( initializeTexBufferMethod );
AS3_LibInit( result );
return 0;
}//end of main
//================================================================
//================================================================
void CastRay()
printf ("Hello World!\n");
int x;
int y;
int w=screenWidth;
int h=screenHeight;
for( x = 0; x < screenWidth; x++) for( y = 0; y < screenHeight; y++) {buffer[x][y] = 0;} //clear the buffer instead of cls()
for(x = 0; x < w; x++)
//calculate ray position and direction
double cameraX = 2 * x / (double)(w) - 1; //x-coordinate in camera space
double rayPosX = posX;
double rayPosY = posY;
double rayDirX = dirX + planeX * cameraX;
double rayDirY = dirY + planeY * cameraX;
//which box of the map we're in
int mapX = (int)(rayPosX);
int mapY = (int)(rayPosY);
//length of ray from current position to next x or y-side
double sideDistX;
double sideDistY;
//length of ray from one x or y-side to next x or y-side
double deltaDistX = sqrt(1 + (rayDirY * rayDirY) / (rayDirX * rayDirX));
double deltaDistY = sqrt(1 + (rayDirX * rayDirX) / (rayDirY * rayDirY));
double perpWallDist;
//what direction to step in x or y-direction (either +1 or -1)
int stepX;
int stepY;
int hit = 0; //was there a wall hit?
int side; //was a NS or a EW wall hit?
//calculate step and initial sideDist
if (rayDirX < 0)
stepX = -1;
sideDistX = (rayPosX - mapX) * deltaDistX;
}//end of if (rayDirX < 0)
else
stepX = 1;
sideDistX = (mapX + 1.0 - rayPosX) * deltaDistX;
}//end of else
if (rayDirY < 0)
stepY = -1;
sideDistY = (rayPosY - mapY) * deltaDistY;
}//end of if (rayDirY < 0)
else
stepY = 1;
sideDistY = (mapY + 1.0 - rayPosY) * deltaDistY;
}//end of else
//perform DDA
while (hit == 0)
//jump to next map square, OR in x-direction, OR in y-direction
if (sideDistX < sideDistY)
sideDistX += deltaDistX;
mapX += stepX;
side = 0;
}//end of if (sideDistX < sideDistY)
else
sideDistY += deltaDistY;
mapY += stepY;
side = 1;
}//end of else
//Check if ray has hit a wall
if (worldMap[mapX][mapY] > 0) hit = 1;
}//end of while (hit == 0)
//Calculate distance of perpendicular ray (oblique distance will give fisheye effect!)
if (side == 0) perpWallDist = fabs((mapX - rayPosX + (1 - stepX) / 2) / rayDirX);
else perpWallDist = fabs((mapY - rayPosY + (1 - stepY) / 2) / rayDirY);
//Calculate height of line to draw on screen
int lineHeight = abs((int)(h / perpWallDist));
//calculate lowest and highest pixel to fill in current stripe
int drawStart = -lineHeight / 2 + h / 2;
if(drawStart < 0) drawStart = 0;
int drawEnd = lineHeight / 2 + h / 2;
if(drawEnd >= h) drawEnd = h - 1;
//texturing calculations
int texNum = worldMap[mapX][mapY] - 1; //1 subtracted from it so that texture 0 can be used!
//calculate value of wallX
double wallX; //where exactly the wall was hit
if (side == 1) wallX = rayPosX + ((mapY - rayPosY + (1 - stepY) / 2) / rayDirY) * rayDirX;
else wallX = rayPosY + ((mapX - rayPosX + (1 - stepX) / 2) / rayDirX) * rayDirY;
wallX -= floor((wallX));
//x coordinate on the texture
int texX = (int)(wallX * (double)(texWidth));
if(side == 0 && rayDirX > 0) texX = texWidth - texX - 1;
if(side == 1 && rayDirY < 0) texX = texWidth - texX - 1;
int y;
for(y = drawStart; y < drawEnd; y++)
int d = y * 256 - h * 128 + lineHeight * 128; //256 and 128 factors to avoid floats
int texY = ((d * texHeight) / lineHeight) / 256;
int color = texture[texNum][texWidth * texY + texX];
//make color darker for y-sides: R, G and B byte each divided through two with a "shift" and an "and"
if(side == 1) color = (color >> 1) & 8355711;
buffer[x][y] = color;
}//end of for(y = drawStart; y < drawEnd; y++)
//SET THE ZBUFFER FOR THE SPRITE CASTING
ZBuffer[x] = perpWallDist; //perpendicular distance is used
//FLOOR CASTING
double floorXWall, floorYWall; //x, y position of the floor texel at the bottom of the wall
//4 different wall directions possible
if(side == 0 && rayDirX > 0)
floorXWall = mapX;
floorYWall = mapY + wallX;
}//end of if(side == 0 && rayDirX > 0)
else if(side == 0 && rayDirX < 0)
floorXWall = mapX + 1.0;
floorYWall = mapY + wallX;
}//end of else if(side == 0 && rayDirX < 0)
else if(side == 1 && rayDirY > 0)
floorXWall = mapX + wallX;
floorYWall = mapY;
}//end of else if(side == 1 && rayDirY > 0)
else
floorXWall = mapX + wallX;
floorYWall = mapY + 1.0;
}//end of else
double distWall, distPlayer, currentDist;
distWall = perpWallDist;
distPlayer = 0.0;
if (drawEnd < 0) drawEnd = h; //becomes < 0 when the integer overflows
//draw the floor from drawEnd to the bottom of the screen
for(y = drawEnd + 1; y < h; y++)
currentDist = h / (2.0 * y - h); //you could make a small lookup table for this instead
double weight = (currentDist - distPlayer) / (distWall - distPlayer);
double currentFloorX = weight * floorXWall + (1.0 - weight) * posX;
double currentFloorY = weight * floorYWall + (1.0 - weight) * posY;
int floorTexX, floorTexY;
floorTexX = (int)(currentFloorX * texWidth) % texWidth;
floorTexY = (int)(currentFloorY * texHeight) % texHeight;
//floor
buffer[x][y] = (texture[3][texWidth * floorTexY + floorTexX] >> 1) & 8355711;
//ceiling (symmetrical!)
buffer[x][h - y] = texture[6][texWidth * floorTexY + floorTexX];
}//end of for(y = drawEnd + 1; y < h; y++)
}//end of for(x = 0; x < w; x++)
//SPRITE CASTING
//sort sprites from far to close
int i;
for(i = 0; i < numSprites; i++)
spriteOrder[i] = i;
spriteDistance[i] = ((posX - sprite[i].x) * (posX - sprite[i].x) + (posY - sprite[i].y) * (posY - sprite[i].y)); //sqrt not taken, unneeded
}//end of for(i = 0; i < numSprites; i++)
combSort(spriteOrder, spriteDistance, numSprites);
//after sorting the sprites, do the projection and draw them
for(i = 0; i < numSprites; i++)
//translate sprite position to relative to camera
double spriteX = sprite[spriteOrder[i]].x - posX;
double spriteY = sprite[spriteOrder[i]].y - posY;
//transform sprite with the inverse camera matrix
// [ planeX dirX ] -1 [ dirY -dirX ]
// [ ] = 1/(planeX*dirY-dirX*planeY) * [ ]
// [ planeY dirY ] [ -planeY planeX ]
double invDet = 1.0 / (planeX * dirY - dirX * planeY); //required for correct matrix multiplication
double transformX = invDet * (dirY * spriteX - dirX * spriteY);
double transformY = invDet * (-planeY * spriteX + planeX * spriteY); //this is actually the depth inside the screen, that what Z is in 3D
int spriteScreenX = (int)((w / 2) * (1 + transformX / transformY));
//parameters for scaling and moving the sprites
#define uDiv 1
#define vDiv 1
#define vMove 0.0
int vMoveScreen = (int)(vMove / transformY);
//calculate height of the sprite on screen
int spriteHeight = abs((int)(h / (transformY))) / vDiv; //using "transformY" instead of the real distance prevents fisheye
//calculate lowest and highest pixel to fill in current stripe
int drawStartY = -spriteHeight / 2 + h / 2 + vMoveScreen;
if(drawStartY < 0) drawStartY = 0;
int drawEndY = spriteHeight / 2 + h / 2 + vMoveScreen;
if(drawEndY >= h) drawEndY = h - 1;
//calculate width of the sprite
int spriteWidth = abs( (int) (h / (transformY))) / uDiv;
int drawStartX = -spriteWidth / 2 + spriteScreenX;
if(drawStartX < 0) drawStartX = 0;
int drawEndX = spriteWidth / 2 + spriteScreenX;
if(drawEndX >= w) drawEndX = w - 1;
//loop through every vertical stripe of the sprite on screen
int stripe;
for(stripe = drawStartX; stripe < drawEndX; stripe++)
int texX = (int)(256 * (stripe - (-spriteWidth / 2 + spriteScreenX)) * texWidth / spriteWidth) / 256;
//the conditions in the if are:
//1) it's in front of camera plane so you don't see things behind you
//2) it's on the screen (left)
//3) it's on the screen (right)
//4) ZBuffer, with perpendicular distance
int y;
if(transformY > 0 && stripe > 0 && stripe < w && transformY < ZBuffer[stripe])
for(y = drawStartY; y < drawEndY; y++) //for every pixel of the current stripe
int d = (y-vMoveScreen) * 256 - h * 128 + spriteHeight * 128; //256 and 128 factors to avoid floats
int texY = ((d * texHeight) / spriteHeight) / 256;
unsigned int color = texture[sprite[spriteOrder[i]].texture][texWidth * texY + texX]; //get current color from the texture//??????????????????
if((color & 0x00FFFFFF) != 0) buffer[stripe][y] = color; //paint pixel if it isn't black, black is the invisible color
}//end of for(y = drawStartY; y < drawEndY; y++)
}//end of for(stripe = drawStartX; stripe < drawEndX; stripe++)
}//end of for(i = 0; i < numSprites; i++)
//readKeys
//move forward if no wall in front of you
if (K_UP)
if(worldMap[(int)(posX + dirX * moveSpeed)][(int)(posY)] == false) posX += dirX * moveSpeed;
if(worldMap[(int)(posX)][(int)(posY + dirY * moveSpeed)] == false) posY += dirY * moveSpeed;
}//end of if (K_UP)
//move backwards if no wall behind you
if (K_DOWN)
if(worldMap[(int)(posX - dirX * moveSpeed)][(int)(posY)] == false) posX -= dirX * moveSpeed;
if(worldMap[(int)(posX)][(int)(posY - dirY * moveSpeed)] == false) posY -= dirY * moveSpeed;
}//end of if (K_DOWN)
//rotate to the right
if (K_RIGHT)
//both camera direction and camera plane must be rotated
double oldDirX = dirX;
dirX = dirX * cos(-rotSpeed) - dirY * sin(-rotSpeed);
dirY = oldDirX * sin(-rotSpeed) + dirY * cos(-rotSpeed);
double oldPlaneX = planeX;
planeX = planeX * cos(-rotSpeed) - planeY * sin(-rotSpeed);
planeY = oldPlaneX * sin(-rotSpeed) + planeY * cos(-rotSpeed);
}//end of if (K_RIGHT)
//rotate to the left
if (K_LEFT)
//both camera direction and camera plane must be rotated
double oldDirX = dirX;
dirX = dirX * cos(rotSpeed) - dirY * sin(rotSpeed);
dirY = oldDirX * sin(rotSpeed) + dirY * cos(rotSpeed);
double oldPlaneX = planeX;
planeX = planeX * cos(rotSpeed) - planeY * sin(rotSpeed);
planeY = oldPlaneX * sin(rotSpeed) + planeY * cos(rotSpeed);
}//end of if (K_LEFT)
}//end of CastRay
//sort algorithm
void combSort(int* order, double* dist, int amount)
int gap = amount;
enum bool swapped = false;
while(gap > 1 || swapped)
//shrink factor 1.3
gap = (gap * 10) / 13;
if(gap == 9 || gap == 10) gap = 11;
if (gap < 1) gap = 1;
swapped = false;
int i;
for (i = 0; i < amount - gap; i++)
int j = i + gap;
if (dist[i] < dist[j])
double disttemp=dist[i];
dist[i]=dist[j];
dist[j]=disttemp;
int ordertemp=order[i];
order[i]=order[j];
order[j]=ordertemp;
swapped = true;
}//end of if (dist[i] < dist[j])
}//end of for (i = 0; i < amount - gap; i++)
}//end of while(gap > 1 || swapped)
}//end of combSort
the sorce file can be found here http://bruce-lab.blogspot.com/2010/04/alchemy-ray-casting-engine-source-code.htmlRadioactiveLizard, you need adobe alchemy (http://labs.adobe.com/technologies/alchemy/) to compile the C code to a swc,
not pass variables to C directly. -
HIerarchy Variable in Selection Screen not taken into account.
Hi,
Our users choose a cost center hierarchy in the selection screen and run the report. As we have suppressed Unassigned Nodes, they do not appear. However when users then deactivate the hierarchy, unassigned nodes are shown. Their argument is that the unassigned nodes should still not be displayed because a hierarchy was entered on the selection screen. Is there a way of stopping this?
ThanksHi Shawn,
I think I get what you did in your query, though it took me some time...
Did you select the cost center in your query and set the display hierarchy using settings, hierarchy tab, select hierarchy, hierarchy variable (or something like that)? That would explain why the query isn't filtered on that hierarchy, only the display of cost elements is affected. You should also have the same hierarchy variable in your filter settings in the query designer. That way, the user filters on a hierarchy and the unassigned nodes will never be in the result.
Hope it helps, tell me if I got it wrong,
Kind regards,
Alex -
BW hierarchy variable not working in Crystal Report 2008
Hi,
I have created BEx 7.0 report which has hierarchy on 0customer object, the report is working fine whith hierarchy variable. I have created Crystal Report by using this query as source. I have followed below link to create grouping to get data through hierarchy variable.
http://wiki.sdn.sap.com/wiki/display/BOBJ/BWHierarchiesinCrystalReports
But report does not work for hierarchy variable and report is blank. When I give filter of child node which has actual data then I get report output. For ex.
Below hierarchy for 0customer
11396
- 737007
- 123456
When I run report for 11396 then no data display but when I run 737007 child node I get report output but with blank group name.
Can anyone came accross this issue. Please guide me . Thanks in advance.Thanks Ingo for your reply..
The word filter means, I have hierarchy node variable in the BEx report that has become Parameter in CR. When I give hierarchy node variable value of parent node then there is not data display but for the child node I get the data.
For ex. In the info cube there is data for 730707 customer but in the customer hierarchy the parent node of 73707 is 11396. I am giving 11396 in the variable pop screen for hierarchy variable. I do not see any data but for 73707 I get data.
User does not know 73707, he always enter 11396 customer no. and he gets data in BEx query that is source of CR. but crystal report is not showing data for 11396.
One more point I want to tell here, I am saving CR at my local system not to SAP BW server.
Hope this clear my issue.
Harish Swami
Edited by: hswami27 on Jan 31, 2011 8:17 PM -
Passing CPM variable value to BW report/query
Is it possible to pass CPM variable values from SEM scorecard to BW supporting reports.
Not sure if this is what you are looking for, but it's my first thought of what I would try:
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/documents/a1-8-4/3.0b report-report interface.pdf -
LoadVars-using send to pass a variable from flash to php
For the life of me, I've tried everything:
I've researched LoadVars on Adobe forum, used David Powers'
books, googled 'flash to php', LoadVars, etc. and tried
sendAndLoad, send, and using $_POST, $_GET, $_REQUEST.
$HTTP_POSTVARS but I keep getting this same error. any advice
please?
I have a Unix server running Apache/PHP 4 - LoadVars worked
to load name-value pairs into an array -see thread)
My goal with this simple app is to prototype being able to
pass a variable from flash to a variable in php.
Parse error: syntax error, unexpected T_VARIABLE in
flash_to_SQL.php on line 5
Actionscript 2.0 code:
var c :LoadVars = new LoadVars();
c.testing = "123FOUR";
c.send ("
http://127.0.0.1/flash_to_SQL.php","_self","POST");
php code: (I also tried $_POST, $_GET, $_REQUEST.
$HTTP_POSTVARS)
<?php
//mysql 4.1.2, php 4 , NO mysqli
ecbo $_REQUEST ['testing'];
/?>var formData:LoadVars = new LoadVars();
formData.fname = "Name";
formData.send("
http://www.website.com/flash_php.php",
formData, "POST");
<?php
$name = $_POST['fname'];
echo $name;
?> -
How to pass session variable value with GO URL to override session value
Hi Gurus,
We have below requirement.Please help us at the earliest.
How to pass session variable value with GO URL to override session value. ( It is not working after making changes to authentication xml file session init block creation as explained by oracle (Bug No14372679 : which they claim it is fixed in 1.7 version Ref No :Bug 14372679 : REQUEST VARIABLE NOT OVERRIDING SESSION VARIABLE RUNNING THRU A GO URL )
Please provide step by step solution.No vague answers.
I followed below steps mentioned.
RPD:
****-> Created a session variable called STATUS
-> Create Session Init block called Init_Status with SQL
select 'ACTIVE' from dual;
-> Assigned the session variable STATUS to Init block Init_Status
authenticationschemas.xml:
Added
<RequestVariable source="url" type="informational"
nameInSource="RE_CODE" biVariableName="NQ_SESSION.STATUS"/>
Report
Edit column "Contract Status" and added session variable as
VALUEOF(NQ_SESSION.STATUS)
URL:
http://localhost:9704/analytics/saw.dll?PortalGo&Action=prompt&path=%2Fshared%2FQAV%2FTest_Report_By%20Contract%20Status&RE_CODE='EXPIRED'
Issue:
When I run the URL above with parameter EXPIRED, the report still shows for ACTIVE only. The URL is not making any difference with report.
Report is picking the default value from RPD session variable init query.
could you please let me know if I am missing something.Hi,
Check those links might help you.
Integrating Oracle OBIEE Content using GO URL
How to set session variables using url variables | OBIEE Blog
OBIEE 10G - How to set a request/session variable using the Saw Url (Go/Dashboard) | GerardNico.com (BI, OBIEE, O…
Thanks,
Satya -
This test application has 3 frames.
I'm assigning a value "stuff" to a variable ("testfield1") in a javascript function ("getTest") that exists inside an html frame (testpage1.html)
Then, I click on the "test submit" hypertext link to pass the value of "testfield1" to the JSP frame (testpage2.jsp) by invoking a function ("getData") in "testpage2".
In function ("getData"), I am passing the variable "testfield1" as a parameter to the "getData" function in "testpage2".
In "testpage2" - in the ("getData" function) I try to assign the value of the variable "testfield1" to another variable called "testfld1".
Then, I try to extract the value of "testfld1" into a variable called "tstfld1" in a JSP scriptlet
....I.E. [ String tstfld1 = request.getParameter("testfld1"); ]
But, the value is apparently not passed successfully, as tstfield1 appears to be "null".
Can anyone explain what I'm doing incorrectly?
The code for this test app is below...
********testpage0 - the parent frame*********
<HTML>
<HEAD>
<TITLE>GlobalView Reports and Trending Menubar</TITLE>
</HEAD>
<FRAMESET FRAMEBORDER="0" ROWS="15%,85%">
<FRAME SRC="testpage0.html" NAME="testhtmlparent">
<FRAMESET FRAMEBORDER="0" COLS="23%,77%">
<FRAME SRC="testpage1.html" NAME="testhtml">
<FRAME SRC="testpage2.jsp" NAME="testjsp">
</FRAMESET>
</FRAMESET>
</HTML>
*******testpage1.html********
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<html>
<head><title>testpage1</title>
<link rel="stylesheet" type="text/css" href="./standard.css">
<script LANGUAGE="JavaScript">
parent.frames[2].location = "blank.html";
function getTest(reportType)
testfield1 = "stuff";
alert("testpage1.html...testfield1=" + testfield1 + ", reportType=" + reportType);
parent.frames[2].location = "testpage2.jsp";
parent.frames[2].getData(testfield1);
return;
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="reportRange">
<center>
<fieldset style="padding: 0.5em" name="customer_box">
<table cellpadding="0" cellspacing="0" border="0">
<tr class="drophead">
<td valign="top" height="0" ><span class="drophead">
test submit
</td>
</tr>
</table>
</fieldset>
</center>
</form>
</body>
</html>
*******testpage2.jsp*********
<%@ page language="java" import="java.io.*, java.util.*" errorPage="error.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<html>
<head>
<title>testpage2</title>
<script language="JavaScript">
function getData(testfield1)
alert("testpage2.jsp...testfield1=" + testfield1);
document.pageData.testfld1.value = testfield1;
document.pageData.submit();
</script>
</head>
<body>
<%
String error;
%>
<div id="HiddenForm">
<form name="pageData" method="post" action="testpage2.jsp" target="_self">
<input type="hidden" name="testfld1" value="0">
</form>
</div>
<%
String tstfld1 = request.getParameter("testfld1");
%>
<P> testfld1 = <%= tstfld1 %> </P>
</body>
</html>parent.frames[2].getData(testfield1); is in testpage1.html
so in the document.pageData.testfld1.value = testfield1; document = testpage1.html( not testpage2.html)
modifying the getData to accept the document object, and refering this object to parent.frames[2].document may help you.
good Luck .... -
Problem with hierarchy variable while displaying query in Portal
Hi,
I came up with an problem with a query in the portal. The problem is :
I have one query which is displayed in the portal. The Query has hierarchial selection criteria. I am executing the same query using analyzer. Its taking the variable from the selection and displaying it on the analyzer. I have used the option to " display the query on web " from the BEX query designer. From there its opening and displaying the results with the given selection criteria.
Where as when i open the query seperately in portal, its not displaying the results.
I came to know from one of my colleague that the porblem is with the Web item and the hierarchial variable declared in WAD was different from the variable declared in the BEX Query designer.
I never Worked with WAD. I tried finding out the variable definition. But i was unable to find out where the Hierarchial variable was defined.
Please help me out regarding the same.The problem is sovled.
Poornima. -
Passing Session variable of DATE data type to opaque view filter
Hi Everyone,
Can you guys please help me in passing session variable of DATE data type in RPD's physical layer 'opaque view' filter for Oracle database
I tried following syntax, syntax wise I didn't got getting any error, but at the same time this opaque view is not fetching any records as well. my session variable is "END_DATE" and its value is 1998/12/31:00:00:00(as shown in RPD session windows, datatype is DATETIME)
SELECT AMOUNT_SOLD, CHANNEL_ID, CUST_ID, PROD_ID, PROMO_ID, QUANTITY_SOLD, TIME_ID FROM SH.SALES
WHERE TIME_ID =TO_DATE( 'VALUEOF(NQ_SESSION.END_DATE)','MM/DD/YYYY')
SELECT AMOUNT_SOLD, CHANNEL_ID, CUST_ID, PROD_ID, PROMO_ID, QUANTITY_SOLD, TIME_ID FROM SH.SALES
WHERE TIME_ID = TO_DATE( 'VALUEOF(NQ_SESSION."END_DATE")','MM/DD/YYYY')
SELECT AMOUNT_SOLD, CHANNEL_ID, CUST_ID, PROD_ID, PROMO_ID, QUANTITY_SOLD, TIME_ID FROM SH.SALES
WHERE TRUNC(TIME_ID) = TO_DATE( 'VALUEOF(NQ_SESSION."END_DATE")','MM/DD/YYYY')
In past, I was able to pass a session variable into a opaque view filter using DATEOF function, but that was in DB2.
I appreciate your time and helpFinally, I got right format. here it is
to_date(substr('valueof(NQ_SESSION.END_DATE)',1,10), 'yyyy-mm-dd')
and here is the source from where I got this information
Using OBIEE Session Variables in Select Tables in the Physical Layer
Maybe you are looking for
-
Special ledger document number
Hi, I want that special ledger document number is the same Financial document number, is this posible ?. Best Regards, Ivonne
-
Team calendar on ESS shows no data for employee
Hi , We are converting to webdynpro leave request from old ITS leave req. when I click on the team calendar from an employee ID , I dont see any data of the team with in the same org. unit. It shows me a blank table. From a manager view, I get a grap
-
Mail "disappears" after a period of inactivity
Since upgrading to Leopard a strange problem is occurring. On returning to iMac after period of inactivity mail appears "open" in dock and menus appear at top of screen. However, the application just won't display anything at all. Only solution is to
-
For work I'm making a JTable bean that has Sort/Search/Filter functionality. I currently have achieved all three. Right clicking in a column brings up a popup menu where you can choose "Sort Ascending", "Sort Descending", "Search...", "Filter...". Se
-
Hangs on BIOS sign-on with buzz
First my stats: K8N - 3 memory sticks (2x 512Mb pc3200 + 256Mb pc2100) - Radeon 9600 - ATI HDTV - 3 HD - 1 DVD-RW. Recently installed new memory, but everything worked fine, except for a periodical blue screen at startup, which was no problem to me.