Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/shadows/src/shadow.h @ 3728

Last change on this file since 3728 was 3728, checked in by dave, 20 years ago

branches/shadows:code erweitert fuer terrain

File size: 1.8 KB
Line 
1/*!
2    \file shadow.h
3    \brief Definition of the Shadow
4   
5    Shadow should in a first step only be implemented for the players character
6    to be casted on the terrain. This version will only handle the players shjadow!
7    Further versions will propably be able to take parameters like player or non
8    player character and the final object to cast the shadow on to....So it will then
9    be possible(maybe) for an object to cast its shadow onto another object(but I think
10    that will be too much performance eating:)
11   
12    The basic principle to implement the shadow is to create a texture containing
13    a picture of the shadow. This texture then will be mixed onto the normal ground
14    texture to give the impression of a shadow correctly casted on the ground.
15*/
16
17#ifndef _SHADOW_H
18#define _SHADOW_H
19
20#include "importer/material.h"
21#include "importer/objModel.h"
22#include "p_node.h"
23#include "world_entity.h"
24#include "player.h"
25#include "vector.h"
26
27//! A Class to handle the Shadow
28class Shadow: public PNode
29{
30    private:
31        int player_id,ground_id; //These are for the glLists!
32        int shadow_id;  //this is for the empty shadow texture
33        float lightPos[3];
34        float playerPos[3];
35
36       
37        unsigned char *image;
38        OBJModel* player;
39        Vector normal_vectors[100][80];
40        Vector vertexes[4][100][80];
41        //playerangle used to obtain information about the angle of the player
42        Player* playerangle;
43       
44        void blur(unsigned char *in,int size);
45        void createShadow();
46        void m_inverse(const float *m,float *out);
47       
48       
49   
50    public:
51        Shadow(OBJModel* player,Player* playerangle);
52        ~Shadow();
53        void init();
54        void draw();
55        void setGround();
56        void setNormal(Vector a,int i,int j);
57        void setVertexNum(Vector a,int i,int j,int num);
58        void updatePosition(float x,float y,float z);
59
60
61
62
63};
64
65#endif
66   
67
Note: See TracBrowser for help on using the repository browser.