merge upstream
This commit is contained in:
		@ -783,6 +783,11 @@ class Scene {
 | 
				
			|||||||
			if (o.tilesheet_ref != null) {
 | 
								if (o.tilesheet_ref != null) {
 | 
				
			||||||
				cast(object, MeshObject).setupTilesheet(sceneName, o.tilesheet_ref, o.tilesheet_action_ref);
 | 
									cast(object, MeshObject).setupTilesheet(sceneName, o.tilesheet_ref, o.tilesheet_action_ref);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								if (o.camera_list != null){
 | 
				
			||||||
 | 
									cast(object, MeshObject).cameraList = o.camera_list;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			returnObject(object, o, done);
 | 
								returnObject(object, o, done);
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -441,6 +441,7 @@ typedef TObj = {
 | 
				
			|||||||
	@:optional public var traits: Array<TTrait>;
 | 
						@:optional public var traits: Array<TTrait>;
 | 
				
			||||||
	@:optional public var properties: Array<TProperty>;
 | 
						@:optional public var properties: Array<TProperty>;
 | 
				
			||||||
	@:optional public var vertex_groups: Array<TVertex_groups>;
 | 
						@:optional public var vertex_groups: Array<TVertex_groups>;
 | 
				
			||||||
 | 
						@:optional public var camera_list: Array<String>;
 | 
				
			||||||
	@:optional public var constraints: Array<TConstraint>;
 | 
						@:optional public var constraints: Array<TConstraint>;
 | 
				
			||||||
	@:optional public var dimensions: Float32Array; // Geometry objects
 | 
						@:optional public var dimensions: Float32Array; // Geometry objects
 | 
				
			||||||
	@:optional public var object_actions: Array<String>;
 | 
						@:optional public var object_actions: Array<String>;
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,7 @@ class MeshObject extends Object {
 | 
				
			|||||||
	public var render_emitter = true;
 | 
						public var render_emitter = true;
 | 
				
			||||||
	#end
 | 
						#end
 | 
				
			||||||
	public var cameraDistance: Float;
 | 
						public var cameraDistance: Float;
 | 
				
			||||||
 | 
						public var cameraList: Array<String> = null;
 | 
				
			||||||
	public var screenSize = 0.0;
 | 
						public var screenSize = 0.0;
 | 
				
			||||||
	public var frustumCulling = true;
 | 
						public var frustumCulling = true;
 | 
				
			||||||
	public var activeTilesheet: Tilesheet = null;
 | 
						public var activeTilesheet: Tilesheet = null;
 | 
				
			||||||
@ -235,6 +236,8 @@ class MeshObject extends Object {
 | 
				
			|||||||
		if (cullMesh(context, Scene.active.camera, RenderPath.active.light)) return;
 | 
							if (cullMesh(context, Scene.active.camera, RenderPath.active.light)) return;
 | 
				
			||||||
		var meshContext = raw != null ? context == "mesh" : false;
 | 
							var meshContext = raw != null ? context == "mesh" : false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (cameraList != null && cameraList.indexOf(Scene.active.camera.name) < 0) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		#if lnx_particles
 | 
							#if lnx_particles
 | 
				
			||||||
		if (raw != null && raw.is_particle && particleOwner == null) return; // Instancing not yet set-up by particle system owner
 | 
							if (raw != null && raw.is_particle && particleOwner == null) return; // Instancing not yet set-up by particle system owner
 | 
				
			||||||
		if (particleSystems != null && meshContext) {
 | 
							if (particleSystems != null && meshContext) {
 | 
				
			||||||
@ -245,6 +248,7 @@ class MeshObject extends Object {
 | 
				
			|||||||
					Scene.active.spawnObject(psys.data.raw.instance_object, null, function(o: Object) {
 | 
										Scene.active.spawnObject(psys.data.raw.instance_object, null, function(o: Object) {
 | 
				
			||||||
						if (o != null) {
 | 
											if (o != null) {
 | 
				
			||||||
							var c: MeshObject = cast o;
 | 
												var c: MeshObject = cast o;
 | 
				
			||||||
 | 
					    						c.cameraList = this.cameraList;
 | 
				
			||||||
							particleChildren.push(c);
 | 
												particleChildren.push(c);
 | 
				
			||||||
							c.particleOwner = this;
 | 
												c.particleOwner = this;
 | 
				
			||||||
							c.particleIndex = particleChildren.length - 1;
 | 
												c.particleIndex = particleChildren.length - 1;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								leenkx/Sources/leenkx/logicnode/GetCameraRenderFilterNode.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								leenkx/Sources/leenkx/logicnode/GetCameraRenderFilterNode.hx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package leenkx.logicnode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import iron.object.MeshObject;
 | 
				
			||||||
 | 
					import iron.object.CameraObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GetCameraRenderFilterNode extends LogicNode {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public function new(tree: LogicTree) {
 | 
				
			||||||
 | 
							super(tree);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override function get(from: Int): Dynamic {
 | 
				
			||||||
 | 
							var mo: MeshObject = cast inputs[0].get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (mo == null) return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return mo.cameraList;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								leenkx/Sources/leenkx/logicnode/SetCameraRenderFilterNode.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								leenkx/Sources/leenkx/logicnode/SetCameraRenderFilterNode.hx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package leenkx.logicnode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import iron.object.MeshObject;
 | 
				
			||||||
 | 
					import iron.object.CameraObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SetCameraRenderFilterNode extends LogicNode {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public var property0: String;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public function new(tree: LogicTree) {
 | 
				
			||||||
 | 
							super(tree);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override function run(from: Int) {
 | 
				
			||||||
 | 
							var mo: MeshObject = cast inputs[1].get();
 | 
				
			||||||
 | 
							var camera: CameraObject = inputs[2].get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							assert(Error, Std.isOfType(camera, CameraObject), "Camera must be a camera object!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (camera == null || mo == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (property0 == 'Add'){
 | 
				
			||||||
 | 
								if (mo.cameraList == null || mo.cameraList.indexOf(camera.name) == -1){
 | 
				
			||||||
 | 
									if (mo.cameraList == null) mo.cameraList = [];
 | 
				
			||||||
 | 
									mo.cameraList.push(camera.name);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else{
 | 
				
			||||||
 | 
								if (mo.cameraList != null){
 | 
				
			||||||
 | 
									mo.cameraList.remove(camera.name);
 | 
				
			||||||
 | 
									if (mo.cameraList.length == 0)
 | 
				
			||||||
 | 
										mo.cameraList = null;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							runOutput(0);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -835,6 +835,13 @@ class LeenkxExporter:
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    out_object['vertex_groups'].append(out_vertex_groups)
 | 
					                    out_object['vertex_groups'].append(out_vertex_groups)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if len(bobject.lnx_camera_list) > 0:
 | 
				
			||||||
 | 
					                out_camera_list = []
 | 
				
			||||||
 | 
					                for camera in bobject.lnx_camera_list:
 | 
				
			||||||
 | 
					                    if camera.lnx_camera_object_ptr != None:
 | 
				
			||||||
 | 
					                        out_camera_list.append(camera.lnx_camera_object_ptr.name)
 | 
				
			||||||
 | 
					                if len(out_camera_list) > 0:
 | 
				
			||||||
 | 
					                    out_object['camera_list'] = out_camera_list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if len(bobject.lnx_propertylist) > 0:
 | 
					            if len(bobject.lnx_propertylist) > 0:
 | 
				
			||||||
                out_object['properties'] = []
 | 
					                out_object['properties'] = []
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					from lnx.logicnode.lnx_nodes import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GetCameraRenderFilterNode(LnxLogicTreeNode):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Gets Camera Render Filter array with the names of the cameras
 | 
				
			||||||
 | 
					    that can render the mesh. If null all cameras can render the mesh.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    bl_idname = 'LNGetCameraRenderFilterNode'
 | 
				
			||||||
 | 
					    bl_label = 'Get Object Camera Render Filter'
 | 
				
			||||||
 | 
					    lnx_section = 'camera'
 | 
				
			||||||
 | 
					    lnx_version = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def lnx_init(self, context):
 | 
				
			||||||
 | 
					        self.add_input('LnxNodeSocketObject', 'Object')
 | 
				
			||||||
 | 
					        self.add_output('LnxNodeSocketArray', 'Array')
 | 
				
			||||||
@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					from lnx.logicnode.lnx_nodes import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SetCameraRenderFilterNode(LnxLogicTreeNode):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Sets Camera Render Filter array with the names of the cameras
 | 
				
			||||||
 | 
					    that can render the mesh. If null all cameras can render the mesh.
 | 
				
			||||||
 | 
					    A camera can be added or removed from the arraw list.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    bl_idname = 'LNSetCameraRenderFilterNode'
 | 
				
			||||||
 | 
					    bl_label = 'Set Object Camera Render Filter'
 | 
				
			||||||
 | 
					    lnx_section = 'camera'
 | 
				
			||||||
 | 
					    lnx_version = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    property0: HaxeEnumProperty(
 | 
				
			||||||
 | 
					    'property0',
 | 
				
			||||||
 | 
					    items = [('Add', 'Add', 'Add'),
 | 
				
			||||||
 | 
					             ('Remove', 'Remove', 'Remove')],
 | 
				
			||||||
 | 
					    name='', default='Add', update='')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def lnx_init(self, context):
 | 
				
			||||||
 | 
					        self.add_input('LnxNodeSocketAction', 'In')
 | 
				
			||||||
 | 
					        self.add_input('LnxNodeSocketObject', 'Object')
 | 
				
			||||||
 | 
					        self.add_input('LnxNodeSocketObject', 'Camera')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.add_output('LnxNodeSocketAction', 'Out')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def draw_buttons(self, context, layout):
 | 
				
			||||||
 | 
					        layout.prop(self, 'property0')
 | 
				
			||||||
							
								
								
									
										141
									
								
								leenkx/blender/lnx/props_camera_render_filter.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								leenkx/blender/lnx/props_camera_render_filter.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,141 @@
 | 
				
			|||||||
 | 
					import bpy
 | 
				
			||||||
 | 
					from bpy.props import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LNX_UL_CameraList(bpy.types.UIList):
 | 
				
			||||||
 | 
					    def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
 | 
				
			||||||
 | 
					        layout.prop_search(item, "lnx_camera_object_ptr", bpy.data, "objects", text="", icon='VIEW_CAMERA')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LNX_CameraListItem(bpy.types.PropertyGroup):
 | 
				
			||||||
 | 
					    lnx_camera_object_ptr: bpy.props.PointerProperty(
 | 
				
			||||||
 | 
					        type=bpy.types.Object,
 | 
				
			||||||
 | 
					        name="Camera Object",
 | 
				
			||||||
 | 
					        poll=lambda self, obj_to_check: obj_to_check.type == 'CAMERA' and \
 | 
				
			||||||
 | 
					                                     (bpy.context.object is None or \
 | 
				
			||||||
 | 
					                                      not hasattr(bpy.context.object, 'lnx_camera_list') or \
 | 
				
			||||||
 | 
					                                      (obj_to_check.name not in [
 | 
				
			||||||
 | 
					                                          item.lnx_camera_object_ptr.name
 | 
				
			||||||
 | 
					                                          for item in bpy.context.object.lnx_camera_list
 | 
				
			||||||
 | 
					                                          if item.lnx_camera_object_ptr and item != self
 | 
				
			||||||
 | 
					                                      ]))
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LNX_PT_LeenkxCameraRenderFilter(bpy.types.Panel):
 | 
				
			||||||
 | 
					    bl_label = "Leenkx Camera Render Filter"
 | 
				
			||||||
 | 
					    bl_idname = "LNX_PT_LeenkxCameraRenderFilter"
 | 
				
			||||||
 | 
					    bl_space_type = 'PROPERTIES'
 | 
				
			||||||
 | 
					    bl_region_type = 'WINDOW'
 | 
				
			||||||
 | 
					    bl_context = "data"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @classmethod
 | 
				
			||||||
 | 
					    def poll(cls, context):
 | 
				
			||||||
 | 
					        return context.object is not None and context.object.type == 'MESH'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def draw(self, context):
 | 
				
			||||||
 | 
					        layout = self.layout
 | 
				
			||||||
 | 
					        obj = context.object
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        row = layout.row()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        col = row.column()
 | 
				
			||||||
 | 
					        col.template_list(
 | 
				
			||||||
 | 
					            "LNX_UL_CameraList",
 | 
				
			||||||
 | 
					            "",
 | 
				
			||||||
 | 
					            obj,
 | 
				
			||||||
 | 
					            "lnx_camera_list",
 | 
				
			||||||
 | 
					            obj,
 | 
				
			||||||
 | 
					            "lnx_active_camera_index",
 | 
				
			||||||
 | 
					            rows=5
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        col = row.column(align=True)
 | 
				
			||||||
 | 
					        col.operator("lnx.add_camera", icon='ADD', text="")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if obj.lnx_camera_list and obj.lnx_active_camera_index >= 0 and obj.lnx_active_camera_index < len(obj.lnx_camera_list):
 | 
				
			||||||
 | 
					            op_remove = col.operator("lnx.remove_camera", icon='REMOVE', text="")
 | 
				
			||||||
 | 
					            op_remove.lnx_index = obj.lnx_active_camera_index
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            op_up = col.operator("lnx.move_camera", icon='TRIA_UP', text="")
 | 
				
			||||||
 | 
					            op_up.lnx_index = obj.lnx_active_camera_index
 | 
				
			||||||
 | 
					            op_up.direction = 'UP'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            op_down = col.operator("lnx.move_camera", icon='TRIA_DOWN', text="")
 | 
				
			||||||
 | 
					            op_down.lnx_index = obj.lnx_active_camera_index
 | 
				
			||||||
 | 
					            op_down.direction = 'DOWN'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LNX_OT_AddCamera(bpy.types.Operator):
 | 
				
			||||||
 | 
					    bl_idname = "lnx.add_camera"
 | 
				
			||||||
 | 
					    bl_label = "Add Camera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def execute(self, context):
 | 
				
			||||||
 | 
					        obj = context.object
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        new_item = obj.lnx_camera_list.add()
 | 
				
			||||||
 | 
					        obj.lnx_active_camera_index = len(obj.lnx_camera_list) - 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return {'FINISHED'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LNX_OT_RemoveCamera(bpy.types.Operator):
 | 
				
			||||||
 | 
					    bl_idname = "lnx.remove_camera"
 | 
				
			||||||
 | 
					    bl_label = "Remove Camera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    lnx_index: bpy.props.IntProperty()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def execute(self, context):
 | 
				
			||||||
 | 
					        obj = context.object
 | 
				
			||||||
 | 
					        if self.lnx_index < len(obj.lnx_camera_list):
 | 
				
			||||||
 | 
					            obj.lnx_camera_list.remove(self.lnx_index)
 | 
				
			||||||
 | 
					            if obj.lnx_active_camera_index >= len(obj.lnx_camera_list):
 | 
				
			||||||
 | 
					                obj.lnx_active_camera_index = len(obj.lnx_camera_list) - 1
 | 
				
			||||||
 | 
					        return {'FINISHED'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LNX_OT_MoveCamera(bpy.types.Operator):
 | 
				
			||||||
 | 
					    bl_idname = "lnx.move_camera"
 | 
				
			||||||
 | 
					    bl_label = "Move Camera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    lnx_index: bpy.props.IntProperty()
 | 
				
			||||||
 | 
					    direction: bpy.props.EnumProperty(
 | 
				
			||||||
 | 
					        items=[('UP', "Up", "Move camera up"),
 | 
				
			||||||
 | 
					               ('DOWN', "Down", "Move camera down")],
 | 
				
			||||||
 | 
					        default='UP'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def execute(self, context):
 | 
				
			||||||
 | 
					        obj = context.object
 | 
				
			||||||
 | 
					        camera_list = obj.lnx_camera_list
 | 
				
			||||||
 | 
					        target_index = -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.direction == 'UP':
 | 
				
			||||||
 | 
					            if self.lnx_index > 0:
 | 
				
			||||||
 | 
					                target_index = self.lnx_index - 1
 | 
				
			||||||
 | 
					        elif self.direction == 'DOWN':
 | 
				
			||||||
 | 
					            if self.lnx_index < len(camera_list) - 1:
 | 
				
			||||||
 | 
					                target_index = self.lnx_index + 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if target_index != -1:
 | 
				
			||||||
 | 
					            camera_list.move(self.lnx_index, target_index)
 | 
				
			||||||
 | 
					            obj.lnx_active_camera_index = target_index
 | 
				
			||||||
 | 
					        return {'FINISHED'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def register():
 | 
				
			||||||
 | 
					    bpy.utils.register_class(LNX_UL_CameraList)
 | 
				
			||||||
 | 
					    bpy.utils.register_class(LNX_CameraListItem)
 | 
				
			||||||
 | 
					    bpy.utils.register_class(LNX_PT_LeenkxCameraRenderFilter)
 | 
				
			||||||
 | 
					    bpy.utils.register_class(LNX_OT_AddCamera)
 | 
				
			||||||
 | 
					    bpy.utils.register_class(LNX_OT_RemoveCamera)
 | 
				
			||||||
 | 
					    bpy.utils.register_class(LNX_OT_MoveCamera)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bpy.types.Object.lnx_camera_list = bpy.props.CollectionProperty(type=LNX_CameraListItem)
 | 
				
			||||||
 | 
					    bpy.types.Object.lnx_active_camera_index = bpy.props.IntProperty(name="Active Camera Index", default=-1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def unregister():
 | 
				
			||||||
 | 
					    bpy.utils.unregister_class(LNX_UL_CameraList)
 | 
				
			||||||
 | 
					    bpy.utils.unregister_class(LNX_CameraListItem)
 | 
				
			||||||
 | 
					    bpy.utils.unregister_class(LNX_PT_LeenkxCameraRenderFilter)
 | 
				
			||||||
 | 
					    bpy.utils.unregister_class(LNX_OT_AddCamera)
 | 
				
			||||||
 | 
					    bpy.utils.unregister_class(LNX_OT_RemoveCamera)
 | 
				
			||||||
 | 
					    bpy.utils.unregister_class(LNX_OT_MoveCamera)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if hasattr(bpy.types.Object, "lnx_camera_list"):
 | 
				
			||||||
 | 
					        del bpy.types.Object.lnx_camera_list
 | 
				
			||||||
 | 
					    if hasattr(bpy.types.Object, "lnx_active_camera_index"):
 | 
				
			||||||
 | 
					        del bpy.types.Object.lnx_active_camera_index
 | 
				
			||||||
@ -16,6 +16,7 @@ import lnx.props_properties
 | 
				
			|||||||
import lnx.props_collision_filter_mask
 | 
					import lnx.props_collision_filter_mask
 | 
				
			||||||
import lnx.props
 | 
					import lnx.props
 | 
				
			||||||
import lnx.props_ui
 | 
					import lnx.props_ui
 | 
				
			||||||
 | 
					import lnx.props_camera_render_filter
 | 
				
			||||||
import lnx.handlers
 | 
					import lnx.handlers
 | 
				
			||||||
import lnx.utils
 | 
					import lnx.utils
 | 
				
			||||||
import lnx.keymap
 | 
					import lnx.keymap
 | 
				
			||||||
@ -44,6 +45,7 @@ if lnx.is_reload(__name__):
 | 
				
			|||||||
    lnx.props_collision_filter_mask = lnx.reload_module(lnx.props_collision_filter_mask)
 | 
					    lnx.props_collision_filter_mask = lnx.reload_module(lnx.props_collision_filter_mask)
 | 
				
			||||||
    lnx.props = lnx.reload_module(lnx.props)
 | 
					    lnx.props = lnx.reload_module(lnx.props)
 | 
				
			||||||
    lnx.props_ui = lnx.reload_module(lnx.props_ui)
 | 
					    lnx.props_ui = lnx.reload_module(lnx.props_ui)
 | 
				
			||||||
 | 
					    lnx.props_camera_render_filter = lnx.reload_module(lnx.props_camera_render_filter)
 | 
				
			||||||
    lnx.handlers = lnx.reload_module(lnx.handlers)
 | 
					    lnx.handlers = lnx.reload_module(lnx.handlers)
 | 
				
			||||||
    lnx.utils = lnx.reload_module(lnx.utils)
 | 
					    lnx.utils = lnx.reload_module(lnx.utils)
 | 
				
			||||||
    lnx.keymap = lnx.reload_module(lnx.keymap)
 | 
					    lnx.keymap = lnx.reload_module(lnx.keymap)
 | 
				
			||||||
@ -68,6 +70,7 @@ def register(local_sdk=False):
 | 
				
			|||||||
    lnx.props_properties.register()
 | 
					    lnx.props_properties.register()
 | 
				
			||||||
    lnx.props.register()
 | 
					    lnx.props.register()
 | 
				
			||||||
    lnx.props_ui.register()
 | 
					    lnx.props_ui.register()
 | 
				
			||||||
 | 
					    lnx.props_camera_render_filter.register()
 | 
				
			||||||
    lnx.nodes_logic.register()
 | 
					    lnx.nodes_logic.register()
 | 
				
			||||||
    lnx.nodes_material.register()
 | 
					    lnx.nodes_material.register()
 | 
				
			||||||
    lnx.keymap.register()
 | 
					    lnx.keymap.register()
 | 
				
			||||||
@ -100,3 +103,4 @@ def unregister():
 | 
				
			|||||||
    lnx.props_renderpath.unregister()
 | 
					    lnx.props_renderpath.unregister()
 | 
				
			||||||
    lnx.props_properties.unregister()
 | 
					    lnx.props_properties.unregister()
 | 
				
			||||||
    lnx.props_collision_filter_mask.unregister()
 | 
					    lnx.props_collision_filter_mask.unregister()
 | 
				
			||||||
 | 
					    lnx.props_camera_render_filter.unregister()
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user