diff Lights.h @ 0:9c0607679772

init
author Ritor1
date Sat, 12 Jan 2013 09:45:18 +0600
parents
children 61343380715b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lights.h	Sat Jan 12 09:45:18 2013 +0600
@@ -0,0 +1,134 @@
+#pragma once
+#include "OSAPI.h" // messagebox
+
+#include "VectorTypes.h"
+
+
+/*  257 */
+#pragma pack(push, 1)
+struct StationaryLight
+{
+  Vec3_short_ vPosition;
+  __int16 uRadius;
+  unsigned __int8 uLightColorR;
+  unsigned __int8 uLightColorG;
+  unsigned __int8 uLightColorB;
+  char uLightType;
+};
+#pragma pack(pop)
+
+
+
+
+#pragma pack(push, 1)
+struct MobileLight
+{
+  Vec3_short_ vPosition;
+  __int16 uRadius;
+  unsigned __int8 uLightColorR;
+  unsigned __int8 uLightColorG;
+  unsigned __int8 uLightColorB;
+  char uLightType;
+  __int16 field_C;
+  __int16 uSectorID;
+  __int16 field_10;
+};
+#pragma pack(pop)
+
+
+
+/*
+#pragma pack(push, 1)
+struct LightStack<T>
+{
+  int field_0;
+  char T[400];
+  unsigned int uNumLightsActive;
+};
+#pragma pack(pop)*/
+
+
+
+/*  260 */
+#pragma pack(push, 1)
+struct LightsStack_StationaryLight_
+{
+  //----- (004AD385) --------------------------------------------------------
+  LightsStack_StationaryLight_()
+  {
+    uNumLightsActive = 0;
+  }
+
+  //----- (004AD395) --------------------------------------------------------
+  virtual ~LightsStack_StationaryLight_()
+  {
+    uNumLightsActive = 0;
+  }
+
+  //----- (004AD39D) --------------------------------------------------------
+  inline unsigned int GetNumLights()
+  {
+    return uNumLightsActive;
+  }
+
+  //----- (004AD3C8) --------------------------------------------------------
+  inline bool AddLight(__int16 x, __int16 y, __int16 z, __int16 a5, unsigned char r, unsigned char g, unsigned char b, char uLightType)
+  {
+    unsigned int v9; // eax@1
+    std::string v11; // [sp-18h] [bp-18h]@3
+
+    v9 = this->uNumLightsActive;
+    if ( (signed int)v9 >= 400 )
+    {
+      MessageBoxW(nullptr, L"Too many stationary lights!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\StationaryLightStack.cpp:45", 0);
+      return false;
+    }
+
+      auto pLight = &pLights[uNumLightsActive++];
+      pLight->vPosition.x = x;
+      pLight->vPosition.y = y;
+      pLight->vPosition.z = z;
+      pLight->uRadius = a5;
+      pLight->uLightColorR = (unsigned __int8)r;
+      pLight->uLightColorG = g;
+      pLight->uLightColorB = b;
+      pLight->uLightType = uLightType;
+      return true;
+  }
+
+
+
+  void (__thiscall ***vdestructor_ptr)(LightsStack_StationaryLight_ *, bool);
+  StationaryLight pLights[400];
+  unsigned int uNumLightsActive;
+};
+#pragma pack(pop)
+
+
+
+
+/*  261 */
+#pragma pack(push, 1)
+struct LightsStack_MobileLight_
+{
+  //----- (00467D45) --------------------------------------------------------
+  inline LightsStack_MobileLight_()
+  {
+    this->uNumLightsActive = 0;
+    //this->vdestructor_ptr = &pLightsStack_MobileLight__pvdtor;
+  }
+  //----- (00467D55) --------------------------------------------------------
+  virtual ~LightsStack_MobileLight_()
+  {
+    this->uNumLightsActive = 0;
+  }
+  
+  bool AddLight(__int16 x, __int16 y, __int16 z, __int16 uSectorID, int uRadius, unsigned __int8 r, unsigned __int8 g, unsigned __int8 b, char a10);
+
+
+
+  void (__thiscall ***vdestructor_ptr)(LightsStack_MobileLight_ *, bool);
+  MobileLight  pLights[400];
+  unsigned int uNumLightsActive;
+};
+#pragma pack(pop)
\ No newline at end of file