From: hgn <hgodden00@gmail.com>
Date: Mon, 27 Nov 2023 13:39:13 +0000 (+0000)
Subject: fixed time worldinfo
X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=2c38f7b8f422374c4c46c5b636a7275b61876192;p=carveJwlIkooP6JGAAIwe30JlM.git

fixed time worldinfo
---

diff --git a/blender_export.py b/blender_export.py
index 168f023..30b1fe9 100644
--- a/blender_export.py
+++ b/blender_export.py
@@ -484,7 +484,8 @@ class ent_worldinfo(Structure):
                ("pstr_author",c_uint32),    # unused
                ("pstr_desc",c_uint32),      # unused
                ("timezone",c_float),
-               ("pstr_skybox",c_uint32)]
+               ("pstr_skybox",c_uint32),
+               ("flags",c_uint32)]
 #}
 
 class ent_ccmd(Structure):
@@ -1936,7 +1937,17 @@ def sr_compile( collection ):
             worldinfo.pstr_name = sr_compile_string( obj_data.name )
             worldinfo.pstr_author = sr_compile_string( obj_data.author )
             worldinfo.pstr_desc = sr_compile_string( obj_data.desc )
-            worldinfo.timezone = obj_data.timezone
+
+            flags = 0x00
+
+            if obj_data.fix_time:#{
+               worldinfo.timezone = obj_data.fixed_time
+               flags |= 0x1
+            #}
+            else:
+               worldinfo.timezone = obj_data.timezone
+
+            worldinfo.flags = flags
             worldinfo.pstr_skybox = sr_compile_string( obj_data.skybox )
             sr_ent_push( worldinfo )
          #}
@@ -3411,8 +3422,24 @@ class SR_OBJECT_ENT_WORLD_INFO(bpy.types.PropertyGroup):
    name: bpy.props.StringProperty(name="Name")
    desc: bpy.props.StringProperty(name="Description")
    author: bpy.props.StringProperty(name="Author")
-   timezone: bpy.props.FloatProperty(name="Timezone(hrs) (UTC0 +hrs)")
    skybox: bpy.props.StringProperty(name="Skybox")
+
+   fix_time: bpy.props.BoolProperty(name="Fix Time")
+   timezone: bpy.props.FloatProperty(name="Timezone(hrs) (UTC0 +hrs)")
+   fixed_time: bpy.props.FloatProperty(name="Fixed Time (0-1)")
+
+   @staticmethod
+   def sr_inspector( layout, data ):#{
+      layout.prop( data[0], 'name' )
+      layout.prop( data[0], 'desc' )
+      layout.prop( data[0], 'author' )
+
+      layout.prop( data[0], 'fix_time' )
+      if data[0].fix_time:
+         layout.prop( data[0], 'fixed_time' )
+      else:
+         layout.prop( data[0], 'timezone' )
+   #}
 #}
 
 class SR_OBJECT_ENT_CCMD(bpy.types.PropertyGroup):
diff --git a/entity.h b/entity.h
index 1033807..ce14816 100644
--- a/entity.h
+++ b/entity.h
@@ -407,6 +407,7 @@ struct ent_worldinfo{
    u32 pstr_name, pstr_author, pstr_desc;
    f32 timezone;
    u32 pstr_skybox;
+   u32 flags;
 };
 
 static ent_marker *ent_find_marker( mdl_context *mdl,
diff --git a/world_load.c b/world_load.c
index f196c26..3dce028 100644
--- a/world_load.c
+++ b/world_load.c
@@ -90,6 +90,7 @@ static void world_instance_load_mdl( u32 instance_id, const char *path ){
       world->info.pstr_desc = 0;
       world->info.pstr_name = 0;
       world->info.timezone = 0.0f;
+      world->info.flags = 0;
    }
 
    time_t seconds = time(NULL) % ((u32)vg_maxf(1.0f,k_day_length)*60);
diff --git a/world_render.c b/world_render.c
index 2542ce3..990a1ab 100644
--- a/world_render.c
+++ b/world_render.c
@@ -852,6 +852,10 @@ static void world_prerender( world_instance *world ){
       world->time = 0.834;
    }
 
+   if( world->info.flags & 0x1 ){
+      world->time = world->info.timezone;
+   }
+
    struct ub_world_lighting *state = &world->ub_lighting;
 
    state->g_time = world->time;