Browse Source

add size attribute to model info

Kolja Strohm 1 year ago
parent
commit
b7509d7871

+ 4 - 1
FactoryCraft/Block.cpp

@@ -12,7 +12,8 @@ Block::Block(const BlockType* zType,
     Model3DTextur* texture,
     int maxHP,
     bool transparent,
-    bool needRequestModelInfo)
+    bool needRequestModelInfo,
+    float size)
     : FactoryCraftModel(),
       zType(zType),
       location(pos),
@@ -30,6 +31,7 @@ Block::Block(const BlockType* zType,
     setModelDaten(model);
     setModelTextur(texture);
     memset(lightData, 0, 6 * 6);
+    setSize(size);
 }
 
 Block::~Block() {}
@@ -75,6 +77,7 @@ void Block::api(char* message)
             ByteArrayReader reader(message + 1, 10000, 0);
             ModelInfo info(&reader);
             setModelDaten(info.getModel());
+            setSize(info.getSize());
             setModelTextur(info.getTexture());
             Chunk* zChunk = World::INSTANCE->zChunk(
                 World::INSTANCE->getChunkCenter(location.x, location.y));

+ 1 - 1
FactoryCraft/Block.h

@@ -36,7 +36,7 @@ public:
         Model3DTextur* texture,
         int maxHp,
         bool transparent,
-        bool needRequestModelInfo);
+        bool needRequestModelInfo, float size);
     virtual ~Block();
 
     void setFlow(char flowOptions, char distanceToSource);

+ 3 - 2
FactoryCraft/BlockType.cpp

@@ -32,7 +32,8 @@ Block* BlockType::createBlock(Framework::Vec3<int> position)
         model.getTexture(),
         initialMaxHP,
         model.isTransparent(),
-        needModelSubscription);
+        needModelSubscription,
+        model.getSize());
 }
 
 int BlockType::getId() const
@@ -52,7 +53,7 @@ bool BlockType::doesNeedModelSubscription() const
 
 bool BlockType::isFluid() const
 {
-	return fluid;
+    return fluid;
 }
 
 char BlockType::getMaxFlowDistance() const

+ 4 - 2
FactoryCraft/Entity.cpp

@@ -10,7 +10,8 @@ Entity::Entity(const EntityType* zType,
     Framework::Model3DTextur* texture,
     int id,
     Framework::Vec3<float> position,
-    float maxMovementSpeed)
+    float maxMovementSpeed,
+    float size)
     : FactoryCraftModel(),
       id(id),
       zType(zType),
@@ -26,6 +27,7 @@ Entity::Entity(const EntityType* zType,
     lastDirection = World::INSTANCE->zKamera()->getDirection();
     currentFrame.duration = 0;
     rend = 1;
+    setSize(size);
 }
 
 Entity::~Entity() {}
@@ -150,7 +152,7 @@ bool Entity::tick(double time)
         }
         Vec3<float> frameSpeed = speed * (float)time;
         bool hasCollided = 0;
-        for(int m = 0; m < 20; m++)
+        for (int m = 0; m < 20; m++)
         {
             float tf = 1.f;
             int collType = 0;

+ 2 - 1
FactoryCraft/Entity.h

@@ -39,7 +39,8 @@ public:
         Framework::Model3DTextur* texture,
         int id,
         Framework::Vec3<float> position,
-        float maxMovementSpeed);
+        float maxMovementSpeed,
+        float size);
     ~Entity();
 
     void api(char* message);

+ 2 - 2
FactoryCraft/EntityType.cpp

