Jump to content

Make object visible in build mode, invisible in world


Recommended Posts

Hozsa's NavMeshFixer is useful in some situations for bridging entrances or slightly off stairways. The problem is that the tiles are invisible. Not just while playing, they are invisible in build mode too. So unless you mouse over them in build mode you have no idea where they are. The big ones are the size of a floor piece and snap... but you have to know where the first one is.

 

So, I know other mods such as animation mats have pieces that are visible while you are building, but are invisible when you exit build mode. I'd like to patch NavMeshFixer so it works like that. Unfortunately I have no idea where to start (as usual).

Link to comment
Share on other sites

I don't know for sure, but I think these are just two states assigned in the gamebryo animation meneger. Simply put, there are two states of animation, in one of which the material changes to invisible.It is not difficult to do it in 3d max with official plugins.You can re-create such planes, then generate navmesh on them in ck. But I think it will only get worse, because a lot of such custom elements tend to freeze and not switch to the invisible state, or glitch and write one of the states to save, returning after deletion. Edited by South8028
Link to comment
Share on other sites

Why would animations have anything to do with it? These are static objects.

Yes, it is a static object, but it contains two animations, and two states of "morphs tags", each animation one frame at a time, one frame apart. One animation is called "show", the second "hide". This is done in exactly the same way as the doors. Only instead of animations one frame at a time.

Link to comment
Share on other sites

So, I know other mods such as animation mats have pieces that are visible while you are building, but are invisible when you exit build mode. I'd like to patch NavMeshFixer so it works like that. Unfortunately I have no idea where to start (as usual).

 

You could write a feedback to the author.. It can be fixed but it's complex (a new scripted form needs to be added to the mod).

Edited by LarannKiar
Link to comment
Share on other sites

 

So, I know other mods such as animation mats have pieces that are visible while you are building, but are invisible when you exit build mode. I'd like to patch NavMeshFixer so it works like that. Unfortunately I have no idea where to start (as usual).

Â

You could write a feedback to the author.. It can be fixed but it's complex (a new scripted form needs to be added to the mod).

If you know how to do this kind of thing with a script, that's very interesting. Because absolutely all modmakers who made such rugs did it in the above described way. The number of such objects is regulated by some number in the engine. When there are a lot of such objects, they start to be totally buggy. If it could be done with a script, it would be a breakthrough.
Link to comment
Share on other sites

 

So, I know other mods such as animation mats have pieces that are visible while you are building, but are invisible when you exit build mode. I'd like to patch NavMeshFixer so it works like that. Unfortunately I have no idea where to start (as usual).

 

You could write a feedback to the author.. It can be fixed but it's complex (a new scripted form needs to be added to the mod).

 

 

It was requested on the mod page a number of times and ignored unfortunately.

Link to comment
Share on other sites

 

 

So, I know other mods such as animation mats have pieces that are visible while you are building, but are invisible when you exit build mode. I'd like to patch NavMeshFixer so it works like that. Unfortunately I have no idea where to start (as usual).

Â

You could write a feedback to the author.. It can be fixed but it's complex (a new scripted form needs to be added to the mod).

If you know how to do this kind of thing with a script, that's very interesting. Because absolutely all modmakers who made such rugs did it in the above described way. The number of such objects is regulated by some number in the engine. When there are a lot of such objects, they start to be totally buggy. If it could be done with a script, it would be a breakthrough.

 

 

Both BYOP and Invisible Furniture use a script (they are both from the same author). Unfortunately the script source is not included in the mod.

 

I would also appreciate you being polite and helpful instead of snarky. I doubt you know "absolutely all modmakers", so it is quite possible another modder has come up with a way that doesn't involve animations.

 

@LarannKiar, the code you posted and then edited out uses Self.Disable(). Disabling the object would keep it from functioning as navmesh... could you programmatically do a BGSM change instead? You know, one visible and one invisible texture?

Edited by aurreth
Link to comment
Share on other sites

 

@LarannKiar, the code you posted and then edited out uses Self.Disable(). Disabling the object would keep it from functioning as navmesh... could you programmatically do a BGSM change instead? You know, one visible and one invisible texture?

 

 

Yes, I later realized that disabling the object won't be helpful since it has to be enabled to work properly..

 

You need two forms:

 

1. the navmesh rug: it should be invisible (transparent textures) and enabled always.

 

2. a "dummy" rug: this would be the object you place in workshop mode. Its textures has to be visible so you can see it where you place it. A script that places the navmesh rug and disables itself when you exit workshop mode needs to be attached to this form.

Link to comment
Share on other sites

Maybe you could try this script. It's a modified version of a script I created earlier. Well, it was not meant for navmeshes but hopefully it will work.

Scriptname YOURSCRIPTNAME extends ObjectReference

Static Property Form_NavMeshRug Auto Const
ObjectReference NavMeshRug



Event onWorkshopObjectPlaced(ObjectReference akReference)
	RegisterForMenuOpenCloseEvent("WorkshopMenu")
	PlaceNavMeshRug()
	Position()
EndEvent


Event onWorkshopObjectDestroyed(ObjectReference akReference)
	UnregisterForMenuOpenCloseEvent("WorkshopMenu")
	NavMeshRug.Delete()
EndEvent


Event onWorkshopObjectMoved(ObjectReference akReference)
	RegisterForMenuOpenCloseEvent("WorkshopMenu")
	PlaceNavMeshRug()
	Position()
EndEvent


Event OnMenuOpenCloseEvent(string asMenuName, bool abOpening)
	If (asMenuName == "WorkshopMenu")
		If (Game.GetPlayer().GetCurrentLocation() == Self.GetCurrentLocation())

			If (abOpening)

				Self.Enable()
				debug.notification("Self enabled")

				PlaceNavMeshRug()
				Position()

			Else

				Self.Disable()
				debug.notification("Self disabled")
				
			EndIf
		EndIf
	EndIf
EndEvent


Function Position()
	NavMeshRug.Moveto(Self, 0, 0, -0.01)
	float Angle = Self.GetAngleZ()
	NavMeshRug.SetAngle(0, 0, Angle)
	debug.notification("NavMeshRug moved, positioned")
EndFunction


Function PlaceNavMeshRug()
	If NavMeshRug != none
		
	Else
		NavMeshRug = Self.PlaceAtMe(Form_NavMeshRug, 1)
		debug.notification("NavMeshRug placed")
	EndIf
EndFunction


Forgot to mention that the "dummy" rug needs to a furniture since you can't attach a script to a static object.

Edited by LarannKiar
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...