summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Remove fullbright (H#140)MT0.4orwell962019-12-18
|
* Fix steam engine sound playing forever (H#121)ywang2019-11-27
|
* Configurable interval for get_off setpos and door pos fix for japanese trainorwell962019-03-09
|
* Add "X" line symbol for subway trains terminating/service tripsorwell962019-02-05
|
* Fix "subway train" itemorwell962019-01-22
|
* Change get_inventory_formspec API - add invname parameterorwell962018-12-10
|
* Remove superfluous "tarvelocity" assignmentsorwell962018-11-20
|
* Make "Line" property accessible from OBC and gettable via LATC, change ↵orwell962018-11-20
| | | | subway wagon texture handling
* lower steel returnThomas Rudin2018-09-28
|
* onboard computer fixh-v-smacker2018-08-12
|
* Fix box wagonsorwell962018-06-14
|
* Fix bugs found while testingorwell962018-06-14
|
* Revert assign_to_seat_group order on subway trainorwell962018-01-15
| | | | as train_operator on Linuxworks, it often happens that you accidentally manually drive a subway train. This is more effort to get to the drivers seat, but is how the behavior was for the last 6 months
* Add bord computer to trainsorwell962018-01-09
| | | | | | | | Features: - couple/decouple trains from a driver stand - new couple lock system (owner based, overridable by 'train_remove' privilege) - all train operators can now change the inside/outside text, allows for multilines Accessible via right-click menu or by pressing Sneak+Jump keys
* Move driving_ctrl_access property to seat grouporwell962018-01-09
| | | | | there's now a more strict check for the train_operator privilege Also added custom reasons on getting on a train.
* Merge branch 'master' of https://github.com/orwell96/advtrainsorwell962018-01-07
|\
| * steam locomotive: Add sounds and improve texturesmbb2017-12-23
| |
* | Don't use looped sounds on subwayorwell962018-01-07
| | | | | | | | (causes engine bugs with dangling sound handles)
* | Change controls for trains (again)orwell962018-01-07
|/
* Rewrite rail connection system...orwell962017-12-18
| | | | | | | | | ...to support an arbitrary number of connections for rails, which leads to these new features: - switches now get recognized by the trackworker correctly - ability to add real rail crosses During this, I also rewrote the rail registering system and the conway function (important part of path prediction) Note, developers: the track preset format changed, you might need to rewrite them according to the presets in tracks.lua if you wrote your own (possibly breaks advcarts)
* Try to fix occasional crash when placing wagonsorwell962017-12-17
|
* Improve textures and models of industrial train and add new more powerful ↵mbb2017-12-12
| | | | industrial engine
* Implement sound api and some soundsorwell962017-12-06
| | | | | | | - Level crossing bell - Horns - Subway train driving and door sounds ...to be continued...
* Change name of update_animation functionorwell962017-11-29
| | | | I will use this for sounds, and so it needs to be changed to a more general name
* Fix subway train placerorwell962017-10-25
|
* Some workaround fixes for Linuxworks serverorwell962017-10-25
| | | | | Trains no longer get deleted when there's no rail Fast item to create subway train
* Moved default train track to separate mod, for integration with advcarts.Gabriel Pérez-Cerezo2017-10-25
|
* Set wagon line numberGabriel Pérez-Cerezo2017-10-23
|
* Remove zip release files, move mod to root, exclude assets from Makefile (#92)rubenwardy2017-09-20
|
* Restructure mod directoryorwell962017-01-04
|
* remove train type concept and calculate train's capabilities based on used ↵orwell962016-12-22
| | | | wagons
* Turning mod into a modpack and separating the trains from the core modorwell962016-12-20
s="hl kwc">virtual video::ITexture* getTexture(u32 id)=0; virtual video::ITexture* getTexture( const std::string &name, u32 *id = NULL)=0; virtual IrrlichtDevice* getDevice()=0; virtual bool isKnownSourceImage(const std::string &name)=0; virtual video::ITexture* generateTextureFromMesh( const TextureFromMeshParams &params)=0; virtual video::ITexture* getNormalTexture(const std::string &name)=0; }; class IWritableTextureSource : public ITextureSource { public: IWritableTextureSource(){} virtual ~IWritableTextureSource(){} virtual u32 getTextureId(const std::string &name)=0; virtual std::string getTextureName(u32 id)=0; virtual video::ITexture* getTexture(u32 id)=0; virtual video::ITexture* getTexture( const std::string &name, u32 *id = NULL)=0; virtual IrrlichtDevice* getDevice()=0; virtual bool isKnownSourceImage(const std::string &name)=0; virtual video::ITexture* generateTextureFromMesh( const TextureFromMeshParams &params)=0; virtual void processQueue()=0; virtual void insertSourceImage(const std::string &name, video::IImage *img)=0; virtual void rebuildImagesAndTextures()=0; virtual video::ITexture* getNormalTexture(const std::string &name)=0; }; IWritableTextureSource* createTextureSource(IrrlichtDevice *device); #ifdef __ANDROID__ /** * @param size get next npot2 value * @return npot2 value */ inline unsigned int npot2(unsigned int size) { if (size == 0) return 0; unsigned int npot = 1; while ((size >>= 1) > 0) { npot <<= 1; } return npot; } video::IImage * Align2Npot2(video::IImage * image, video::IVideoDriver* driver); #endif enum MaterialType{ TILE_MATERIAL_BASIC, TILE_MATERIAL_ALPHA, TILE_MATERIAL_LIQUID_TRANSPARENT, TILE_MATERIAL_LIQUID_OPAQUE, TILE_MATERIAL_WAVING_LEAVES, TILE_MATERIAL_WAVING_PLANTS }; // Material flags // Should backface culling be enabled? #define MATERIAL_FLAG_BACKFACE_CULLING 0x01 // Should a crack be drawn? #define MATERIAL_FLAG_CRACK 0x02 // Should the crack be drawn on transparent pixels (unset) or not (set)? // Ignored if MATERIAL_FLAG_CRACK is not set. #define MATERIAL_FLAG_CRACK_OVERLAY 0x04 // Animation made up by splitting the texture to vertical frames, as // defined by extra parameters #define MATERIAL_FLAG_ANIMATION_VERTICAL_FRAMES 0x08 #define MATERIAL_FLAG_HIGHLIGHTED 0x10 /* This fully defines the looks of a tile. The SMaterial of a tile is constructed according to this. */ struct FrameSpec { FrameSpec(): texture_id(0), texture(NULL), normal_texture(NULL) { } u32 texture_id; video::ITexture *texture; video::ITexture *normal_texture; }; struct TileSpec { TileSpec(): texture_id(0), texture(NULL), normal_texture(NULL), alpha(255), material_type(TILE_MATERIAL_BASIC), material_flags( //0 // <- DEBUG, Use the one below MATERIAL_FLAG_BACKFACE_CULLING ), shader_id(0), animation_frame_count(1), animation_frame_length_ms(0), rotation(0) { } bool operator==(const TileSpec &other) const { return ( texture_id == other.texture_id && /* texture == other.texture && */ alpha == other.alpha && material_type == other.material_type && material_flags == other.material_flags && rotation == other.rotation ); } bool operator!=(const TileSpec &other) const { return !(*this == other); } // Sets everything else except the texture in the material void applyMaterialOptions(video::SMaterial &material) const { switch (material_type) { case TILE_MATERIAL_BASIC: material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; break; case TILE_MATERIAL_ALPHA: material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; break; case TILE_MATERIAL_LIQUID_TRANSPARENT: material.MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; break; case TILE_MATERIAL_LIQUID_OPAQUE: material.MaterialType = video::EMT_SOLID; break; case TILE_MATERIAL_WAVING_LEAVES: material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; break; case TILE_MATERIAL_WAVING_PLANTS: material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; break; } material.BackfaceCulling = (material_flags & MATERIAL_FLAG_BACKFACE_CULLING) ? true : false; } void applyMaterialOptionsWithShaders(video::SMaterial &material) const { material.BackfaceCulling = (material_flags & MATERIAL_FLAG_BACKFACE_CULLING) ? true : false; } u32 texture_id; video::ITexture *texture; video::ITexture *normal_texture; // Vertex alpha (when MATERIAL_ALPHA_VERTEX is used) u8 alpha; // Material parameters u8 material_type; u8 material_flags; u32 shader_id; // Animation parameters u8 animation_frame_count; u16 animation_frame_length_ms; std::vector<FrameSpec> frames; u8 rotation; }; #endif