@@ -26,12 +26,12 @@ Entity* EntityType::loadEntity(Framework::StreamReader* zReader) const
     {
         ModelInfo model(zReader);
         e = new Entity(
-            this, model.getModel(), model.getTexture(), id, position, maxSpeed);
+            this, model.getModel(), model.getTexture(), id, position, maxSpeed, model.getSize());
     }
     else
     {
         e = new Entity(
-            this, model.getModel(), model.getTexture(), id, position, maxSpeed);
+            this, model.getModel(), model.getTexture(), id, position, maxSpeed, model.getSize());
     }
     if (World::INSTANCE->zKamera()->getEntityId() == id)
     {

+ 3 - 3
FactoryCraft/FactoryClient.cpp

@@ -50,8 +50,7 @@ void FactoryClient::loadServerInfo()
         bool fluid;
         foregroundReader->lese((char*)&fluid, 1);
         char maxFlowDistance = 0;
-        if (fluid)
-			foregroundReader->lese((char*)&maxFlowDistance, 1);
+        if (fluid) foregroundReader->lese((char*)&maxFlowDistance, 1);
         int maxHp;
         foregroundReader->lese((char*)&maxHp, 4);
         blockTypes[i] = new BlockType(id,
@@ -115,7 +114,7 @@ void FactoryClient::loadServerInfo()
             float maxX = MAX(
                 MAX(MAX(abs(min.x), abs(max.x)), MAX(abs(min.y), abs(max.y))),
                 MAX(abs(min.z), abs(max.z)));
-            kam->setPosition(Vec3<float>(maxX * 6, 0.f, 0.f));
+            kam->setPosition(Vec3<float>(maxX * 3.5f, 0.f, 0.f));
         }
         mdl->setModelDaten(data);
         mdl->setModelTextur(itemTypes[i]->getItemTextur());
@@ -124,6 +123,7 @@ void FactoryClient::loadServerInfo()
         mdl->setAmbientFactor(0.8f);
         mdl->setDiffusFactor(0.1f);
         mdl->setSpecularFactor(0.1f);
+        mdl->setSize(itemTypes[i]->getSize());
         w->addZeichnung(mdl);
         w->tick(0);
         window->zBildschirm()->lock();

+ 6 - 1
FactoryCraft/ItemType.cpp

@@ -54,4 +54,9 @@ const Framework::Text& ItemType::getName() const
 const Framework::Text& ItemType::getTooltipUIML() const
 {
     return tooltipUIML;
-}
+}
+
+float ItemType::getSize() const
+{
+    return model.getSize();
+}

+ 1 - 0
FactoryCraft/ItemType.h

@@ -27,4 +27,5 @@ public:
     Framework::Model3DTextur* getItemTextur() const;
     const Framework::Text& getName() const;
     const Framework::Text& getTooltipUIML() const;
+    float getSize() const;
 };

+ 10 - 3
FactoryCraft/ModelInfo.cpp

@@ -6,9 +6,10 @@
 
 using namespace Framework;
 
-ModelInfo::ModelInfo(const char* model, const char *texture, bool transparent, int numTextures)
+ModelInfo::ModelInfo(const char* model, const char *texture, bool transparent, int numTextures, float size)
     : modelPath(model),
-      transparent(transparent)
+      transparent(transparent),
+      size(size)
 {
     for (int i = 0; i < numTextures; i++)
         texturPaths.add(new Text(texture));
@@ -35,6 +36,7 @@ ModelInfo::ModelInfo(Framework::StreamReader* reader)
         delete[] path;
     }
     reader->lese((char*)&transparent, 1);
+    reader->lese((char*)&size, 4);
 }
 
 Framework::Model3DData* ModelInfo::getModel() const
@@ -69,4 +71,9 @@ const Framework::RCArray<Framework::Text>* ModelInfo::getTexturNames() const
 bool ModelInfo::isTransparent() const
 {
     return transparent;
-}
+}
+
+float ModelInfo::getSize() const
+{
+    return size;
+}

+ 3 - 3
FactoryCraft/ModelInfo.h

@@ -11,13 +11,13 @@ private:
     Framework::Text modelPath;
     Framework::RCArray<Framework::Text> texturPaths;
     bool transparent;
-    int combinedModelTypes;
+    float size;
 
 public:
     ModelInfo(const char* model,
         const char *texture,
         bool transparent,
-        int numTextures);
+        int numTextures, float size);
     ModelInfo(Framework::StreamReader* reader);
 
     Framework::Model3DData* getModel() const;
@@ -25,5 +25,5 @@ public:
     Framework::Text getModelName() const;
     const Framework::RCArray<Framework::Text>* getTexturNames() const;
     bool isTransparent() const;
-    int getCombinedModelTypes() const;
+    float getSize() const;
 };